本文地址:http://blog.csdn.net/sushengmiyan/article/details/43487751

本文作者:sushengmiyan

------------------------------------------------------------------------------------------------------------------------------------

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请求:

命令行输出内容:

OK到现在,就已经成功将struts2与sencha extjs实现了关联。所有的后台都可以由struts2来接管了。

[ExtJS5学习笔记]第三十二节 sencha extjs 5与struts2的ajax交互配置的更多相关文章

  1. [ExtJS5学习笔记]第二十八节 sencha ext js 5.1.0发布版本正式发布 extjs doc下载地址

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/41911539 本文作者:sushengmiyan ------------------ ...

  2. [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/42240531 本文作者:sushengmiyan ------------------ ...

  3. [ExtJS5学习笔记]第三十三节 sencha extjs 5 grid表格导出excel

    使用extjs肯定少不了使用表格控件,用到表格,领导们(一般)还是惯于使用excel看数据,所以用到extjs表格的技术猿们肯定也会有导出表格excel这一个需求,本文主要针对如何在用extjs将gr ...

  4. [ExtJS5学习笔记]第三十五节 sencha extjs 5 组件查询方法总结

    一个UI前台组件肯定会比较多,我们通常习惯性的使用ID来获取需要操作的组件,但是这种方法是extjs推荐的么?有没有extjs推荐使用的获取组件的方法呢? 目录 目录 extjs的查询组件的API 查 ...

  5. [ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel

    继上次使用js前端导出excel之后,还有一个主要大家比较关注的是后台实现导出excel,因为本人开发使用的java所以这里使用apache的开源项目poi进行后台excel的导出. 本文目录 本文目 ...

  6. [ExtJS5学习笔记]第三十一节 sencha extjs 5使用cmd生成的工程部署到tomcat服务器

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/42940883 本文作者:sushengmiyan ------------------ ...

  7. [ExtJS5学习笔记]第三十五条 sencha extjs 5 组件查询方法

    一UI前部组件势必更加,我们通常习惯性使用ID获取部件操作的需要.但是,这种方法是extjs推荐么?你有吗extjs利用它来获取组件的推荐方法? 夹 文件夹 extjs的查询组件的API 查询实例 主 ...

  8. [extjs5学习笔记]第三十八节 sencha CMD 6.0.0.220版本安装

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/46740381 简介 sencha cmd 6安装过程不需要UAC控制了对于widnow ...

  9. [extjs5学习笔记]第三十七节 Extjs6预览版都有神马新东西

    本文在微信公众号文章地址:微信公众号文章地址 本文地址:http://blog.csdn.net/sushengmiyan/article/details/45190485 [TOC] 在Ext JS ...

随机推荐

  1. [BZOJ 4589]Hard Nim

    Description 题库链接 两人玩 \(nim\) 游戏,\(n\) 堆石子,每堆石子初始数量是不超过 \(m\) 的质数,那么后手必胜的方案有多少种.对 \(10^9+7\) 取模. \(1\ ...

  2. [ZJOI 2008]泡泡堂BNB

    Description 题库链接 双方 \(n\) 人,给出每人的战斗力,赢一场加 \(2\) 分,平局 \(1\) 分,失败不得分.求最大和最小的得分. \(1\leq n\leq 100000\) ...

  3. [Codeforces 919E]Congruence Equation

    Description 题库链接 求满足 \[n\cdot a^n\equiv b \pmod{p}\] 的 \(n\) 的个数, \(1\leq n\leq x\) , \(a,b,p,x\) 均已 ...

  4. 洛谷P3209 [HNOI2010]PLANAR

    首先用一波神奇的操作,平面图边数m<=3*n-6,直接把m降到n, 然后对于冲突的边一条环内,一条环外,可以用并查集或者2Sat做, 当然并查集是无向的,2Sat是有向的,显然用并查集比较好 复 ...

  5. 计蒜客NOIP2017提高组模拟赛(三)day2-小区划分

    传送门 dp,注意边界 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cst ...

  6. new File()

    首先 File 类是对文件系统的映射 并不是硬盘上真实的文件所以 new File("xxx.xxx") 只是在内存中创建File文件映射对象,而并不会在硬盘中创建文件 如果需要创 ...

  7. java 学习笔记2 面向对象(上)

    类和对象 类是某一批对象的抽象,可以把类理解成某种概念.对象是一个具体存在的实体.类和对象是面向对象的核心. 类定义的是多个实例的特征,类不是具体存在,实例才是具体存在. 定义类(class)的语法: ...

  8. 有些时候会看到url参数上出现%BF之类

    这是URLDecoder和URLEncoder的原因 因为他们是参数,避免影响网页的连接跳转,再到了服务器的时候会自动转过来 当URL地址中仅包含普通非中文字符串和application/x-www- ...

  9. vue+node.js+webpack开发微信公众号功能填坑——v -for循环

    页面整体框架实现,实现小功能,循环出数据,整体代码是上一篇 vue+node.js+webpack开发微信公众号功能填坑--组件按需引入 修改部门代码 app.vue <yd-flexbox&g ...

  10. python学习之路基础篇(第七篇)

    一.模块 configparser configparser用于处理特定格式的文件,其本质是利用open来对文件进行操作 [section1] # 节点 k1 = v1 # 值 k2:v2 # 值 [ ...