Struts2 Action访问Servlet API的三种方式

Action访问Servlet API的三种方式

使用场景:当Action与Action、Action与JSP之间需要共享、传递数据时,如将Action类中得到的数据在某个JSP页面显示。

1.1 通过ActionContext访问Servlet API(推荐)

Struts2自动为线程创建对应的ActionContext实例。

作用:

  • Struts2保存一些在Action执行过程中所需的对象。
  • 开发人员存取自己的数据。ActionContext的数据结构是一个Map(key-value)。
  • 一个线程有且仅有一个ActionContext实例。使用静态方法ActionContext.getContext()来获取当前线程的ActionContext实例。

Struts2 Action访问Servlet API的三种方式插图

1.2 通过aware拦截器访问Servlet API(不推荐)
  • 实现ServletContextAware接口的setServletContext()方法
  • 实现ServletRequestAware接口的setServletRequest()方法
  • 实现SessionAware接口的setSession()方法
  • 与HttpSession关联的Map对象

Struts2 Action访问Servlet API的三种方式插图(1)

1.3 通过ServletActionContext访问Servlet API

继承于ActionContext。

ServletActionContext利用ThreadLocal来维护不同线程的Servlet API对象。

提供了几个静态方法来获取Servlet API对象

  • getPageContext():PageContext对象
  • getRequest(): HttpServletRequest 对象
  • getResponse():HttpServletResponse对象
  • getSevletContext():SevletContext对象

Struts2 Action访问Servlet API的三种方式插图(2)

选择:

坚决不选择aware拦截器方式 

能用ActionContext(送耦合)的,就不用ServletActionContext(紧密耦合)。

 

 

文章已创建 80

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部