Struts2回忆:struts2获取servlet API

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

猜你喜欢

转载自982699697.iteye.com/blog/2308357
今日推荐