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 ...
随机推荐
- c_str()
1.string类成员函数c_str()的原型: const char *c_str()const;//返回一个以null终止的c字符串 2.c_str()函数返回一个指向正规c字符串的指针,内容和s ...
- sql中复合组建解析
每个表只能有一个主键 唯一键/约束可以多个 复合主键是指复合唯一,比如: 1 1 1 2 2 1 2 2 单看任何一列都不是唯一,但组合起来就是唯一的. Create Table 表名 (字段名1 I ...
- UnicodeEncodeError: 'latin-1' codec can't encode character 解决sae flask 中文问题
#encoding=utf-8 #中文编码支持 import MySQLdb from flask import Flask, g, request app = Flask(__name__) app ...
- iOS 点转成字符串,再字符串转换成点
CGPointFromString(<#NSString *string#>) NSStringFromCGPoint(<#CGPoint point#>)
- 向上取整Ceil,向下取整Floor,四舍五入Round
几个数值函数的功能实现: (1)int Ceil(float f) int Ceil(float f) { int integer = (int)f; if (f > (float)intege ...
- BHO启动IE调试
如下图选择Web Browser Debugger, 输入启动网址
- Oracle游标使用详解
转自:http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html 声明游标:CURSOR cursor_name IS select_st ...
- hadoop搭建杂记:Linux下虚拟机集群网络搭建
VirtualBox搭建hadoop伪分布式模式 VirtualBox搭建hadoop伪分布式模式 master: ip:192.168.56.120 机器名: master 启动NameNode 启 ...
- 搭建Ubuntu环境中的Error [dpkg 被中断,您必须手工运行 sudo dpkg --configure -a 解决此问题][安装Flashplayer出错 ]
//解决方法如下: sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock sudo dpkg -r flashplugin-i ...
- 分享一个MD5加密工具类
来自:http://blog.csdn.net/zranye/article/details/8234480 Es:http://blog.csdn.net/longxibendi/article/d ...