【叨、校长】Extjs通过Ajax请求后台Struts2返回一个json对象
首先:新建一个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
页:
[1]