Struts2中的session、request、respsonse获取方法
个人对于struts有一种复杂的心情,平心而论,struts2是个人最早接触到的的框架,在学校的时候就已经开始学习了,大四毕业设计,无疑用的还是struct,那时候SSH还是很流行的,后来出来实习,直接接触的是springmvc ,此时spring版本已经至少是3.X了,记得那时候,看马士兵老师的ssh视频,连马老师都说springMVC用的人很少,估计当时springmvc还没有现在这么流行,虽然现在基本不怎么用struts2,但是学习一种思想还是蛮好的
Struts2中的action跟struts1中的action不一样,struts1中的request、response对象都是通过参数引入的。而struts2对这些对象跟业务逻辑进行了真正的分离,struts对session、request、response等对象进行了封装,获取这些对象也有了不同的方法,下面为两种获取这些对象的方法:
1、通过ServletActionContext.getRequest(),ServletActionContext.getResponse()方法获取request、response对象,然后可以进行操作,session用 request.getSession()获取。
2、action实现org.apache.struts2.interceptor.SessionAware接口,在实现了该接口之后,session、request、response对象都通过IOC的方式进行注入。
所以根据这两种方式的不同,我们又称第一种方式为非IOC方式,第二种方式为IOC方式。
下面的分别举例来说明:
1、首先我们看一下传统的方式(非IOC方式):
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class NonIoCServlet extends ActionSupport { @Override
public String execute() { //获取Session对象
ActionContext.getContext().getSession().put("msg", "Hello World from Session!");
//获取request对象
HttpServletRequest request = ServletActionContext.getRequest(); //获取response 对象
HttpServletResponse response = ServletActionContext.getResponse(); //获取session的另外一种方式
HttpSession session = request.getSession(); //对这些对象的使用
......
return SUCCESS;
}
}
2、接下来看IOC方式:
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware { private Map session;
private HttpServletRequest request;
private HttpServletResponse response; //set注入Session,struts2把session封装成了一个Map
publicvoid setSession(Map att) {
this.att = att;
}
//set注入request对象
publicvoid setServletRequest(HttpServletRequest request) {
this.request = request;
}
//set注入response对象
publicvoid setServletResponse(HttpServletResponse response) {
this.response = response;
} @Override
public String execute() {
//方法中可以对session、request、response进行操作 ...... return SUCCESS;
}
}
Struts2中的session、request、respsonse获取方法的更多相关文章
- Struts2中使用Session的两种方法
在Struts2里,如果需要在Action中使用到session,可以使用下面两种方式: 通过ActionContext 类中的方法getSession得到 Action实现org.apache.st ...
- Struts2中使用Session
嗯,没错,过了这么长时间我还在做我的注册和登录. 登陆的部分自然是从数据库中查找响应的用户信息,然后把一个user放到session里, Action中代码如下: public String Logi ...
- struts2中的session使用
1.1. 如何获取Session 1.1.1. 获取Session的方式 Struts2中获取Session的方式有3种,大家掌握其中任何一种都可以. 通过ActionContext.getConte ...
- struts2中的session、request 、和action往页面中传值的方法
ActionContext.getContext().put("list", list); ActionContext.getContext().getValueStack().p ...
- struts2 中请求转发与请求重定向方法
本文转自:http://blog.csdn.net/a327736051/article/details/50240491 一.Chain Result:这个result调用另外的一个action,连 ...
- struts2 中使用DMI(动态调用方法)方式配置action
1.使用 "!"方式,即 action名称 ! 方法名称 struts.xml 配置 <package name="user" namespace=&qu ...
- Struts2中 radio标签的详细使用方法
首先在页面中引入struts标签库: <%@ taglib prefix="s" uri="/struts-tags"%> 在JSP页面中创建单选按 ...
- 第14.9节 Python中使用urllib.request+BeautifulSoup获取url访问的基本信息
利用urllib.request读取url文档的内容并使用BeautifulSoup解析后,可以通过一些基本的BeautifulSoup对象输出html文档的基本信息.以博文<第14.6节 使用 ...
- 解决在.ashx文件中判断Session 总是NULL的方法
实现IHttpHandler接口的同时必须继承IRequiresSessionState接口,才能拿到session public class HttpHandler: IHttpHandler, I ...
随机推荐
- 【安全组网】思科IOS设备基础应用
思科IOS有2种主要命令行模式:用户模式与特权模式 1.用户模式(user mode),当用“>”表示实在用户模式下 2.特权模式(exec mode),当用"#"表示是在特 ...
- 使用EventLog类写Windows事件日志
在程序中经常需要将指定的信息(包括异常信息和正常处理信息)写到日志中.在C#3.0中可以使用EventLog类将各种信息直接写入Windows日志.EventLog类在System.Diagnosti ...
- Android开发之 android:windowSoftInputMode属性详解
android:windowSoftInputMode activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性. 这个属性能影响两件事情: [一] ...
- poj 2409 Let it Bead && poj 1286 Necklace of Beads(Polya定理)
题目:http://poj.org/problem?id=2409 题意:用k种不同的颜色给长度为n的项链染色 网上大神的题解: 1.旋转置换:一个有n个旋转置换,依次为旋转0,1,2,```n-1. ...
- C# Process.Kill() 拒绝访问(Access Denied) 的解决方案
需求:很多时候我们需要后台运行几个Console来不停的计算数据,那么部署到客户服务器后,如果出现突发异常,程序挂掉了,那...? 解决方案:封装了一个对后台运行程序不停监测的功能,如果发现程序有异常 ...
- EXCEL VB
全面控制 Excel首先创建 Excel 对象,使用ComObj:Dim ExcelID as Excel.ApplicationSet ExcelID as new Excel.Applicatio ...
- [swustoj 327] 最小的最大与最大的最小
最小的最大与最大的最小(0327) Time limit(ms): 2500 Memory limit(kb): 65535 Submission: 329 Accepted: 18 问题描述 又 ...
- oracle 导入导出数据
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.利用 ...
- Ext入门学习系列(四)面板控件
第四章 使用面板 上节学习了Ext复杂对话框,更进一步了解了Ext的运行机制.本章重点来了解Ext所有控件的基础——面板控件. 一.Ext的面板是什么? 同样先来看看几个效果: 基本面板,点击右上角小 ...
- Oracle ORA-00119和ORA-00132的解决方案
今天在启动服务器上的ORACLE时遇到如下错误: SQL> startup; ORA-00119: invalid specification for system parameter LOCA ...