Struts2中获取HttpServletRequest,HttpSession等的几种方式
转自:http://www.kaifajie.cn/struts/8944.html
package com.log; import java.io.IOException;
import java.util.Map; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ognl.OgnlValueStack; /**
* 1、使用Struts2 Aware拦截器
* 需要Action类实现相应的拦截器接口。如我们要获得HttpServletResponse对象,需要实现org.apache.struts2.
* interceptor.ServletResponseAware接口MyAction实现了一个ServletResponseAware接口,
* 并且实现了setServletResponse方法。如果一个动作类实现了ServletResponseAware接口,
* Struts2在调用execute方法之前,就会先调用setServletResponse方法,并将response参数传入这个方法。
* 如果想获得HttpServletRequest、HttpSession和Cookie等对象,动作类可以分别实现ServletRequestAware、
* SessionAware和CookiesAware等接口。这些接口都在org.apache.struts2.interceptor包中。
* 如果要获得请求参数,动作类可以实现org.apache.struts2.interceptor.
* ParameterAware接口,但如果只想判断某个参数是否存在,也可以实现com.opensymphony.xwork2.interceptor.
* ParameterNameAware接口。这个接口有一个acceptableParameterName方法,当Struts2获得一个请求参数时,
* 就会调用一次。读者可以在这个方法中将所有的请求参数记录下来,以便以后使用。这个方法的定义如下: boolean
* acceptableParameterName(String parameterName)
*
* @author Wei
* @time 2016年10月5日 下午5:20:15
*/
class MyAction extends ActionSupport implements ServletResponseAware {
/**
*
*/
private static final long serialVersionUID = 1L;
private javax.servlet.http.HttpServletResponse response; // 获得HttpServletResponse对象
public void setServletResponse(HttpServletResponse response) {
this.response = response;
} public String execute() throws Exception {
response.getWriter().write("实现ServletResponseAware接口");
return null;
}
} /*
* 使用RequestAware拦截器
* 和第1种方法类似。动作类需要实现一个org.apache.struts2.interceptor.RequestAware接口。
* 所不同的是RequestAware将获得一个com.opensymphony.xwork2.util.OgnlValueStack对象,
* 这个对象可以获得response、request及其他的一些信息
*/
class FirstAction extends ActionSupport implements RequestAware {
/**
*
*/
private static final long serialVersionUID = 1L;
private Map request;
private HttpServletResponse response; @Override
public void setRequest(Map request) {
this.request = request;
} public String execute() throws Exception {
java.util.Set<String> keys = request.keySet();
// 枚举所有的key值。实际上只有一个key:struts.valueStack
for (String key : keys)
System.out.println(key);
// 获得OgnlValueStack 对象
OgnlValueStack stack = (OgnlValueStack) request.get("struts.valueStack");
// 获得HttpServletResponse对象
response = (HttpServletResponse) stack.getContext().get(StrutsStatics.HTTP_RESPONSE);
response.getWriter().write("实现RequestAware 接口");
return null;
}
} /**
* struts2中获取HttpServletrequest,HttpServletresponse,HttpSession的四种方式
*
* @author Wei
* @time 2016年10月5日 下午5:23:02
*/
public class LoginAction333 {
public static void main(String[] args) throws IOException { } public void method3() {
/*
* 3、使用ActionContext类,这个很方便
* 我们可以通过org.apache.struts2.ActionContext类的get方法获得相应的对象。代码如下:
*/
HttpServletResponse response = (HttpServletResponse) ActionContext.getContext()
.get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext()
.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
} public void method4() throws IOException {
/*
* 4、最简单的一种,使用ServletActionContext类
* Struts2为我们提供了一种最简单的方法获得HttpServletResponse及其他对象。这就是org.apache.struts2
* .ServletActionContext类。我们可以直接使用ServletActionContext类的getRequest、
* getResponse方法来获得HttpServletRequest、HttpServletResponse对象。
*/
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
response.getWriter().write("hello world");
}
}
Struts2中获取HttpServletRequest,HttpSession等的几种方式的更多相关文章
- Action 中获取表单数据的三种方式
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905 冷血之心的博客) Action 中获取表单提交数据 ...
- struts2中Action訪问servlet的两种方式
一.IoC方式 在struts2框架中,能够通过IoC方式将servlet对象注入到Action中.通常须要Action实现下面接口: a. ServletRequest ...
- Activity启动过程中获取组件宽高的五种方式
第一种:(重写Activity的onWindowFocusChanged方法) /** * 重写Acitivty的onWindowFocusChanged方法 */ @Override public ...
- Day20-单表中获取表单数据的3种方式
1. 搭建环境请参考:http://www.cnblogs.com/momo8238/p/7508677.html 2. 创建表结构 models.py from django.db import m ...
- js中获取页面元素节点的几种方式
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Spring框架中获取连接池常用的四种方式
1:DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所 ...
- SharePoint中获取当前登录的用户名几种方式
第一种方法: System.Web.HttpContext.Current.User.Identity.Name.ToString();或者: SPContext.Current.Site.OpenW ...
- struts2中获取request、response,与android客户端进行交互(文件传递给客户端)
用struts2作为服务器框架,与android客户端进行交互需要得到request.response对象. struts2中获取request.response有两种方法. 第一种:利用Servle ...
- spring mvc 中获取HttpServletRequest ,HttpServletResponse
spring中的bean最常用的 singleton 模式 如果要在springmvc Controller 中获取 HttpServletRequest ,HttpServletResponse ...
随机推荐
- [置顶] block一点也不神秘————如何利用block进行回调
我们在开发中常常会用到函数回调,你可以用通知来替代回调,但是大多数时候回调是比通知方便的,所以何乐而不为呢?如果你不知道回调使用的场景,我们来假设一下: 1.我现在玩手机 2.突然手机没有电了 3.我 ...
- 从零开始Unity3D游戏开发【2 简单的水管工例子】
1.首先,创建一个新的Project. 2.hierarchy(层)窗体下的Create下添加一个plane(平面) 3.调整Main Camera的视角,让panel显示在Game窗体.这一步比较困 ...
- My97DaePicker 用js实现文本框日期相减求天数
<tr> <td align="center" style="background-color: #cccccc;font ...
- 使用sqlplus批量执行脚本的总结
当然,我们可以在plsql中执行,但是在实际生产环境中,可能更多的是使用简便的sqlplus.步骤如下: 1.登陆client sqlplus connect <username>/< ...
- Android快速开发框架汇总
知乎贴:Android 开发有什么好的架构么? 里面这篇不错:Architecting Android…The clean way? 知乎贴: 一.如果对App的性能.包size有要求,对代码有洁癖不 ...
- js生成验证码并且判断
<style type="text/css"> .code { font-family: Arial; ...
- 【转】在SQL Server 2008中SA密码丢失了怎么办?
sql server 2008的sa用户莫名其妙就登陆不进去了.提示如下: 以上提示就表明是密码错误,但密码我可是记得牢牢的,也许是系统被黑的原因吧.一直以来我的Windows身份验证就用不起,以下方 ...
- iis 配置php
1.CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上. CGI可以用任何一种语 ...
- Oracle中的日期和字符串互相转换
转载出处:http://blog.sina.com.cn/s/blog_44a005380100k6rv.html TO_DATE格式(以时间:2007-11-02 13:45:25为例) ...
- SGU 187.Twist and whirl - want to cheat( splay )
维护一个支持翻转次数M的长度N的序列..最后输出序列.1<=N<=130000, 1<=M<=2000 splay裸题... ------------------------- ...