Post 方式
1、自动注入
a. pom.xml ---- 配置Maven,添加必要的jar包
1 <!--用于 String-JSONObject 转换 --> 2 <dependency> 3 <groupId>org.json</groupId> 4 <artifactId>org.json</artifactId> 5 <version>chargebee-1.0</version> 6 </dependency> 7 8 <!--用于 SpringMVC 注入 --> 9 <dependency> 10 <groupId>org.codehaus.jackson</groupId> 11 <artifactId>jackson-mapper-asl</artifactId> 12 <version>1.9.8</version> 13 <type>jar</type> 14 <scope>compile</scope> 15 </dependency>
b.application-servlet.xml 创建 AnnotationMethodHandlerAdapter
1 <!-- 方式1 --> 2 <mvc:annotation-driven /> 3 <!-- 方式2 --> 4 <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> 5 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 6 7 <!-- 两种方式等价的,mvc:annotation-driven 会自动注册方式2中的连个bean -->
c.前端jsp页面 ---- Jquery的ajax
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script type="text/javascript"> 5 $(function() { 6 function ajaxtest(){ 7 var seaText = $("#search").attr("value"); 8 var data={}; 9 data.serachdata = seaText; 10 var url = "${pageContext.request.contextPath}/search1" 11 $.ajax({ 12 url : url, 13 type : 'post', 14 dataType : 'json', 15 data:JSON.stringify(data), 16 contentType : "application/json; charset=utf-8", 17 success:function(result){ 18 console.log(result); 19 } 20 } 21 ); 22 } 23 $("#search").on("keyup", ajaxtest); 24 }//end ready 25 </head> 26 </script> 27 <body> 28 <div> 29 <input id="search" type="text" name="search"> 30 <input id="btn1"type="submit" value="Search"> 31 </div> 32 </body> 33 </html>
d.Controller 代码
SpringMVC 根据@RequestMapping将前端的ajax请求映射到search 的controller,AnnotationMethodHandlerAdapter会把request中的json对象,采用合适方式自动转换成Map对象 ★★★★★
1 @RequestMapping(value = "search",method = RequestMethod.POST) 2 @ResponseBody public String search(@RequestBody HashMap<String, String> hasmap)throws Exception{ 3 List<String> resultList = testMapper.searchByKeyWords(hasmap.get("serachdata")+"%"); 4 return new org.json.JSONArray(resultList).toString(); 5 }
2. 通过HttpServletRequest request来接收json
这种方式是比较常见的这里,我这给出Controller的代码:
1 @RequestMapping(value = "search",method = RequestMethod.GET) 2 @ResponseBody public String search(HttpServletRequest request ,HttpServletResponse response)throws Exception{ 3 org.json.JSONObject jsonob = new JSONObject(request.getParameter("jsonobj")); 4 List<String> resultList = testMapper.searchByKeyWords("a%"); 5 return new org.json.JSONArray(resultList).toString(); 6 }
Get 方式
由于get是通过URI传递参数的,所以没有办法使用自动注入,只能通过request来接收参数,Controller与post方式的类似。
第一篇博文啊!希望大家多多指点....