1.前台页面中的ajax:

  1. //根据部门查询该部门下的用户列表
  2. function doSelectDept(){
  3. //1、获取部门
  4. var dept = $("#toCompDept option:selected").val();
  5. if(dept != ""){
  6. //2、根据部门查询列表
  7. $.ajax({
  8. url:"${basePath}sys/home_getUserJson2.action",
  9. data:{"dept":dept},
  10. type:"post",
  11. dataType:"json",//返回数据类型
  12. success: function(data){
  13. //2.1、将用户列表设置到被投诉人下拉框中
  14. if(data != null && data != "" && data != undefined){
  15. if("success" == data.msg){
  16. var toCompName = $("#toCompName");
  17. toCompName.empty();
  18. $.each(data.userList, function(index, user){
  19. toCompName.append("<option value='" + user.name + "'>" + user.name + "</option>");
  20. });
  21. } else {alert("获取被投诉人列表失败!");}
  22. } else {
  23. alert("获取被投诉人列表失败!");
  24. }
  25. },
  26. error:function(){alert("获取被投诉人列表失败!");}
  27. });
  28. } else {
  29. //清空被投诉人列表下拉框
  30. $("#toCompName").empty();
  31. }
  32. }

后台Action中输出json格式文本:

方法一:直接用输出流输出Json格式的文本内容。

