struts2获取requestd session 等web元素的四种方式
2017-10-11 16:46
477 查看
1.通过ActionContext来访问Map类型 request session application对象2通过 RequestAware SessionAware ApplicationAware 接口来访问Map类型的request session application对象(IOC方式)3通过ServletActionContext来访问Servlet API类型的HttpServletRequest HttpSession ServletContext对象(依赖于Servlet API方式)4通过ServletRequestAware接口来访问Servlet API类型的HttpServletRequest HttpSession ServletContext对象(IOC方式)其中,前两种方式与Servlet API解耦合 后两种方式与Servlet API耦合 以下是其简单用法案例package com.struts2.action;import java.util.Date;import java.util.Map;import org.apache.struts2.dispatcher.SessionMap;import com.opensymphony.xwork2.ActionContext;public class ActionContextAction {/*** *如何获取web资源** 1.什么是web资源* HttpServletRequest,ServletContext(application),HttpSession等,即servlet API* 2.为什么要获取web资源* B/S的应用,所以必然要访问到web资源:1.域对象取值赋值,获取realPath,使session失效....* 3.如何获取* 1>解耦的方式获取web资源* 解耦:struts2把原生的servletAPI转化成其对应的Map集合,所以我们可以通过操作Map集合* 达到访问web资源的目的。* 因为web资源是服务器(tomcat)提供的,所以我们使用Map集合操作web资源,则不必须* 启动服务器,可以* 直接利用main方法或者JUnit(单元测试)进行测试,但是一般我们还要启动服务器* 1)通过actionContext对象获取* 2)通过实现接口获取* 两种方式在什么情况下使用:一般情况下使用action上下文对象获取* 如果处理请求的多个方法都需要获取web资源,那么用aware接口比较合适* 2>耦合的方式获取:使用servlet原生api* 1)通过ServletActionContext(action的servlet上下文)获取* 2)通过aware接口实现*/public String execute(){//ActionContext:action上下文对象,我们可以从中获取一切action所需要的资源,包括web资源(Map集合)ActionContext actionContext = ActionContext.getContext();//获取application对应的Map对象Map<String,Object> applicationMap = actionContext.getApplication();//赋值applicationMap.put("applicationKey", "applicationValue");//在jsp页面中用el表达式取得applicationscope下key对应的value//${applicationScope.applicationKey }或${applicationKey }//取index.jsp页面在application中存储的日期Date nowDate = (Date)applicationMap.get("date");System.out.println(nowDate);//获取session对应的Map对象Map<String,Object>sessionMap = actionContext.getSession();System.out.println("sessionMap的类型为"+sessionMap.getClass());sessionMap.put("sessionKey", "sessionValue");//sessionMap对象实际为SessionMap类对象 该类提供了invalidate方法if (sessionMap instanceof SessionMap) {SessionMap sMap = (SessionMap) sessionMap;//清空sessionsMap.invalidate();}//获取request对应的Map对象 *****通过get(“request”)方式获取Map<String,Object>requestMap = (Map<String,Object>)actionContext.get("request");requestMap.put("requestKey", "requestValue");//获取parameters对应的Map对象Map<String, Object>parametersMap = actionContext.getParameters();//不能存 但存了不报错//parametersMap.put("parametersKey", "parametersValue");//对应的url请求:http://localhost:8081/struts2-4-GetServletApi/actionContext-result.action?name=aaa//el取值方式 (因为value为数组所以):parameters: ${parameters.name[0]}return "success";}}package com.struts2.action;import java.util.Map;import org.apache.struts2.interceptor.ApplicationAware;import org.apache.struts2.interceptor.ParameterAware;import org.apache.struts2.interceptor.RequestAware;import org.apache.struts2.interceptor.SessionAware;public class AwareAction implements ApplicationAware,SessionAware,RequestAware,ParameterAware{Map<String, Object> applicationMap;public String execute(){System.out.println("execute");System.out.println("date="+applicationMap.get("date"));return "success";}public String result(){System.out.println("result");return "success";}public String result2(){System.out.println("result2");return "success";}public String result3(){System.out.println("result3");return "success";}//依赖注入//(程序员)依赖(struts2框架)注入(方法的参数)@Overridepublic void setApplication(Map<String, Object> application) {//将注入的application对象赋值给全局变量applicationMap = application;// TODO Auto-generated method stubSystem.out.println("setApplication");}@Overridepublic void setParameters(Map<String, String[]> parameters) {// TODO Auto-generated method stub}@Overridepublic void setRequest(Map<String, Object> request) {// TODO Auto-generated method stub}@Overridepublic void setSession(Map<String, Object> session) {// TODO Auto-generated method stub}}
package com.struts2.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; public class ServletActionContextAction { private static ServletActionContextAction sacaction; public String getServeltApiWithServeltAC(){ //ServletActionContext //得到request HttpServletRequest request = ServletActionContext.getRequest(); //得到session HttpSession session = request.getSession(); //得到application ServletContext application = ServletActionContext.getServletContext(); System.out.println("date:"+application.getAttribute("date")); return "success"; } }package com.struts2.action;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import org.apache.struts2.util.ServletContextAware;public class ServletAwareAction implements ServletContextAware,ServletRequestAware,ServletResponseAware{public String execute(){return "success";}HttpServletRequest request;@Overridepublic void setServletRequest(HttpServletRequest request) {// TODO Auto-generated method stubthis.request = request;}@Overridepublic void setServletContext(ServletContext context) {// TODO Auto-generated method stub}@Overridepublic void setServletResponse(HttpServletResponse response) {// TODO Auto-generated method stub}}
相关文章推荐
- Struts2访问web元素(Request,Session,Application)的四种方式
- struts2获取request、session、application的四种方式
- Struts2中访问web元素的四种方式及前台jsp页面获取后台值的方式
- Struts2中访问web元素的四种方式(访问requst、session、application)
- 在Struts2中访问Web页面元素request、response、session、application的四种方法
- struts2获取request、session、application的四种方式
- Struts2中访问web元素的四种方式及前台jsp页面获取后台值的方式
- Struts2中访问web元素的四种方式及前台jsp页面获取后台值的方式
- struts2获取request、session、application的四种方式
- JAVA_WEB Struts2学习:Struts2解耦、耦合方式获取request、session、aplication对象
- Struts2中访问web元素的四种方式及前台jsp页面获取后台值的方式
- Struts2获取Web容器资源的方式 访问request,session
- struts2获取web元素(request、session、application)
- Struts2 Web 资源获取的四种方式
- 获取struts2中的对象 方式request、session、application、 resp
- struts2获取request,session,application4种方式
- 四种方法获取Struts2 action中的request,session,application
- Struts2中访问web元素的四种方式
- Struts2中action获取request、response、session的方式
- struts2 Action中取得request,session的四种方式