Struts2整合json

struts2整合json,需要一些jar包

如图所示:

这里介绍3中方法整合json

方法一

在视图资源中输出JSON数据

Action处理完用户请求后,将数据存放在某一位置,如request中,并返回视图,然后Struts将跳转至该视图资源,在该视图中,我们需要做的是将数据从存放位置中取出,然后将其转换为JSON字符串,输出在视图中。

 1     /**
 2      * 测试通过action以视图方式返回JSON数据
 3      */
 4     public String testByJSP() {
 5         User user = new User();
 6         user.setId("1");
 7         user.setName("JSONActionJSP中文会乱码吗?");
 8         user.setPassword("123");
 9         JSONObject jsonObject = new JSONObject();
10         jsonObject.accumulate("user", user);
11         jsonObject.accumulate("success", true);
12         // 这里在request对象中放了一个data,所以struts的result配置中不能有type="redirect"        ServletActionContext.getRequest().setAttribute("data",jsonObject.toString());
13         return SUCCESS;
14     };

struts.xml的配置

1 <package name="default" extends="struts-default" namespace="/">
2         <action name="testByJSP"
3                 class="com.scitc.test.web.UserAction"
4                 method="testByJSP">
5             <result name="success">/actionJSP.jsp</result>
6         </action>
7     </package>

方法二

在Action中以Struts2的方式输出JSON数据

 1 // 将会被Struts2序列化为JSON字符串的对象
 2     private Map<String, Object> dataMap;
 3     public UserAction() {
 4         dataMap = new HashMap<String, Object>();
 5     }
 6     /**
 7      * Struts2序列化指定属性时,必须有该属性的getter方法,实际上,如果没有属性,而只有getter方法也是可以的
 8      */
 9     public Map<String, Object> getDataMap() {
10         return dataMap;
11     }
12     /**
13      * 测试通过action以Struts2默认方式返回JSON数据
14      */
15     public String testByAction() {
16         // dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
17         dataMap.clear();
18         User user = new User();
19         user.setId("2");
20         user.setName("JSONActionStruts2中文会乱码吗?");
21         user.setPassword("123");
22         // 放入一个是否操作成功的标识
23         dataMap.put("success", true);
24         dataMap.put("user", user);
25         return SUCCESS;
26     }    

Struts.xml配置

 1  <package name="json" extends="json-default" namespace="/">
 2         <action name="testByAction"
 3                 class="com.scitc.test.web.UserAction"
 4                 method="testByAction">
 5             <result type="json">
 6                 <param name="root">dataMap</param>
 7                 <!--注意不加下面的配置,ie会提示下载请求的连接资源-->
 8                 <param name="contentType">text/html</param>
 9             </result>
10         </action>
11     </package>

方法三

在Action中以传统方式输出JSON数据

这一点跟传统的Servlet的处理方式基本上一模一样,代码如下

 1 /**
 2      * 通过action是以传统方式返回JSON数据
 3      */
 4     public void doAction() throws IOException {
 5         HttpServletResponse resp = ServletActionContext.getResponse();
 6         resp.setContentType("text/html");
 7         OutputStream out = resp.getOutputStream();
 8         // 将要被返回到客户端的对象
 9         User user = new User();
10         user.setId("3");
11         user.setName("JSONActionGeneral中文会乱码吗?");
12         user.setPassword("123");
13         JSONObject json = new JSONObject();
14         json.accumulate("user", user);
15         json.accumulate("success", true);
16         out.write(json.toString().getBytes());
17         out.close();
18     }

Struts.xml配置

1     <package name="default" extends="struts-default" namespace="/">
2         <action name="testJSONFromActionByGeneral"
3                 class="com.scitc.test.web.UserAction"
4                 method="doAction">
5                 <!-- 由于是传统请求,所以没有与之对应的<result/>结果页面 ,即只有<action>请求 -->
6         </action>
7     </package>

