extjs ajax请求与struts2进行交互
sencha extjs 5 增加一个struts2的配置,这样可以在设置好前台布局之后,与后台交互获取数据显示。现在有一个问题是struts2对于url的跳转action支 持比较良好,但是对于像Extjs这样,ajax请求的,无url跳转的实现,还是需要一点点技巧的。本文实例讲解一个Ext.Ajax.request 的请求实例,返回后台处理之后的结果。
步骤一:创建struts2的配置文件struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="basicstruts2" extends="struts-default"> <action name="index">
<result>/index.jsp</result>
</action> </package> </struts>
这个文件需要放置在src目录下,可以在下载的struts2中的webapp下找一个文件来直接使用,不需要自己一行代码一行代码的去敲,毕竟我们会使用就可以了。
步骤二:对web.xml修改,增加struts2的支持
<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>
这表示struts2会接管所有的请求,这样我们前台的请求都会纳入struts2的支持了
步骤三:增加struts2核心jar包以及struts2依赖的jar包
需要的jar包邮以下几个:
1.commons-fileupload-1.3.1.jar
2.commons-io-2.2.jar
3.commons-lang3-3.2.jar
4.freemarker-2.3.19.jar
5.javassist-3.11.0-GA.jar
6.ognl-3.0.6.jar
7.struts2-core-2.3.20.jar
8.xwork-core-2.3.20.jar
这8个jar包都可以在struts2的lib包里面找到,拷贝到项目lib目录下就可以了,依赖的jar包之前有专门罗列过,参照:
http://blog.csdn.net/sushengmiyan/article/details/43272061
到此为止,我们的项目就配置成功了struts2,怎么去验证成功与否呢?我们使用extjs写一个ajax的request
步骤四:书写前台ajax请求
Ext.Ajax.request({
url: 'foo',
async: false,
success: function(response) {
debugger;
var data = Ext.decode(response.responseText);
console.log(data); }
});
这里使用Ext.Ajax.request发送请求,指定了url为foo这个url就对应着struts2的一个action连接。我这里不太喜欢配置xml文件,而是喜欢使用struts2的注解的方式来实现跳转,所以下一步,增加一个注解插件
步骤五 增加struts2的注解插件
jar包增加struts2-convention-plugin-2.3.20.jar
步骤六:熟悉后台实现代码
在src目录下增加自己的实现类
我这里新建了一个包com.oasystem.action
新增一个类TestAction
package com.oasystem.action; import java.io.IOException;
import java.util.HashMap;
import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionSupport; public class TestAction extends ActionSupport { private static final long serialVersionUID = 5316344216452587235L;
private String _dc;
//这里就是使用注解指定struts2 action调用的地方
@Action(value = "/foo")
//方法设置成了void 不需要返回数据之间将数据写回到response中了
public void foo() {
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
String abc = "{'a':'测试'}"; try {
response.getWriter().write(abc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}; public String get_dc()
{
return this._dc;
}; public void set_dc(String dc)
{
this._dc = dc;
}; }
OK测试一下,启动tomcat服务器,执行这个ajax请求:
命令行输出内容:
extjs ajax请求与struts2进行交互的更多相关文章
- AJAX请求.net controller数据交互过程
AJAX发出请求 $.ajax({ url: "/Common/CancelTaskDeal", //CommonController下的CancelTaskDeal方法 type ...
- extjs ajax 请求成功也会进入failure
Ext.Ajax.request({ url: '路径', method : 'post', params : { 传的参数 }, success: function (action ...
- EXTJS Ajax请求中文乱码
设置actionMethods, read为post proxy: { type: 'ajax', url: '../Dictionary/query', actionMethods: { read: ...
- react中使用Ajax请求(axios,Fetch)
React本身只关注于界面, 并不包含发送ajax请求的代码,前端应用需要通过ajax请求与后台进行交互(json数据),可以使用集成第三方ajax库(或自己封装) 常用的ajax请求库 jQuery ...
- jQuery实现多个ajax请求等待
通常,jQuery的函数ajax进行Ajax调用.函数ajax只能做一个Ajax调用.当Ajax调用成功时,执行回调函数.可选地,当Ajax调用返回错误时,调用另一个回调函数.但是,该功能不能根据这些 ...
- 利用JQUERY实现多个AJAX请求等待
利用JQUERY实现多个AJAX请求等待 li {list-style-type:decimal;}.wiz-editor-body ol.wiz-list-level2 > li {list- ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- Struts2处理(jQuery)Ajax请求
1. Ajax Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)时一种创建交互式网页应用的网页开发技术,它并不是一项新的技术,其产生 ...
- 【转载】Extjs设置Ajax请求的超时时间timeout
在Extjs中的Ajax请求中,Ext.Ajax.request 默认超时时间是30秒,有时候我们有比较耗时的操作需要设置更长时间,此时我们就需要修改Ext.Ajax.Requset的超时时间为更长, ...
随机推荐
- 身份证号码15位转18位 C#实现
[身份证最后一位神秘X的由来]身份证中的“冷知识”1999年的今天,<国务院关于实行公民身份号码制度的决定>被发布,当年10月1日实施.为什么有的有X?这位数是根据前17位计算出的校验码. ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q131-Q132)
Question 131You create a SharePoint site by using the Document Center site template.You need to ensu ...
- Mac下利用(xcode)安装git
Mac下利用(xcode)安装git 一.AppStore 最安全途径:搜索下载Xcode,(需要AppleID). 其他:直接百度Xcode下载. 二.Xcode 打开Xcode-->Pref ...
- UITabBarController的创建等基本方法
#import "AppDelegate.h" @interface AppDelegate () <UITabBarControllerDelegate> @end ...
- windows log 打印语句
1.格式化字符串(Writes formatted data to the specified string) wchar_t szMessage[260]; PWSTR pszFunction = ...
- java运算符总结
1.算数运算符:+.-.*./.%(加减乘除取余) 2.自增自减:++.-- 3.赋值运算符:=.+=.-=.*=./= 4.关系运算符:>.<.>=.<=.==.!= 逻辑运 ...
- 匿名PL/SQL
立此存照 匿名PL/SQL 语法结构:PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL程序包含了一个或多个逻辑块,每一块都可以划分3个部分.变量在使用前必须声明,P ...
- 修复 Java 内存模型,第 2 部分——Brian Goetz
转自Java并发大师Brain Goetz:http://www.ibm.com/developerworks/cn/java/j-jtp03304/ (中文地址) http://www.ibm.co ...
- npm 配置全局文件
nodejs.npm 按照默认安装完成即可. 1.设置一下全局目录:配置npm的全局模块的存放路径以及cache的路径,将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立"n ...
- Hbase快速开始——shell操作
一. 介绍 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...