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 ...
随机推荐
- AndroidManifest配置之uses-sdk
uses-sdk配置 uses-sdk用来设置app对android系统的兼容性.它包含三个可选的配置项,分别为android:minSdkVersion,android:targetSdkVersi ...
- LA-3942(trie树+dp)
题意: 给出一个由多个不同单词组成的字典,和一个长字符串,把这个字符串分解成若干个单词的连接,问有多少种方法; 思路: dp[i]表示s[i,L]的方案数,d[i]=∑d[j];s[i,j-1]是一个 ...
- rkhunter和chkrootkit
今天继续检查我的Linux,所以下来rkhunter和chkrootkit一个一个来,下面只记录命令,少些说明不截图了. 1.rkhunter #cd /temp #wget http://downl ...
- mysql审计实现方法
Mysql版本: 5.6.24-72.2 一.通过init-connect + binlog 实现MySQL审计功能 基本原理: 由于审计的关键在于DML语句,而所有的DML语句都可以通过binlog ...
- ComboBox的真实值和显示值
一.类型 /// <summary> /// 下拉框值类型 /// </summary> public class TextAndValue { /// <summary ...
- Win7点击文件夹右键可打开cmd控制台,并获取当前目录
当我们用cmd时,有时要切换到某个文件夹的目录,可以在当前目录下,按住shift单击右键打开控制台,也可以在鼠标右键中添加cmd启动命令: 1.在开始搜索框输入regedit,打开注册表: 2.打开 ...
- A-Z,a-z,0-9的unicode编码表
1.转自:https://blog.csdn.net/fedawn/article/details/7307993 A-Z 的 Unicode 字符编码表 十进制 十六进制 1.“A”的 U ...
- 1.5 sqoop安装及基本使用
一.安装sqoop 1.解压 ##解压 [root@hadoop-senior cdh]# tar zxf sqoop-1.4.5-cdh5.3.6.tar.gz -C /opt/cdh-5.3.6/ ...
- c++拷贝函数详解(转)
一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如 int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变 ...
- TypeScript完全解读(26课时)_8.ES6精讲-ES6中的类(进阶)
8.TypeScript完全解读-ES6精讲-类(进阶) 在index.ts内引入 Food创建的实例赋值给Vegetabled这个原型对象,这样使用Vegetables创建实例的时候,就能继承到Fo ...