Struts2 获取servlet api 有以下几种方式:
1.与servlet 解耦的方式:
1)通过获取ActionContext实例 获取对应的map对象
action代码:
//获取ActionContext 实例
ActionContext ac =ServletActionContext.getContext();
//获取request
/*Map request= (Map) ac.get("request");
request.put("username", username);*/
//获取session
/* Map session=ac.getSession();
session.put("username", username);*/
//获取application
Map application= ac.getApplication();
application.put("username", username);
表單:
<h4>欢迎${requestScope.username}来到xxxx系统</h4> <h4>欢迎${sessionScope.username}来到xxxx系统</h4> <h4>欢迎${applicationScope.username}来到xxxx系统</h4>
2.实现aware接口 由action实例注入对应的map对象
代码:
public class TestAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{ private Map<String, Object> application; public void setApplication(Map<String, Object> application) { this.application=application; } private Map<String, Object> session; public void setSession(Map<String, Object> session) { this.session=session; } private Map<String, Object> request; public void setRequest(Map<String, Object> request) { this.request=request; }
回显代码 略
2.与servlet 耦合的方式
1.ServletActionContext 对象获取httprequest 和servletcontext
//耦合 //获取request HttpServletRequest request =ServletActionContext.getRequest(); //获取session HttpSession session =request.getSession(); //获取 servlet 的上下文 ServletContext context = ServletActionContext.getServletContext(); /* 获取web容器初始化参数 (应用:strus2 自定义类型转换器需要用到的) * context.getInitParameter(""); * 获取application真实路径 (应用:struts2文件上传必须要用到的) * context.getRealPath(""); */
2)通过实现 ServletRequestAware 接口 和 ServletContextAware接口
由action实例注入对应的 httprequest 和servletcontext
implements ServletContextAware ,ServletRequestAware private HttpServletRequest request; public void setServletRequest(HttpServletRequest request) { // TODO Auto-generated method stub this.request=request; } private ServletContext context; public void setServletContext(ServletContext context) { // TODO Auto-generated method stub this.context=context; }