转自: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等的几种方式的更多相关文章

  1. Action 中获取表单数据的三种方式

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905  冷血之心的博客) Action 中获取表单提交数据 ...

  2. struts2中Action訪问servlet的两种方式

    一.IoC方式                在struts2框架中,能够通过IoC方式将servlet对象注入到Action中.通常须要Action实现下面接口: a. ServletRequest ...

  3. Activity启动过程中获取组件宽高的五种方式

    第一种:(重写Activity的onWindowFocusChanged方法) /** * 重写Acitivty的onWindowFocusChanged方法 */ @Override public ...

  4. Day20-单表中获取表单数据的3种方式

    1. 搭建环境请参考:http://www.cnblogs.com/momo8238/p/7508677.html 2. 创建表结构 models.py from django.db import m ...

  5. js中获取页面元素节点的几种方式

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. Spring框架中获取连接池常用的四种方式

    1:DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所 ...

  7. SharePoint中获取当前登录的用户名几种方式

    第一种方法: System.Web.HttpContext.Current.User.Identity.Name.ToString();或者: SPContext.Current.Site.OpenW ...

  8. struts2中获取request、response,与android客户端进行交互(文件传递给客户端)

    用struts2作为服务器框架,与android客户端进行交互需要得到request.response对象. struts2中获取request.response有两种方法. 第一种:利用Servle ...

  9. spring mvc 中获取HttpServletRequest ,HttpServletResponse

    spring中的bean最常用的 singleton 模式 如果要在springmvc Controller 中获取  HttpServletRequest ,HttpServletResponse ...

随机推荐

  1. 字符串匹配——KMP算法

    关于KMP算法的分析,我觉得这两篇博客写的不错: http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html ht ...

  2. oracle任务计划debug

    crontab -eno crontab for root - using an empty onecrontab: installing new crontab"/tmp/crontab. ...

  3. [置顶] How to compile openjdk 7 in RHEL5

    1. 为什么要编译openjdk的code? 因为从Eclipse调试JDK的代码时,方法中的局部变量不能显示,这样是因为编译JDK时,没有编译成debug版本. 2. RHEL5中自带的开发者JDK ...

  4. IBM中枪后,下一个是谁?

    冯强/文 在之前的博文<信息战第二弹:中国对美国咨询公司Say no>我以前提到对美国咨询服务公司在国企开展业务的限制.有可能波及IBM.Microsoft.Google.CISCO.Or ...

  5. VBA 开发学习--基础语法2

    VBA中的运算符 算数运算符及其作用 + 求两个数的和 -  求两个数的差:求一个数的相反数 *  求两个数的积 /   求两个数的商(保留小数位   5/2=2.5) \   整除 (保留整数位  ...

  6. SQL练习之求解填字游戏

    SELECT * FROM dbo.spt_values

  7. <转>机器学习笔记之奇异值分解的几何解释与简单应用

    看到的一篇比较好的关于SVD几何解释与简单应用的文章,其实是有中文译本的,但是翻译的太烂,还不如直接看英文原文的.课本上学的往往是知其然不知其所以然,希望这篇文能为所有初学svd的童鞋提供些直观的认识 ...

  8. CSS3六边形

    <!DOCTYPE html> <!-- saved from url=(0043)http://dbox.whosemind.net/demo/liufang.html --> ...

  9. matlab GUI之常用对话框(三)-- dialog \ errordlg \ warndlg \ helpdlg \ msgbox \questdlg

    常用的对话框(三) 1.普通对话框  dialog 调用格式: h=dialog('PropertyName','PropertyValue'......) %普通对话框 h=dialog( ]); ...

  10. hbase 单机安装问题

    报zookeeper exception not found I fixed this by editing the file "/usr/local/hbase-0.94.1/conf/h ...