问题?Ajax之在s2sh中的json用法
1.json.jar包的下载
在用Ajax的时候很多情况下我们需要将大量在集合中的数据传输到前端,这个时候就需要转化成json数据,但是三大框架没有自动转化成json数据的功能(基本类型除外)。就需要用到jar包
下载:点击打开链接
2.案例:
(1)前端Ajax:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'findManagers.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <meta http-equiv="Content-Type" content="text/jsp;charset=utf-8"> <script type="text/javascript" src="${pageContext.request.contextPath }/script/jquery/jquery-1.11.0.js"></script> <script type="text/javascript"> $(function(){ alert("sdssd"); /*离开下拉列表焦点处理*/ var province1=""; var city1=""; var county1=""; $("#provice_id").change(function(){ var proviceName = document.getElementById("provice_id").value; province1 = proviceName; if(proviceName==""){ alert("没选中值!无法查询!"+proviceName); }else{ $.ajax({ type:"POST", url:"manage_findAllManager!findAllManager", dataType:"json", data:{province:proviceName}, success:function(data){/*成功后走的方法*/ $.each(data, function(i,item){ /*alert("用户名为:"+item.uid);*/ var statemnet = "<a href='${pageContext.request.contextPath}/manager/permission_update2?uid="+item.uid+"' style='text-decoration: none;color:red;' target='_blank'>"+item.username+"</a><br/>"; $("#item1").append(statemnet); }); }, error:function(){ alert("方法执行不成功!"); } }); } }); /*city Ajax*/ $('#city_id').change(function(){ var cityName = document.getElementById("city_id").value; city1 = cityName; var url = "manage_findAllManager!findAllManager"; var data = {city:cityName,province:province1}; if(cityName==""||province1==""){ alert("您没有选中城市!"); }else{ $.ajax({ type:"POST", url:url, dataType:"json", data:data, success:function(data1){ $("#item1").html(""); $.each(data1,function(i, item) { var statemnet = "<a href='${pageContext.request.contextPath}/manager/permission_update2?uid="+item.uid+"' style='text-decoration: none;color:red;' target='_blank'>"+item.username+"</a><br/>"; $("#item1").append(statemnet); }); }, error:function(){ alert("无法发送数据,请稍等....."); } }); } }); /*count Ajax*/ $('#county_id').change(function(){ var countyName = document.getElementById("county_id").value; county1 = countyName; var url = "manage_findAllManager!findAllManager"; var data = {county:countyName,city:city1,province:province1}; if(countyName==""||province1==""||city1==""){ alert("您没有选中城市!"); }else{ $.ajax({ type:"POST", url:url, dataType:"json", data:data, success:function(data1){ $("#item1").html(""); $.each(data1,function(i, item) { var statemnet = "<a class='a' href='${pageContext.request.contextPath}/manager/permission_update2?uid="+item.uid+"' style='text-decoration: none;color:red;' target='_blank'>"+item.username+"</a><br/>"; $("#item1").append(statemnet); }); }, error:function(){ alert("无法发送数据,请稍等"); } }); } }); /*towns Ajax*/ $('#towns_id').change(function(){ var townsName = document.getElementById("towns_id").value; var url = "manage_findAllManager!findAllManager"; var data = {towns:townsName,county:county1,city:city1,province:province1}; if(townsName==""||province1==""||city1==""||county1==""){ alert("您没有选中城市!"); }else{ $.ajax({ type:"POST", url:url, dataType:"json", data:data, success:function(data1){ $("#item1").html(""); $.each(data1,function(i, item) { var statemnet = "<a class='a' href='${pageContext.request.contextPath}/manager/permission_update2?uid="+item.uid+"' style='text-decoration: none;color:red;' target='_blank'>"+item.username+"</a><br/>"; $("#item1").append(statemnet); }); }, error:function(){ alert("无法发送数据,请稍等"); } }); } }); }); </script> </head> <body> <div style="margin-top: 10px;margin-left: 400px;"> <div> <select id="provice_id"> <option value="">--省--</option> <option value="湖北省">湖北省</option> </select> <select id="city_id"> <option value="">--市--</option> <option value="襄阳市">襄阳市</option> </select> <select id="county_id"> <option value="">--县--</option> <option value="谷城县">谷城县</option> </select> <select id="towns_id" name="addManager.towns"> <option value="">--乡镇--</option> <option value="城关镇">城关镇</option> <option value="石花镇">石花镇</option> <option value="冷集镇">冷集镇</option> <option value="紫金镇">紫金镇</option> <option value="盛康镇">盛康镇</option> <option value="南河风景区">南河风景区</option> <option value="庙滩镇">庙滩镇</option> <option value="茨河镇">茨河镇</option> <option value="赵湾乡">赵湾乡</option> </select> </div> <div id="item1"></div> </div> </body> </html>
(2)后端S2SH的action方法:
public String findAllManager(){ /*1.get value of select*/ String Province = request.getParameter("province"); String city = request.getParameter("city"); String county = request.getParameter("county"); String towns = request.getParameter("towns"); /*2.stitch character string*/ StringBuffer address = new StringBuffer(); if(Province!=null){ address.append(Province); if(city!=null){ address.append("-"+city); if(county!=null){ address.append("-"+county); if(towns!=null){ address.append("-"+towns); } } } } String address1 = address.toString(); System.out.println(address1); /*3.insert character string into find method*/ /*4.response result list*/ // JSONObject jsonObject = new JSONObject(); List<TbManager> managers = managerService.findAllManager(address1); System.out.println(managers.size()); JsonConfig config = new JsonConfig(); //建立配置文件 config.setIgnoreDefaultExcludes(false);//设置默认忽略 config.setExcludes(new String[]{"tbManagerRoles"}); //此处是亮点,只要将所需忽略字段加到数组中即可,在上述案例中, //所要忽略的是“libs”,那么将其添到数组中即可,在实际测试中, //我发现在所返回数组中,存在大量无用属性, //如“multipartRequestHandler”,“servletWrapper”, //那么也可以将这两个加到忽略数组中. try { JSONArray array = JSONArray.fromObject(managers, config);//加载配置文件 System.out.println(array.toString()); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // PrintWriter out = ServletActionContext.getResponse().getWriter(); out.print(array); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
注意:在将集合类型转化为json对象的时候,注意集合中的对象成员变量是否存在与其他表或者实体类有依赖关系,若有需要设置忽略掉,如何忽略上面例子已给出。小弟不才,是我做项目的时候给的经验,这个问题曾困扰了我 两个星期!! 。![]()