Struts2 获取WEB对象(作用域,request、application、session) 清除Session的值
2017-08-20 12:12
627 查看
Action中获取web对象
在action中获取web对象的方法有二大类:解耦方式
有的时候程序需要修改,我只需要改正一部分,单是如果程序的耦合性很强的话就需要从头再写一遍很不划算,而正常的开发中都是改那部分,重写那部分,把配置文件一改就成了,java中通过接口(interface),spring技术中的ioc等实现的解耦合
耦合方式
耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。 解耦就是用将其分离开来处理问题。
解耦
用ActionContext获取-
package zking.action; import java.util.Map; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.dispatcher.RequestMap; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; @ParentPackage(value="defaul") @Namespace(value="web_Decoupling") public class Web_Decoupling extends ActionSupport { private static final long serialVersionUID = 1L; public Web_Decoupling() { } @Action(value="/decoupling_Scope",results={@Result(name="success",location="/success.jsp")}) public String decoupling_Scope(){ //解耦方式 取得 session application request //取得action的 上下文 ActionContext actionContext=ActionContext.getContext(); // 在action中解耦 requets 只能,使用RequestMap 不能使用HttpServletRequest RequestMap request=(RequestMap)actionContext.get("request"); request.put("request", "解耦 request中的值"); //取 session Map<String,Object> session=actionContext.getSession(); session.put("session", "解耦 session中的值"); //取application Map<String,Object> application=actionContext.getApplication(); application.put("application", "解耦 application中的值"); return "success"; } }
采用,实现 RequestAware,ApplicationAware,SessionAware 重写方法获取
package zking.action; import java.util.Map; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.dispatcher.SessionMap; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; @ParentPackage(value="defaul") @Namespace(value="web_TestDecouplingAware") public class Web_TestDecouplingAware extends ActionSupport implements RequestAware,ApplicationAware,SessionAware { //定义 接受 request session application 解耦的三个 map集合 private Map<String,Object> request; private Map<String,Object> session; private Map<String,Object> application; private static final long serialVersionUID = 1L; @Action(value="/decoupling_ScopeAware",results={@Result(name="success",location="/success.jsp")}) public String decoupling_ScopeAware(){ //设 request request.put("request", "解耦Aware request中的值 "); //设 session session.put("session", "解耦Aware session中的值"); //设application application.put("application", "解耦Aware application中的值"); //注销 解耦的session中的值 SessionMap<String,Object> seesionmap=(SessionMap<String,Object>)session; //清除 数据 seesionmap.invalidate(); return "success"; } @Override public void setSession(Map<String, Object> arg0) { //取得 解耦的session this.session=arg0; } @Override public void setApplication(Map<String, Object> arg0) { //取得 解耦的application this.application=arg0; } @Override public void setRequest(Map<String, Object> arg0) { //取得 解耦的request this.request=arg0; } }
耦合
从ServletActionContext获取package zking.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionSupport; @ParentPack c9a2 age(value="defaul") @Namespace(value="web_Servlet_Coupling") public class Web_Servlet_Coupling extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; @Action(value="/getServletScope",results={@Result(name="success",location="/success.jsp")}) public String getServletScope(){ //耦合方式 //取到request HttpServletRequest request=ServletActionContext.getRequest(); //取到session HttpSession session=request.getSession(); //取到 application ServletContext application=ServletActionContext.getServletContext(); //设 request request.setAttribute("request", "耦合 request中的值 "); //设 session session.setAttribute("session", "耦合 session中的值"); //设application application.setAttribute("application", "耦合 application中的值"); //耦合 清除 session中的值 session.invalidate(); return "success"; } }
实现xxxAware接口获取 这里的xxx泛指 作用域
-
package zking.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.util.ServletContextAware; import com.opensymphony.xwork2.ActionSupport; @ParentPackage(value="defaul") @Namespace(value="web_Servlet_Coupling_Aware") public class Web_Servlet_Coupling_Aware extends ActionSupport implements ServletRequestAware,ServletContextAware{ //建立 request session application 三个作用域 属性 private HttpServletRequest request; private HttpSession session; private ServletContext application; /** * */ private static final long serialVersionUID = 1L; @Action(value="/getServletScope",results={@Result(name="success",location="/success.jsp")}) public String getServletScope(){ //耦合方式 //设 request request.setAttribute("request", "耦合Aware request中的值 "); //设 session session.setAttribute("session", "耦合Aware session中的值"); //设application application.setAttribute("application", "耦合Aware application中的值"); return "success"; } @Override public void setServletContext(ServletContext arg0) { //取到 applicaton this.application=arg0; } @Override public void setServletRequest(HttpServletRequest arg0) { //取到 requset this.request=arg0; //从请求中,取到session session=this.request.getSession(); } }
清除session中的值
清除session值的方式也分二种:解耦
//注销 解耦的session中的值 SessionMap<String,Object> seesionmap(SessionMap<String,Object>)session; //清除 数据 seesionmap.invalidate();
耦合
//耦合 清除 session中的值 session.invalidate();
思维导图
相关文章推荐
- Struts 2 的Action中如何获取request、response、session、application等web元素(1)
- struts2 获取"作用域"对象Request Session Application和Aware 接口
- Struts 2 的Action中如何获取request、response、session、application等web元素(2)
- struts2 获取"作用域"对象:Request Session Application 与 Aware 接口的使用
- Struts2中获取|session|application|request|对象(七)
- Struts2中获取request,session,application对象
- web对象page、request、session、application的生命周期
- Struts2在Action获取内置对象request,session,application(即ServletContext)
- 在ActionSupport类中获取request、session、application,并且放一些对象进去
- Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)
- 编写一个JSP文件,使用pageContext内置对象来获取由session、request和application内置对象设置的属性。
- 9.Struts2在Action中获取request-session-application对象
- Structs2中的参数传递方式以及对Web对象(request,session,application)的操作
- Jsp的pageContext,request,session,application4个域对象的属性作用范围
- web对象page、request、session、application的生命周期
- struts2在Action中获取Scope中的对象request、session、application
- Struts2中获取request,session,application对象
- Struts2初学 Struts2在Action获取内置对象request,session,application(即ServletContext)
- Struts2的Action中获取request,session,application对象
- [Struts2] 如何访问或添加request/session/application属性, 以及获取对象.