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直接耦合,不利于程序解耦。