Action访问Servlet API的对象
1,Action访问ActionContext的方式:(request session application)
Struts2中的Action与Servlet API完全分离,但是在实现业务逻辑处理是,经常需要访问Servlet中的一些对象,如request,session,application等,struts2提供ActionContext类,在Action中通过该类获取Servlet中的参数
创建ActionContext实例的方法如下:
ActionContext ac=ActionContext.getContext();
常用的方法如下:
1,Object get(Object key);//在ActionContext中查找key值
2,Map getAppliCation();//返回一个application 对象,相当于jsp的application对象
3,static ActionContext getContext()//获取当前线程的ActionContext对象
4,Map getParameter()//返回一个Map类型所有HttpServletRequest 相当于jsp中的request对象
5,Map getsession()//返回Map类型的HttpSession值,相当于jsp中的session对象
6,void put(Object key,Object value)//向当前的ActionContext存入值
7,void setApplication( Map application)//设置application对象的上下文
8,void setSession(Map session)//设置session的值
package login;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {/*** */private static final long serialVersionUID = 1L;private String userName;private String password;//属性要与jsp显示组件的那么值相同public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String execute(){if(getUserName().equals("QQ")&&getPassword().equals("123")){//获取ActionContextActionContext ac=ActionContext.getContext();//把登录名放进application中ac.getApplication().put("useName",getUserName());//吧登录名放进session中ac.getSession().put("userName", getUserName());return SUCCESS;}else{return INPUT;}}}
2,Action直接访问Servlet.(request response session)
在struts2中通过IoC的方式把servlet对象注入到Action中,需要在Action中实现以下接口:
(1),ServletRequestAware:实现该接口的Action可以直接访问request对象,该接口中提供void setServletRequest(HttpServletRequest request);
(2),ServletResponseAware:实现该接口的Action可以直接访问response对象,该接口中提供void setServletResponse(HttpServletResponse response);
(3),SessionAware:实现该接口的Action可以直接访问session对象,该接口中提供void setSession(Map session);
package login;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.apache.struts2.interceptor.ServletRequestAware;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport implements ServletRequestAware{/*** */private static final long serialVersionUID = 1L;private String userName;private String password;//属性要与jsp显示组件的那么值相同private HttpServletRequest request; //可以直接使用requestpublic String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic void setServletRequest(HttpServletRequest arg0) {// TODO Auto-generated method stubrequest=arg0;//实现该方法赋值}public String execute(){if(getUserName().equals("QQ")&&getPassword().equals("123")){//通过request对象获取session对象HttpSession session=request.getSession();//把用户名放入session中session.setAttribute("userName", getUserName());return SUCCESS;}else{return INPUT;}}}
3,非IOC的方式,辅助类ServletActionContext帮助获得servlet.
常用方法:
<span style="font-size:24px;">static getRequest();//获取request对象
static getResponse();//获取response对象</span>
<span style="font-size:24px;">import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {/*** */private static final long serialVersionUID = 1L;private String userName;private String password;//属性要与jsp显示组件的那么值相同public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String execute(){if(getUserName().equals("QQ")&&getPassword().equals("123")){//调用ServletActionContext的getRequest方法获得request对象HttpServletRequest request=ServletActionContext.getRequest();//通过request对象获取session对象HttpSession session=request.getSession();//把用户名放入session中session.setAttribute("userName", getUserName());return SUCCESS;}else{return INPUT;}}}</span>
Action访问Servlet API的对象相关推荐
- Action访问Servlet API的三种方法
一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...
- Struts2中Action访问Servlet API的三种方法
Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action.但如何访问? ...
- 关于Struts2三种访问Servlet API方式的总结
在开发j2ee过程中,通常我们需要访问的Servlet API是:HttpSession,HttpservletRequest,ServletContext,这三者分别对应于JSP的内置对象:sess ...
- struts2中访问servlet API
Struts2中的Action没有与任何Servlet API耦合,,但对于WEB应用的控制器而言,不访问Servlet API几乎是不可能的,例如需要跟踪HTTP Session状态等.Struts ...
- struts2 - ation 访问 Servlet api
Web 应用中通常需要访问的 Servlet Api 就是 HttpServletRequest .HttpSession 和 ServletContext,这三个接口分别代表 JSP内置对象中的 r ...
- Struts2 Action与Servlet API耦合
单元测试在开发中是非常重要的一个环节 程序员在写完代码时,相应的单元测试也应写完整,否则你的代码就是不能让人信服的 Struts2将Action与Servlet的API进行解耦之后,就使得单元测试变得 ...
- Struts(八)Strits2访问servlet API
1.获得servlet API的两种方法 (1).ServletActionContext类(基本都是静态方法) public static HttpServletRequet getRequest( ...
- struts的action访问servlet的IOC方式与非IOC方式
这是IOC方式,要实现相应接口 package loginAction; import com.opensymphony.xwork2.ActionSupport; import javax.serv ...
- (转)Struts2访问Servlet的API及......
http://blog.csdn.net/yerenyuan_pku/article/details/67315598 Struts2访问Servlet的API 前面已经对Struts2的流程已经执行 ...
最新文章
- nginx内置变量 大全
- 计算机科学与技术专业术语
- 华为网赛云数据中心基础原理自测答案
- 开启多媒体台式计算机过程,计算机硬件的组成多媒体教学课件制作
- nginx php返回500错误,nginx环境thinkphp,500错误
- for循环与内置方法详解
- nginx做正向代理http,内网主机yum安装外网资源
- Java突击学习 Day1
- Kafka 配置参数汇总及相关说明
- 记tcp网络编程中遇到的readline()方法
- linux安装monaco字体
- 如何录屏制作gif图片
- linux设计论文题目,计算机linux本科毕业论文题目
- 高速列车运行调度控制仿真软件SimTrain
- WYSE S10、WYSE V90、HP T5740瘦客机评测
- Emacs中学习gdb调试
- spring mvc
- 基于STM32F103RCT6的二维码显示实验
- 区块链技术与支付_区块链技术将如何确保在线支付
- 用html制作三角形九九乘法表,用js实现打印九九乘法表