Struts 2中访问Servlet API的几种方法小结
1、使用ActionContext Action运行期间所用到的数据都保存在ActionContext中,例如session、客户端提交的参数等,ActionContext是Action的一个上下文对象。 ActionContext actionContext = ActionContext.getContext(); 通过如上方法创建actionContext对象,然后使用actionContext对象提供的一些方法来实现相应的功能。例如,调用getSession()方法可以获得HttpSession对象。但是,这种方法只能使用少部分的Servlet API。
Map<String, Object> request=(Map<String, Object>) ActionContext.getContext().get("request");
request.put("address", "绵阳"); 2、实现相应的aware接口 在Action中实现如下的一些接口: org.apache.struts2.util.ServletContextAware:实现该接口的Action可以访问ServletContext对象。 org.apache.struts2.interceptor.ServletRequestAware:实现该接口的Action可以访问ServletRequest对象。 org.apache.struts2.interceptor.ServletResponseAware:实现该接口的Action可以访问ServletResponse对象。 org.apache.struts2.interceptor.SessionAware:实现该接口的Action可以访问HttpSession对象。 看下面的例子: package action; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport implements ServletRequestAware{
private String name;
// 定义request对象
private HttpServletRequest request; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String execute() throws Exception {
HttpSession session = request.getSession();
session.setAttribute("user", this.name);
return SUCCESS;
} // 继承并实现该方法
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
} 可以实现其中的某一个接口,也可以使用全部的接口。这种方法弊端是实现起来比较麻烦,既要实现接口,还要实现接口里的set方法。 3、使用ServletActionContext ServletActionContet提供了一系列的静态方法,可以获得HttpServletRequest、HttpServletResponse等等,看下面的例子: package action; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
session.setAttribute("user", this.name);
return SUCCESS;
} }
Struts 2中访问Servlet API的几种方法小结的更多相关文章
- Action访问Servlet API的三种方法
一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...
- struts2的action访问servlet API的三种方法
学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object g ...
- 非IoC方式访问Servlet API的两种方法
使用ActionContext访问 ActionContext来自com.opensymphony.xwork2.ActionContext 具体实现代码段如下: <span style=&qu ...
- struts2中访问servlet API
Struts2中的Action没有与任何Servlet API耦合,,但对于WEB应用的控制器而言,不访问Servlet API几乎是不可能的,例如需要跟踪HTTP Session状态等.Struts ...
- Struts2访问Servlet API的三种方式
有时我们需要用到Request, Response, Session,Page, ServletContext这些我们以前常用的对象,那么在Struts2中怎么样使用到这些对象呢,通常有三种方式. * ...
- Struts2访问Servlet API的几种方式
struts2提供了三种方式访问servlet API:大致分为两类 1. ActionContext: public static ActionContext getContext() :获得当前 ...
- Struts2中获取servlet API的几种方式
struts2是一个全新的MVC框架,如今被广大的企业和开发者所使用,它的功能非常强大.这给我们在使用servlet 纯java代码写项目的时候带来了福音.但是一般来说,我们的项目不到一定规模并不需要 ...
- 1:3访问 servlet API 的两种方式(request,session等内置对象)
1:解耦方式 2:耦合方式: ========================================== ========================================== ...
- js中设置元素class的三种方法小结
一.el.setAttribute('class','abc'); 代码如下: .abc { background: red; } test div var div = document.getEl ...
随机推荐
- 编译Thrift
按照 https://syslint.com/blog/tutorial/how-to-install-apache-thrift-on-ubuntu-14-04/ 进行, 编译时出现错误 make[ ...
- web.xml中classpath 解释
经过我在对 web.xml 的配置测试: web.xml 中classpath 所指的路径是项目工程路径下的 classes 文件夹
- CTSC2012 熟悉的文章
传送门 首先很容易想到对于所有的模式串建出广义后缀自动机,之后对于我们每一个要检查的文本串,先在SAM上跑,计算出来每一个位置能匹配到的最远的位置是多少.(就是当前点减去匹配长度) 之后--考虑DP- ...
- vue不支持IE8的原因
当你把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项,Vue 将遍历此对象所有的属性, 并使用 Object.defineProperty 把这些属性全部转为 getter ...
- bzoj1012最大数maxnumber——单调栈
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1012 单调栈水题:用了一下lower_bound二分. 代码如下: #include< ...
- HDU 1143 Tri Tiling 递归问题
将一个3*n的矩形用1*2的矩形填充,n为奇数时一定不能被填满,n*3%2==1 接下来处理这个问题我们要从简单的情况开始考虑,所谓递归就是要能将问题的规模不断减小,通过小问题的解决最后将复杂问题解决 ...
- centos7升级最新内核
由于最近在测试ceph 的straw2算法,但是要使用straw2需要最新为4.1.0的内核,因此决定将虚机内核升级最新4.11.4. 步骤1.检查本机内核版本 #uname -sr 3.10.0-5 ...
- 爬虫库之BeautifulSoup学习(一)
Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据. 官方解释如下: Beautiful Soup提供一些简单的.pytho ...
- mysql添加DATETIME类型字段导致Invalid default value错误的问题
例如: CREATE TABLE foo ( `creation_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `modification_time` DATET ...
- UVA - 11987 Almost Union-Find 并查集的删除
Almost Union-Find I hope you know the beautiful Union-Find structure. In this problem, you're to imp ...