struts2-Action访问Servlet API

struts2中Action并没有直接和servletAPI进行耦合
1.通过ActionContent类访问

方法一:(一般推荐使用,IOC方式,只能获得request,而response则得不到)
Struts2提供了ActionContext类,通过ActionContext类访问Servlet API。
 
下面是ActionContext类中包含的几个常用方法。
 
1、public Object get(Object key):取得HttpServletRequest中key的值;
2、void put(String key,Object value):设置HttpServletRequest中key的值为value;
3、public Map getApplication():获取封装了ServletContext的Map对象;
4、void setApplication(Map application):设置ServletContext实例;
5、static ActionContext getContext():静态方法,获取系统的ActionContext实例;
6、Map getParameters():类似于HttpServletRequest中的getParametersMap方法;
7、public Map getSession():获取封装了HttpSession的Map对象;
8、void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换为session的属性名和属性值;

方法二:(不推荐,麻烦,非IOC方式,与Servlet API耦合大)
虽然Struts2提供了ActionContext来访问Servlet API,但这种访问不能直接获得Servlet API,为了在Action中直接访问Servlet API,Struts2还提供了以下接口。
 
1、ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例;
2、ServletRequestAware:实现该接口的Action可以直接访问用户请求对象的HttpServletRequest的实例;
3、ServletResponseAware:实现该接口的Action可以直接访问服务器响应的HttpServletResponse的实例;
方法三:(非IOC方式,强烈推荐使用)
Struts2还提供了一个ServletActionContext,其静态方法有:getPageContext()、getRequest() 、getResponse()、getServletContext()。
 
1、HttpServletRequest request=ServletActionContext.getRequest();
2、HttpServletResponse response=ServletActionContext.getResponse();
3、request.getSession().setAttribute("username","admin");
4、request.setAttribute("password","123456");

你可能感兴趣的:(struts2-Action访问Servlet API)