首先:新建一个java web项目,添加struts2的支持,配置好相关的xml文件:如下
web.xml文件配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
struts配置文件:
<?xml version="1.0" encoding="gbk" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="struts" extends="json-default"> <action name="testAction" class="com.daodao.action.TestAction"> <result name="success" type="json"></result> </action> </package> </struts>
其次:编写前台EXTJS,这里不在说明!请求方法:我这里使用的是AJAX请求:
Ext.Ajax.request({ url : 'testAction.action', method:'POST', success:function(response,options) { alert(eval("("+response.responseText+")")); }, failure:function(response,options){ alert(); } })
编写后台action实现:
public class TestAction extends ActionSupport{
boolean success;
List list;
User user;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String execute() throws Exception {
this.success=true;
user=new User();
user.setEmail("aaa");
user.setName("bbb");
user.setPass("ccc");
list=new ArrayList();
list.add(user);
return SUCCESS;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
OK这样就前台JS就可以得到一个JSON类型的数据了:
"{\"list\":[{\"email\":\"aaa\",\"name\":\"bbb\",\"pass\":\"ccc\"}],\"success\":true,\"user\":{\"email\":\"aaa\",\"name\":\"bbb\",\"pass\":\"ccc\"}}"
对于这样一个字符串我们可以在前台使用JS内置函数eval()将其转换称JS对象,方便我们的使用
eval("("+response.responseText+")")
根据本实例中的数据类型,转换过的js对象是这样的:一个数组,一个bool类型的success(这个属性后台是必须设置的,前台的会使用这个属性作为判断成功与否的标准!),详情请查看图片附件(JS对象.jsp)!
这样我们前台就可以随心所欲的使用各种数据了!
项目所需要的jar包:
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.5.jar
struts2-core-2.3.4.jar
xwork-core-2.3.4.jar
json-lib-2.3-jdk15.jar
struts2-json-plugin-2.3.4.jar