Ajax之在SSM中的json用法

问题?Ajax之在SSM中的json用法


1.问题

  这个问题是在总项目的时候遇到的问题,在SSM框架中使用json数据,和在S2SH中使用json大不相同,不能作为同一种来用,在S2SH中如何使用jar包来转化为json对象的用法(博客文章:点击打开链接),而这篇文章是针对SSM中springmvc的数据类型转化机制来说的。因为S2SH中没有自动转化的功能,而SSM中有自动转化成Json对象的功能,但是后者需要用到一个叫jackson的jar包,再配置一下文件,即可使用。

jar包下载:点击打开链接

2.配置

(1)拷入jar包

(2)springmvc-servlet.xml文件的配置,把以下加入即可

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <!-- 配置json数据 -->  
  2.     <bean    
  3.         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">    
  4.         <property name="messageConverters">    
  5.             <list>    
  6.                 <ref bean="mappingJackson2HttpMessageConverter" />    
  7.             </list>    
  8.         </property>    
  9.     </bean>    
  10.     <bean id="mappingJackson2HttpMessageConverter"    
  11.         class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">    
  12.         <property name="supportedMediaTypes">    
  13.             <list>    
  14.                 <value>text/html;charset=UTF-8</value>    
  15.                 <value>text/json;charset=UTF-8</value>    
  16.                 <value>application/json;charset=UTF-8</value>    
  17.             </list>    
  18.         </property>    
  19.     </bean>    

3.案例

