Struts2提供了ActionContext类来访问ServletAPI
- ActionContext中常用的方法
- Object get(Object key):类似于调用HttpServletRequest的getAttribute(String name)方法
- Map getApplication(): 模拟了该应用的ServletContext实例
- static ActionContext getContext():获取系统的ActionContext实例
- Map getParameters():获取所有请求参数
- Map getSession():模拟了HttpSession实例
- void setApplication(Map application):将Map实例里的key:value值转换成application的属性名和属性值
- void setSession(Map session):将Map实例里的key:value值转换成session的属性名和属性值
- request , session 和 application 只是作用范围不同,相当于不同作用范围的仓库
更加直接的方式访问Servlet API
- Action实现以下接口:
- ServletContextAware : 直接访问WEB应用的ServletContext实例
- ServletRequestAware : 直接访问用户请求的HttpServletRequest实例
- ServletResponseAware : 直接访问服务器响应的HttpServletResponse实例
- Cookie
- 此处HttpServletResponse不能生成服务器响应,例如:
- response.getWriter().println(“hello,world”);
使用ServletActionContext访问Servlet API
- ServletActionContext包含了如下静态方法:
- static PageContext getPageContext() : 取得WEB应用的PageContext对象.
- static HttpServletRequest getRequest() : 取得WEB应用的HttpServletRequest 对象
- static HttpServletResponse getResponse() : 取得WEB应用的HttpServletResponse 对象.
- static ServletContext getServletContext() : 取得WEB应用的ServletContext 对象.
- 虽然此方法不用实现XxxAware接口,但是Action仍与Servlet API 直接耦合,不利于高层解耦.