这三个方法中,只有方法二<package>要继承"json-default"

三个方法的效果分别如图:

时间: 2024-10-10 01:01:49

Struts2整合json的相关文章

struts2整合json要注意的问题

昨天struts2整合json,一直出错: There is no Action mapped for namespace / and action name ... HTTP Status 404 - There is no Action mapped for action name... 发现我已经在struts.xml中继承了json-default了啊,后来发现原来是因为没有引入相应的包,在此做下总结. 1.添加相应的包 导入commons-beanutils-1.7.0.jar.ezm

【SSH网上商城项目实战07】Struts2和Json的整合

上一节我们完成了DataGrid显示jason数据,但是没有和后台联系在一起,只是单纯地显示了我们自己弄的json数据,这一节我们将json和Struts2整合,打通EasyUI和Struts2之间的交互. 1. json环境的搭建 json环境搭建很简单,导入json的jar包即可,如下: 2. 完善Action 在DataGrid控件中有个属性是url,可以指定请求数据的url地址,在上一节我们将这个地址直接设置成了一个具体的json文件,这里我们将这个url设置成一个action,如url

Struts2 ajax json小例子

1:首先要解决jar包的问题,我最近一直用maven搭建项目,所以把pom.xml复制到这. 要有struts2的核心包,struts2和Json整合的包,以及json lib.刚才转载了一篇解决json lib老是报错的博客,问题完美解决. <dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</ar

struts2 + ajax + json的结合使用,实例讲解

struts2用response怎么将json值返回到页面javascript解析,这里介绍一个struts2与json整合后包的用法. 1.准备工作 ①ajax使用Jquery:jquery-1.4.2.min.js ②struts2与json的依赖包:struts2-json-plugin-2.2.3.jar PS:版本可自己控制!~ 2.过程 ①引入json依赖包 ②编写action类 ③配置struts.xml ④编写页面 ⑤测试 3.实例 ① action类,JsonAction  注

spring+hibernate+Struts2 整合(全注解及注意事项)

最近帮同学做毕设,一个物流管理系统,一个点餐系统,用注解开发起来还是很快的,就是刚开始搭环境费了点事,今天把物流管理系统的一部分跟环境都贴出来,有什么不足的,请大神不吝赐教. 1.结构如下 2.jar包如下 3.首先是spring.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"

Struts2 整合jQuery实现Ajax功能(1)

技术领域很多东西流行,自然有流行的道理,这几天用了jQuery,深感有些人真是聪明绝顶,能将那么多技术融合的如此完美. 首先明确个概念: jQuery是什么:是使用javascript语言开发的,用于满足项目前台各种操作需要的js程序文件.也就是说,jQuery基本上就是个js程序集,基础核心是jQuery.js文件. l        当然根据不同的版本具体的表现形式: jQuery.1.6.js或者jquery-1.5.1.js 这个是版本号的不同,具体有哪些区别,还没发现. l      

Struts2 整合jQuery实现Ajax功能(2)

1.1.1   Action利用struts2-json-plugin-X.X.X.jar响应Json格式信息: 1.      function removerecordbyid(recordid){ 2.              $("#showallrecord table tr").each( 3.              function(){ 4.                var seq=parseInt($( this ).children( "td&

Spring与Struts2整合VS Spring与Spring MVC整合

Spring与Struts2整合,struts.xml在src目录下 1.在web.xml配置监听器 web.xml <!-- 配置Spring的用于初始化ApplicationContext的监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <contex

玩转spring MVC(八)----spring MVC整合json

这篇文章在前边项目的基础上来整合json,最新项目资料见:http://download.csdn.net/detail/u012116457/8436187 首先需要的jar包:jackson-core-asl-1.7.2.jar  jackson-mapper-asl-1.7.2.jar 然后是配置文件json-servlet.xml,该文件得在web.xml中配置使其在tomcat启动时调用: <?xml version="1.0" encoding="UTF-8