Action中使用Json
1.前台页面中的ajax:
- //根据部门查询该部门下的用户列表
- 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",//返回数据类型
- 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();
- }
- }
后台Action中输出json格式文本:
方法一:直接用输出流输出Json格式的文本内容。
要在项目中引入对应的包:找到struts2.x 的lib包,向本项目lib包加入“json-lib-2.3-jdk15.jar,ezmorph-1.0.6.jar,commons-beanutils-1.8.0.jar”
- 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();
- }
- }
方法二:使用struts2-json-plugin-2.x.jar 包,由struts将action中的变量组装成Json对象。
加入 struts2-json-plugin-2.x.jar 到项目中,在*-struts.xml中配置对应请求方法的返回类型为json。如下:
在Action中:
- 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;
- }
配置文件中:
- <package extends="json-default" namespace="/sys" name="sysHomeJson-action">
- <action name="home_getUserJson2" method="getUserJson2"
- class="cn.itcast.home.action.HomeAction">
- <result type="json">
- <param name="root">return_map</param>
- </result>
- </action>
- </package>
在返回类型中指定了root参数,意思是只返回并格式化这个类属性为json。【注意:需要利用struts返回json对象的变量,要有对应的get方法。】
Action中使用Json的更多相关文章
- struts2中的json
这里放一个转载的struts2中json的详细应用和范例, http://yshjava.iteye.com/blog/1333104,这是个人在网上看到的很用心也很详细的一份关于struts2中js ...
- action中json的应用
这篇文章重点介绍action中json数据的返回处理:假设须要看前端代码的一些特效或ajax的json接收,请看上一篇博客:http://blog.csdn.net/yangkai_hudong/ar ...
- 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化
谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...
- jsp a标签传值到action中,action接收不到传值
因为需求,今天在action中加了一个marker属性,尝试了很多方法 set,get方法也生成了,但是就接收不到值. 这时我注意到action中有我之前使用ajax请求数据返回json格式数据,不以 ...
- struts2中使用json插件实现ajax交互
json插件可以简单的实现ajax交互,避免了使用struts2-dojo-plugin.jar包时带来的struts2.x版本冲突问题.并且减少了使用ajax标签时需要的繁琐的配置包括web.xml ...
- ASP.NET中使用JSON方便实现前台与后台的数据交换
ASP.NET中使用JSON方便实现前台与后台的数据交换 发表于2014/9/13 6:47:08 8652人阅读 分类: ASP.NET Jquery extjs 一.前台向后台请求数据 在页面加 ...
- 使用Json.Net解决MVC中各种json操作
最近收集了几篇文章,用于替换MVC中各种json操作,微软mvc当然用自家的序列化,速度慢不说,还容易出问题,自定义性也太差,比如得特意解决循环引用的问题,比如datetime的序列化格式,比如性能. ...
- http中使用json封装数据的性能测试
http中使用json封装数据的性能测试 一个项目使用json封装数据,接口例如: 客户端发送: POST /list.do HTTP/1.1 Host: zoomi.com.cn ...
- 【Java EE 学习 70 下】【数据采集系统第二天】【Action中User注入】【设计调查页面】【Action中模型赋值问题】【编辑调查】
一.Action中User注入问题 Action中可能会经常用到已经登陆的User对象,如果每次都从Session中拿会显得非常繁琐.可以想一种方法,当Action想要获取User对象的时候直接使用, ...
随机推荐
- Python的核心数据类型
Python的核心数据类型有:数字,字符串,列表,字典,元组,文件等. 数字 数字类型有:整形int,浮点型float,复数complex,布尔型bool. 整形 整型数是不带有小数部分的 ...
- maven 打包失败 提示找不到jar的问题
服务打包的时候发现打包失败,查看原因大概是找不到jar包,但是本地仓库有.最终的解决的办法是使用maven 命令重新把jar包安装到本地仓库. 命令如下:mvn install:install-fil ...
- SSM项目中用ajax尝试实现controller请求中重定向不起作用的问题
首先我在controller中有一个添加数据的方法: @RequestMapping(value="/emp",method=RequestMethod.POST) public ...
- 高级同步器:同步屏障CyclicBarrier
引自:http://ifeve.com/concurrency-cyclicbarrier/ 简介 CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier).它要做的 ...
- vue入门——基本概念
1. 挂载点,模板,实例的关系? 首先附上一个基本demo: <!DOCTYPE html> <html lang="en"> <head> & ...
- hadoop生态搭建(3节点)-01.基础配置
# 基础配置# ==================================================================node1 vi /etc/hostname nod ...
- python爬虫之有道在线翻译
今天初学了python这门课 老师简单的讲解了一下 python的安装环境,配置环境变量,当前主流Python使用的是3.x版本, 下午简单的讲解了python的起源,发展以及在各个方面的应用 然后晚 ...
- 码云配置webhooks自动触发拉取代码
webhooks的使用 码云和github的钩子叫webhooks 每次您 push 代码后,都会给远程 HTTP URL 发送一个 POST 请求 码云项目管理页面的webhooks设置: http ...
- python语法图
- 适用于Linux的windows子系统
Windows基于图形界面的易用性是有目共睹的,这也是很多普通用户往往难以舍弃的原因.但是Linux系统更强大的网络应用开发能力,却又是Windows系统所无法比拟的.一直以来,很多人都在试图采用各种 ...