ajax中Json对象的使用(利用struts框架或者单独使用)
2016-03-30 22:41
519 查看
1、先看看不使用Struts框架的情况下json对象的传值(主要区别在action,jsp页面和javascript没变化)
a、导入相关jar
b、action
2、使用Struts框架的情况下json对象的传值
a , action
b , struts的配置文件
3、jsp中异步处理
a、导入相关jar
commons-beanutils-1.8.0.jar ezmorph-1.0.6.jar json-lib-2.3-jdk15.jar struts2-json-plugin-2.3.20.jar //这个jar是struts的jar,不用框架时可以不导入。
b、action
//以部门查询并返回json对象进行异步处理 public void getUserJson(){ try { //1、获取部门 String dept = ServletActionContext.getRequest().getParameter("dept"); if(StringUtils.isNotBlank(dept)){ QueryHelper queryHelper = new QueryHelper(User.class,"u"); queryHelper.addCondition("u.dept like ?", "%" + dept); //2、根据部门查询用户列表 List<User> userList = userService.findObjects(queryHelper); //创建json对象 JSONObject jso = new JSONObject(); jso.put("msg", "success"); jso.accumulate("userList", userList); //3、输出用户列表:以json格式字符串形式输出 HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html"); ServletOutputStream outputStream = response.getOutputStream(); outputStream.write(jso.toString().getBytes("utf-8")); outputStream.close(); } } catch (Exception e) { e.printStackTrace(); } }
2、使用Struts框架的情况下json对象的传值
a , action
private Map<String,Object> return_map; ...... public String getUserJson2(){ try { //1、获取部门 String dept = ServletActionContext.getRequest().getParameter("dept"); if(StringUtils.isNotBlank(dept)){ QueryHelper queryHelper = new QueryHelper(User.class,"u"); queryHelper.addCondition("u.dept like ?", "%" + dept); //2、根据部门查询用户列表 return_map = new HashMap<String,Object>(); return_map.put("msg", "success"); return_map.put("userList",userService.findObjects(queryHelper)); } } catch (Exception e) { e.printStackTrace(); } return SUCCESS; }
b , struts的配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="sysHome-action" namespace="/sys" extends="base-default"> <action name="home_*" class="cn.buaa.home.action.HomeAction" method="{1}"> <result name="{1}">/WEB-INF/jsp/home/{1}.jsp</result> <result name="home">/WEB-INF/jsp/home/home.jsp</result> </action> </package> <package name="sysHomeJson-action" namespace="/sys" extends="json-default"> <action name="home_getUserJson2" class="cn.buaa.home.action.HomeAction" method="getUserJson2"> <result type="json"> <param name="root">return_map</param> </result> </action> </package> </struts>
3、jsp中异步处理
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <% pageContext.setAttribute("basePath", request.getContextPath()+"/") ; %> <html> <head> <%@include file="/common/header.jsp"%> <title>我要投诉</title> <script type="text/javascript" charset="utf-8" src="${basePath }js/ueditor/ueditor.config.js"></script> <script type="text/javascript" charset="utf-8" src="${basePath }js/ueditor/ueditor.all.min.js"> </script> <!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败--> <!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文--> <script type="text/javascript" charset="utf-8" src="${basePath }js/ueditor/lang/zh-cn/zh-cn.js"></script> <script> window.UEDITOR_HOME_URL = "${basePath }js/ueditor/"; var ue = UE.getEditor('editor'); //根据部门查询该部门下的查询列表 function doSelectDept(){ //1、获取部门 var dept = $("#toCompDept option:selected").val(); if(dept != ""){ //2、根据部门查询列表 $.ajax({ url:"${basePath}sys/home_getUserJson2.action", data:{"dept":dept}, type:"post", dataType:"json", //返回数值类型为json success:function(data){ //2.1、将用户列表设置到被投诉人下拉列表中 if(data != null && data != "" && data != undefined){ if("success" == data.msg){ var toCompName = $("#toCompName"); toCompName.empty(); $.each(data.userList,function(index,user){ toCompName.append("<option value='"+ user.name +"'>" + user.name+ "</option>"); }); }else{ alert("获取被投诉人列表失败!"); } }else{ alert("获取被投诉人列表失败!"); } }, error:function(){ alert("获取被投诉人列表失败!"); } }); }else{ //清空被投诉人列表下拉框 $("#toCompName").empty(); } } </script> </head> <body> <form id="form" name="form" action="" method="post" enctype="multipart/form-data"> <div class="vp_d_1"> <div style="width:1%;float:left;"> </div> <div class="vp_d_1_1"> <div class="content_info"> <div class="c_crumbs"><div><b></b><strong>工作主页</strong> - 我要投诉</div></div> <div class="tableH2">我要投诉</div> <table id="baseInfo" width="100%" align="center" class="list" border="0" cellpadding="0" cellspacing="0" > <tr> <td class="tdBg" width="250px">投诉标题:</td> <td><s:textfield name="comp.compTitle"/></td> </tr> <tr> <td class="tdBg">被投诉人部门:</td> <td> <s:select id="toCompDept" name="user.dept" list="#{'':'请选择','部门A':'部门A','部门B':'部门B'}" onchange="doSelectDept()"/> </td> </tr> <tr> <td class="tdBg">被投诉人姓名:</td> <td> <select id="toCompName" name="comp.toCompName"> </select> </td> </tr> <tr> <td class="tdBg">投诉内容:</td> <td><s:textarea id="editor" name="comp.compContent" cssStyle="width:90%;height:160px;" /></td> </tr> <tr> <td class="tdBg">是否匿名投诉:</td> <td><s:radio name="comp.isNm" list="#{'0':'非匿名投诉','1':'匿名投诉' }" value="0"/></td> </tr> </table> <div class="tc mt20"> <input type="button" class="btnB2" value="保存" /> <input type="button" onclick="javascript:window.close()" class="btnB2" value="关闭" /> </div> </div></div> <div style="width:1%;float:left;"> </div> </div> </form> </body> </html>4、关于json,很容易传错值,有个工具HiJson,很好用。
相关文章推荐
- Struts1和Struts2的区别和对比:
- #java读书笔记#多线程1
- 《JAVA源码分析》:Thread
- Java的类属性和实例属性
- Spring技术内幕——深入解析Spring架构与设计原理(一)IOC实现原理
- Spring Schedule 任务调度实现
- Java EE规范是如何制定的
- Spring MVC 流程图
- java16天
- java 引用传递,还是值传递 之坑
- Java_chapter14_抽象类和接口
- JDBC在springMvc等框架中使用的方式
- 内省(Introspector)操作JavaBean的属性
- spring--aop
- Spring.Net学习笔记(4)-属性及构造器注入
- java对象的大小
- mybatis 注解和xml的使用
- java大牛list
- java大牛list
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore