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;
}