转自: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. sql优化-总结

    1.尽量缩小数据范围. 2.能一个sql解决的,坚决不用两条sql.利用case when或decode. select month_id, corppkno, sum(exportSum_new) ...

  2. iOS获取手机当前的网络状态

    获取iOS网络状态,目前有两个办法. 1.通过监听手机状态栏的信息. 2.通过使用官方提供的类Reachability. 一.通过手机监听手机状态栏的信息 好处: 1.可以通过苹果的审核上架AppSt ...

  3. Effective JavaScript Item 36 实例状态仅仅保存在实例对象上

    本系列作为EffectiveJavaScript的读书笔记. 一个类型的prototype和该类型的实例之间是"一对多"的关系.那么,须要确保实例相关的数据不会被错误地保存在pro ...

  4. javaScript操作select

    注意:Option中的O是要大写的,不然语法报错 1.动态创建select       function createSelect(){ var mySelect = document.createE ...

  5. JQ工具函数运用

    1.把对象转换为字符串 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <he ...

  6. C++ DLL注册

    今天项目中需要用C++实现对几个DLL文件的注册,查了许多资料,总结如下: #include <SHLWAPI.H> #pragma region DLL 注册与反注册 add by wh ...

  7. C# OR/Mapping 数据处理模式学习

    为什么要提出O/R Mapping概念 程序语言已经由面向过程的模型全面转向为面向对象的模型,UML的出现更加革新了软件开发方法论.然而数据库模型却从未随着开发语言的进步而随之革新,仍然使用面向关系的 ...

  8. android listview 重用view导致的选择混乱问题

    20150526 listview是常用的控件,经常用自定义的adapter,为了提高显示效率,常利用view的重用方式防止重绘,但因为重用利用的是旧的view,常导致显示的数据会由于position ...

  9. Windows Server 2003 安装Sql Server 2005 问题处理

    安装途中遇到: 问题1.无法找到产品Microsoft SQL Server Native Client的安装程序包.请使用安装包sqlncli.msi的有效副本重新安装? 答:安装SQL Serve ...

  10. R与数据分析旧笔记(十八完结) 因子分析

    因子分析 因子分析 降维的一种方法,是主成分分析的推广和发展 是用于分析隐藏在表面现象背后的因子作用的统计模型.试图用最少的个数的不可测的公共因子的线性函数与特殊因子之和来描述原来观测的每一分量 因子 ...