Strust2 的JSON插件提供了一个可以返回“JSON”结果类型的序列化动作。序列化过程是递归的,这意味着整个对象图,动作类(基类不包括在内)将被序列化(根对象可以使用的“root”属性定制)。如果使用拦截器,动作将是从JSON内容请求填充。
案例:返回json对象
准备工作:
1.导入相关包【注意:不同版本struts2依赖基础包有所不同,本例以struts2.2.3为例】
/s2/WebRoot/WEB-INF/lib/asm-3.1.jar
/s2/WebRoot/WEB-INF/lib/asm-commons-3.1.jar
/s2/WebRoot/WEB-INF/lib/asm-tree-3.1.jar
/s2/WebRoot/WEB-INF/lib/commons-fileupload-1.2.2.jar
/s2/WebRoot/WEB-INF/lib/commons-io-2.0.1.jar
/s2/WebRoot/WEB-INF/lib/commons-lang-2.5.jar
/s2/WebRoot/WEB-INF/lib/freemarker-2.3.16.jar
/s2/WebRoot/WEB-INF/lib/javassist-3.11.0.GA.jar
/s2/WebRoot/WEB-INF/lib/ognl-3.0.1.jar
/s2/WebRoot/WEB-INF/lib/struts2-core-2.2.3.jar
/s2/WebRoot/WEB-INF/lib/xwork-core-2.2.3.jar
/s2/WebRoot/WEB-INF/lib/struts2-json-plugin-2.2.3.jar
2.配置项目中web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
编码:
1.写一个实体类UserInfo.java
package entity;
public class UserInfo {
private String username;
private String password;
public StringgetUsername() {
return username;
}
public void setUsername(Stringusername) {
this.username = username;
}
public StringgetPassword() {
return password;
}
public void setPassword(Stringpassword) {
this.password = password;
}
}
2.写一个action类UserAction.java,并写出execute方法
package action;
importcom.opensymphony.xwork2.ActionSupport;
import entity.UserInfo;
public class UserAction extends ActionSupport {
private UserInfo user;
public UserInfo getUser(){
return user;
}
public String execute() throws Exception {
//模拟从数据库查询
user = new UserInfo();
user.setUsername("芙蓉");
user.setPassword("123");
return SUCCESS;
}
}
3.编写struts.xml
<struts>
<package name="jsonTest" namespace="/json" extends="json-default">
<action name="showUser" class="action.UserAction">
<result type="json"></result>
</action>
</package>
</struts>
4.测试:
http://localhost:8080/s2/json/showUser
结果如下:
{"user":{"password":"123","username":"芙蓉"}}
【说明】
extends="json-default" 这个继承的包是定义在struts2-json-plugin-2.2.3.jar包下的xml配置文件中,它本身已经继承自struts-default.