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的对象相关推荐

  1. Action访问Servlet API的三种方法

    一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...

  2. Struts2中Action访问Servlet API的三种方法

    Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action.但如何访问? ...

  3. 关于Struts2三种访问Servlet API方式的总结

    在开发j2ee过程中,通常我们需要访问的Servlet API是:HttpSession,HttpservletRequest,ServletContext,这三者分别对应于JSP的内置对象:sess ...

  4. struts2中访问servlet API

    Struts2中的Action没有与任何Servlet API耦合,,但对于WEB应用的控制器而言,不访问Servlet API几乎是不可能的,例如需要跟踪HTTP Session状态等.Struts ...

  5. struts2 - ation 访问 Servlet api

    Web 应用中通常需要访问的 Servlet Api 就是 HttpServletRequest .HttpSession 和 ServletContext,这三个接口分别代表 JSP内置对象中的 r ...

  6. Struts2 Action与Servlet API耦合

    单元测试在开发中是非常重要的一个环节 程序员在写完代码时,相应的单元测试也应写完整,否则你的代码就是不能让人信服的 Struts2将Action与Servlet的API进行解耦之后,就使得单元测试变得 ...

  7. Struts(八)Strits2访问servlet API

    1.获得servlet API的两种方法 (1).ServletActionContext类(基本都是静态方法) public static HttpServletRequet getRequest( ...

  8. struts的action访问servlet的IOC方式与非IOC方式

    这是IOC方式,要实现相应接口 package loginAction; import com.opensymphony.xwork2.ActionSupport; import javax.serv ...

  9. (转)Struts2访问Servlet的API及......

    http://blog.csdn.net/yerenyuan_pku/article/details/67315598 Struts2访问Servlet的API 前面已经对Struts2的流程已经执行 ...

最新文章

  1. nginx内置变量 大全
  2. 计算机科学与技术专业术语
  3. 华为网赛云数据中心基础原理自测答案
  4. 开启多媒体台式计算机过程,计算机硬件的组成多媒体教学课件制作
  5. nginx php返回500错误,nginx环境thinkphp,500错误
  6. for循环与内置方法详解
  7. nginx做正向代理http,内网主机yum安装外网资源
  8. Java突击学习 Day1
  9. Kafka 配置参数汇总及相关说明
  10. 记tcp网络编程中遇到的readline()方法
  11. linux安装monaco字体
  12. 如何录屏制作gif图片
  13. linux设计论文题目,计算机linux本科毕业论文题目
  14. 高速列车运行调度控制仿真软件SimTrain
  15. WYSE S10、WYSE V90、HP T5740瘦客机评测
  16. Emacs中学习gdb调试
  17. spring mvc
  18. 基于STM32F103RCT6的二维码显示实验
  19. 区块链技术与支付_区块链技术将如何确保在线支付
  20. 用html制作三角形九九乘法表,用js实现打印九九乘法表

热门文章

  1. linux mktime函数会受当前环境变量设置的时区影响
  2. 高斯过程回归(GPR)—— 数学推导
  3. word2vec原理(三): 基于Negative Sampling的模型
  4. 图形基础 GPU架构(4)GPU CPU
  5. Securing Data With Blockchain and AI(基于区块链和人工智能的数据保护)
  6. 【Flask项目2】项目基本架构配置(1)
  7. 01-Secure Payload Dispatcher (SPD)
  8. 静态反调试技术(1)
  9. 2020-11-5(安卓)
  10. pwndbg用docker实现,进行题目分析