要在项目中引入对应的包:找到struts2.x 的lib包,向本项目lib包加入“json-lib-2.3-jdk15.jar,ezmorph-1.0.6.jar,commons-beanutils-1.8.0.jar”

  1. public void getUserJson(){
  2. try {
  3. //1、获取部门
  4. String dept = ServletActionContext.getRequest().getParameter("dept");
  5. if(StringUtils.isNotBlank(dept)){
  6. QueryHelper queryHelper = new QueryHelper(User.class, "u");
  7. queryHelper.addCondition("u.dept like ?", "%" + dept);
  8. //2、根据部门查询用户列表
  9. List<User> userList = userService.findObjects(queryHelper);
  10. //创建Json对象
  11. JSONObject jso = new JSONObject();
  12. jso.put("msg", "success");
  13. jso.accumulate("userList", userList);
  14.  
  15. //3、输出用户列表以json格式字符串形式输出
  16. HttpServletResponse response = ServletActionContext.getResponse();
  17. response.setContentType("text/html");
  18. ServletOutputStream outputStream = response.getOutputStream();
  19. outputStream.write(jso.toString().getBytes("utf-8"));
  20. outputStream.close();
  21. }
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }

方法二:使用struts2-json-plugin-2.x.jar 包,由struts将action中的变量组装成Json对象。

加入 struts2-json-plugin-2.x.jar 到项目中,在*-struts.xml中配置对应请求方法的返回类型为json。如下:

在Action中:

  1. public String getUserJson2(){
  2. try {
  3. //1、获取部门
  4. String dept = ServletActionContext.getRequest().getParameter("dept");
  5. if(StringUtils.isNotBlank(dept)){
  6. QueryHelper queryHelper = new QueryHelper(User.class, "u");
  7. queryHelper.addCondition("u.dept like ?", "%" +dept);
  8. //2、根据部门查询用户列表
  9. return_map = new HashMap<String, Object>();
  10. return_map.put("msg", "success");
  11. return_map.put("userList", userService.findObjects(queryHelper));
  12. }
  13. } catch (Exception e) {
  14. e.printStackTrace();
  15. }
  16. return SUCCESS;
  17. }

配置文件中:

  1. <package extends="json-default" namespace="/sys" name="sysHomeJson-action">
  2. <action name="home_getUserJson2" method="getUserJson2"
  3. class="cn.itcast.home.action.HomeAction">
  4. <result type="json">
  5. <param name="root">return_map</param>
  6. </result>
  7. </action>
  8. </package>

在返回类型中指定了root参数,意思是只返回并格式化这个类属性为json。【注意:需要利用struts返回json对象的变量,要有对应的get方法。】

Action中使用Json的更多相关文章

  1. struts2中的json

    这里放一个转载的struts2中json的详细应用和范例, http://yshjava.iteye.com/blog/1333104,这是个人在网上看到的很用心也很详细的一份关于struts2中js ...

  2. action中json的应用

    这篇文章重点介绍action中json数据的返回处理:假设须要看前端代码的一些特效或ajax的json接收,请看上一篇博客:http://blog.csdn.net/yangkai_hudong/ar ...

  3. 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化

    谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...

  4. jsp a标签传值到action中,action接收不到传值

    因为需求,今天在action中加了一个marker属性,尝试了很多方法 set,get方法也生成了,但是就接收不到值. 这时我注意到action中有我之前使用ajax请求数据返回json格式数据,不以 ...

  5. struts2中使用json插件实现ajax交互

    json插件可以简单的实现ajax交互,避免了使用struts2-dojo-plugin.jar包时带来的struts2.x版本冲突问题.并且减少了使用ajax标签时需要的繁琐的配置包括web.xml ...

  6. ASP.NET中使用JSON方便实现前台与后台的数据交换

    ASP.NET中使用JSON方便实现前台与后台的数据交换 发表于2014/9/13 6:47:08  8652人阅读 分类: ASP.NET Jquery extjs 一.前台向后台请求数据 在页面加 ...

  7. 使用Json.Net解决MVC中各种json操作

    最近收集了几篇文章,用于替换MVC中各种json操作,微软mvc当然用自家的序列化,速度慢不说,还容易出问题,自定义性也太差,比如得特意解决循环引用的问题,比如datetime的序列化格式,比如性能. ...

  8. http中使用json封装数据的性能测试

    http中使用json封装数据的性能测试     一个项目使用json封装数据,接口例如:   客户端发送:   POST /list.do HTTP/1.1   Host: zoomi.com.cn ...

  9. 【Java EE 学习 70 下】【数据采集系统第二天】【Action中User注入】【设计调查页面】【Action中模型赋值问题】【编辑调查】

    一.Action中User注入问题 Action中可能会经常用到已经登陆的User对象,如果每次都从Session中拿会显得非常繁琐.可以想一种方法,当Action想要获取User对象的时候直接使用, ...

随机推荐

  1. Python的核心数据类型

    ​ Python的核心数据类型有:数字,字符串,列表,字典,元组,文件等. 数字 ​ 数字类型有:整形int,浮点型float,复数complex,布尔型bool. 整形 ​ 整型数是不带有小数部分的 ...

  2. maven 打包失败 提示找不到jar的问题

    服务打包的时候发现打包失败,查看原因大概是找不到jar包,但是本地仓库有.最终的解决的办法是使用maven 命令重新把jar包安装到本地仓库. 命令如下:mvn install:install-fil ...

  3. SSM项目中用ajax尝试实现controller请求中重定向不起作用的问题

    首先我在controller中有一个添加数据的方法: @RequestMapping(value="/emp",method=RequestMethod.POST) public ...

  4. 高级同步器:同步屏障CyclicBarrier

    引自:http://ifeve.com/concurrency-cyclicbarrier/ 简介 CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier).它要做的 ...

  5. vue入门——基本概念

    1. 挂载点,模板,实例的关系? 首先附上一个基本demo: <!DOCTYPE html> <html lang="en"> <head> & ...

  6. hadoop生态搭建(3节点)-01.基础配置

    # 基础配置# ==================================================================node1 vi /etc/hostname nod ...

  7. python爬虫之有道在线翻译

    今天初学了python这门课 老师简单的讲解了一下 python的安装环境,配置环境变量,当前主流Python使用的是3.x版本, 下午简单的讲解了python的起源,发展以及在各个方面的应用 然后晚 ...

  8. 码云配置webhooks自动触发拉取代码

    webhooks的使用 码云和github的钩子叫webhooks 每次您 push 代码后,都会给远程 HTTP URL 发送一个 POST 请求 码云项目管理页面的webhooks设置: http ...

  9. python语法图

  10. 适用于Linux的windows子系统

    Windows基于图形界面的易用性是有目共睹的,这也是很多普通用户往往难以舍弃的原因.但是Linux系统更强大的网络应用开发能力,却又是Windows系统所无法比拟的.一直以来,很多人都在试图采用各种 ...