(1)前端Ajax代码:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
  3. <%  
  4. String path = request.getContextPath();  
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  6. %>  
  7.   
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  9. <html>  
  10.   <head>  
  11.     <base href="<%=basePath%>">  
  12.     <link href="<%=basePath%>/sources/pictures/Teacher.ico" rel="shortcut icon" type="image/x-icon"/>  
  13.       
  14.     <title>Update Page</title>  
  15.       
  16.     <meta http-equiv="pragma" content="no-cache">  
  17.     <meta http-equiv="cache-control" content="no-cache">  
  18.     <meta http-equiv="expires" content="0">      
  19.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  20.     <meta http-equiv="description" content="This is my page">  
  21.     <link rel="stylesheet" media="screen" type="text/css" href="${pageContext.request.contextPath }/sources/css/styles.css">  
  22.     <script src="${pageContext.request.contextPath }/sources/js/jquery-2.1.4.min.js" type="text/javascript"></script>  
  23. <style>  
  24.     .contact_form{padding-top:40px;}  
  25.     .title {background-color:rgba(0,0,0,0.56); text-align:center; width:100%; position:fixed; top:0; left:0; padding:5px 0;}  
  26.     .title a {color:#FFF; text-decoration:none; font-size:16px; font-weight:bolder; line-height:24px;}  
  27. </style>  
  28. <script type="text/javascript">  
  29.     var flag = false;  
  30.     $(function(){  
  31.           
  32.         /*院级Ajax*/  
  33.             $("#i_id").change(function(){  
  34.                 var i_id = $("#i_id").val();  
  35.                 if(i_id==""){  
  36.                     alert("您还未选中值,请选择!")  
  37.                 }else{  
  38.                     $.ajax({  
  39.                     type:"POST",  
  40.                     url:"conllection/findGrade.action",  
  41.                     dataType:"json",  
  42.                     data:{i_id:i_id},  
  43.                     success:function(data){  
  44.                         if(data=="{}"){  
  45.                             alert("该院没有查询到数据!");  
  46.                         }else{  
  47.                             $("#t_id").html("");  
  48.                             $.each(data,function(i, item) {  
  49.                                 var statem = "<option value='"+item.grade+"'>"+item.grade+"</option>";  
  50.                                 $("#t_id").append(statem);  
  51.                             });  
  52.                               
  53.                         }  
  54.                     },  
  55.                     error:function(){  
  56.                             alert("方法执行不成功!");  
  57.                         }    
  58.                      });  
  59.                   }  
  60.                 });  
  61.   
  62.             /*班级Ajax*/  
  63.             $("#t_id").on('click',function(){  
  64.                 /* alert($("#t_id").val()); */  
  65.                 var i_id = $("#i_id").val();  
  66.                 if(t_id==""){  
  67.                     alert("您还未选中值,请选择!");  
  68.                 }else{  
  69.                     $.ajax({  
  70.                     type:"POST",  
  71.                     url:"conllection/t_id.action",  
  72.                     dataType:"json",  
  73.                     data:{i_id:i_id},  
  74.                     success:function(data){  
  75.                         /* alert(data); */  
  76.                         if(data=="{}"){  
  77.                             alert("该院没有查询到数据!");  
  78.                         }else{  
  79.                             $("#c_id").html("");  
  80.                             $.each(data,function(i, item) {  
  81.                                 var statem = "<option value='"+item.c_id+"'>"+item.cname+"</option>";  
  82.                                 $("#c_id").append(statem);  
  83.                             });  
  84.                               
  85.                         }  
  86.                     },  
  87.                     error:function(){  
  88.                             alert("方法执行不成功!");  
  89.                         }    
  90.                      });  
  91.                 }  
  92.             });  
  93.   
  94.             /*教师课程链接检测*/  
  95.             $("#c_id").change(function(){  
  96.                 /* alert($("#c_id").val()); */  
  97.                 if($("#t_id").val()==""||$("#c_id").val()==""){  
  98.                     alert("您还未选中值,请选择!");  
  99.                 }else{  
  100.                     $.ajax({  
  101.                     type:"POST",  
  102.                     url:"conllection/ErrorCollection1.action",  
  103.                     dataType:"json",  
  104.                     async: false,  
  105.                     data:{t_id:$("#t_id").val(),c_id:$("#c_id").val()},  
  106.                     success:function(data){  
  107.                     /*  alert(data); */  
  108.                         if(data==1){  
  109.                             alert("该班级和课程已经存在数据!");  
  110.                             flag=false;  
  111.                         }else{  
  112.                             alert("该班级和课程可以建立关系!");  
  113.                             flag=true;  
  114.                         }  
  115.                     },  
  116.                     error:function(){  
  117.                             alert("方法执行不成功!");  
  118.                         }    
  119.                      });  
  120.                 }  
  121.             });  
  122.               
  123.               
  124.         });  
  125.         //提交之前检查是否存在关系  
  126.         function check(){  
  127.             if(flag){  
  128.                 return true;  
  129.             }else{  
  130.                 alert("您选择的课程或者老师已经存在关系,请重新填写!");  
  131.                 return false;  
  132.             }  
  133.         }  
  134. </script>  
  135.   </head>  
  136.     
  137.   <body>  
  138.     <div align="center">  
  139.         <table border="1" width="47%" height="250" style="border-width: 0px">  
  140.             <tr>  
  141.                 <td style="border-style: none; border-width: medium">   
  142.                 <form class="contact_form" action="${pageContext.request.contextPath }/collection/StudentAndCourse.action" method="post" name="contact_form" onsubmit="return check()">  
  143.             <ul>  
  144.                 <li>  
  145.                      <h2>更新信息</h2>  
  146.                      <span class="required_notification">* 表示必填项</span>  
  147.                 </li>  
  148.                 <li>  
  149.                     <label for="name">院级:</label>  
  150.                     <select name="i_id" id="i_id">  
  151.                         <option value="">--选择--</option>  
  152.                         <c:forEach items="${courtyard}" var="v">  
  153.                                <option value="${v.i_id }">${v.iname }</option>  
  154.                         </c:forEach>                    
  155.                     </select>  
  156.                 </li>  
  157.                 <li>  
  158.                     <label for="name">班级:</label>  
  159.                     <select name="t_id" id="t_id">  
  160.                         <option value="">--选择--</option>                      
  161.                     </select>  
  162.                 </li>  
  163.                 <!-- <li>  
  164.                     <label for="message">结果:</label>  
  165.                     <textarea name="census" id="result" cols="40" rows="6" placeholder="查询结果"></textarea>  
  166.                 </li> -->  
  167.                 <!-- <li>  
  168.                     <label for="message">结果:</label>  
  169.                     <div id="result1"></div>  
  170.                 </li> -->  
  171.                 <li>  
  172.                     <label for="name">课程:</label>  
  173.                     <select name="c_id" id="c_id">  
  174.                         <option value="">--选择--</option>                      
  175.                     </select>  
  176.                 </li>  
  177.                  <li>  
  178.                     <button class="submit" type="submit">Submit</button>  
  179.                 </li>  
  180.             </ul>  
  181.             </form></td>  
  182.             </tr>  
  183.         </table>  
  184.     </div>  
  185. <div style="text-align:center;clear:both">  
  186. </div>  
  187.   </body>  
  188. </html>  


(2)后端Ajax走服务方法

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  *  
  3.  * Ajax请求得到班级信息 
  4.  * @return 
  5.  */  
  6. @ResponseBody  
  7. @RequestMapping(value="/conllection/findGrade.action", method=RequestMethod.POST,produces="application/json;charset=UTF-8")  
  8. public List<Grade> findGrade(Integer i_id){  
  9.     System.out.println(i_id);  
  10.     /*List<Grade> grades = this.studentService.findStudentGrade();*/  
  11.     List<Grade> grades = this.studentService.findGradeI_id(i_id);  
  12.     for(Grade grade:grades){  
  13.         System.out.println(grade.toString());  
  14.     }  
  15.     return grades;//在这里配置文件和jackson工具就自动转化了,直接返回对象即可  
  16. }  
  17.   
  18.   
  19. /** 
  20.  *  
  21.  * Ajax请求得到是否存在关系 
  22.  * @return 
  23.  */  
  24. @ResponseBody  
  25. @RequestMapping(value="/conllection/ErrorCollection1.action", method=RequestMethod.POST,produces="text/plain;charset=UTF-8")  
  26. public boolean findErrorCollection(String t_id,Integer c_id){  
  27.     System.out.println("检测数据:"+t_id+"--"+c_id);  
  28.     Map map = new HashMap();  
  29.     map.put("grade", t_id);  
  30.     map.put("c_id", c_id);  
  31.     int result = this.studentService.findStudentGradeResult(map);  
  32.     System.out.println("结果数:"+result);  
  33.     if(result==1){  
  34.         return true;  
  35.     }  
  36.     return false;  
  37. }  



这个例子就有点儿可以做三级联动了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值