Action直接访问Servlet API

虽然Struts2提供了ActionContext来访问Servlet API,但这必经不能直接获得Servlet API实例,为此Struts2提供了如下接口:

  • ServletContextAware:实现该接口的Action可以直接访问用户请求的ServletContext实例
  • ServletRequestAware:实现该接口的Action可以直接访问用户请求的HttpServletRequest实例
  • ServletResponseAware:实现该接口的Action可以直接访问用户请求的HttpServletResponse实例

为了直接访问Servlet API,struts2提供了一个ServletActionContext,这个类包含了如下一个静态方法:

  • static PageContext getPageContext():取得Web应用的PageContext对象
  • static HttpServletRequest getRequest():取得Web应用的HttpServletRequest对象
  • static HttpServletResponse getRespnse:取得Web应用的HttpServletResponse对象
  • static ServletContext getServletContext():取得Web应用的ServletContext对象

通过ServletActionContext,也可以直接在Action访问Servlet API,避免Action类需要实现XxxAware接口。但这样Action就与Servlet API直接耦合,不利于程序解耦。

原文地址:https://www.cnblogs.com/prairielonewolf/p/3261110.html