Struts2访问session的两种方法.doc_第1页
Struts2访问session的两种方法.doc_第2页
Struts2访问session的两种方法.doc_第3页
Struts2访问session的两种方法.doc_第4页
Struts2访问session的两种方法.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

struts2访问session的两种方法 央邦0首付,低押金先就业后付款 上海央邦学一送一,超值!50000年薪起,顶级4G手机开发! 【安博亚威】CCIE考试通过率第一! Windows高级工程师的培训地java培训到达内,行业领先品牌 中国IT实验室收集整理佚名 2012-8-21 10:37:46 保存本文 推荐给好友 收藏本页欢迎进入Java社区论坛,与200万技术人员互动交流 进入 Struts2 的Action中若希望访问Session对象,可采用两种方式: 1、从ActionContext中获取; 2、实现SessionAware接口。 1、从ActionContext中获取: import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class SessionTestAction extends ActionSupport public String execute() ActionContext actionContext = ActionContext.getContext(); Map session = actionContext.getSession(); session.put(USER_NAME, Test User); return SUCCESS; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class SessionTestAction extends ActionSupport public String execute() ActionContext actionContext = ActionContext.getContext(); Map session = actionContext.getSession(); session.put(USER_NAME, Test User); return SUCCESS; 2、实现SessionAware接口: java view plaincopyprint? import java.util.Map; import erceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; public class SessionTest1Action extends ActionSupport implements SessionAware private Map session; public void setSession(Map session) this.session = session; public String execute() this.session.put(USER_NAME, Test User 1); return SUCCESS; import java.util.Map; import erceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; public class SessionTest1Action extends ActionSupport implements SessionAware private Map session; public void setSession(Map session) this.session = session; public String execute() this.session.put(USER_NAME, Test User 1); return SUCCESS; 进一步阅读Struts源码,SessionAware接口的实现方式如下: struts-default.xml配置: 打开ServletConfigInterceptor.java源码: public String intercept(ActionInvocation invocation) throws Exception final Object action = invocation.getAction(); final ActionContext context = invocation.getInvocationContext(); if (action instanceof SessionAware) (SessionAware) action)。setSession(context.getSession(); return invocation.invoke(); public String intercept(ActionInvocation invocation) throws Exception final Object action = invocation.getAction(); final ActionContext context = invocation.getInvocationContext(); if (action instanceof SessionAware) (SessionAware) action)。setSession(context.getSession(); return invocation.invoke(); 即在拦截器处理过程中发现目标Action实现了SessionAware接口,便会调用Action中已经实现的setSession() 方法,将ActionContext中包装的Session注入目标Action中。目标Action也就可以进一步对Session进行操作了。Struts2笔记 Struts2中访问Web元素的3中方法本文由 arthinking 发表于806 天前 J2EE 暂无评论 被围观 3,422 views+1、通过RequestAware,SessionAware,ApplicationAware获取:在Struts2中不能直接访问Request,Session,Application元素,但是可以使用Struts2中提供的RequestAware,SessionAware,ApplicationAware。在这里要分别为三个对象提供setter方法,以便让struts自动执行,使用IoC(控制反转)进行赋值。下面的LoginAction使用ModelDriven获取User,放入Session中,并在request和application中分别放入“test1”和“test2”。LoginAction:public class LoginAction extends ActionSupport implements ModelDriven,RequestAware,SessionAware, ApplicationAware private Map request; private Map session; private Map application; private User user = new User(); public void setSession(Map session) this.session = session; public void setRequest(Map request) this.request = request; public void setApplication(Map application) this.application = application; public void setUserService(UserServiceImpl userService) this.userService = userService; public String execute() session.put(user, userRe); request.put(req, test1); application.put(app, test2); return result; 在页面中读取保存的数据可以用HttpServletRequest,HttpSession,ServletContext等直接访问,也可以使用Struts标签通过Stack Context访问。在页面中可以按照以下方式读取保存的数据:img class=user_photo src= / 2、通过ActionContext获取Map类型的元素:private Map request; private Map session; private Map application; /可以在构造方法中取值 public LoginAction1() request = (Map)ActionContext.getContext().get(request); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); public String execute() request.put(r1, r1); session.put(s1, s1); application.put(a1, a1); return SUCCESS; 3、通过ServletActionContext获取原始的web元素类型:private HttpServletRequest request; private HttpSession session; private ServletContext application; public LoginAction3() request = ServletActionContext.getRequest(); session = request.getSession(); application = session.getServletContext(); struts2访问web元素 2011-12-30 21:13:36| 分类: struts2 | 标签:struts2访问web元素 |字号 订阅取得Map类型的request、session、application、真实类型的HttpServletRequest、HttpSession、HttpServletApplication第一种方式:在Action中取得Map类型的request、session、application 依赖于容器的方式public class LoginAction1 extends ActionSupport private Map request; private Map session; private Map application; /构造函数 public LoginAction1() request = (Map)ActionContext.getContext().get(request); /为什么直接在get里面填写request就可以取得Map类型的request了呢?这是为什么呢 /我们可以在jsp的页面上使用,就可以发现在debug中有两部分内容/第一部分:Value stack(值栈) 其中包含的是一些Action中的属性、errors、fieldErrors、actionErrors等内容/这些值可以在页面上用取出错误信息 或 /第二部分:Stack Context 也就是ActionContext (action的上下文环境),其中就包括了许多的key和对应的value/在key的取值中就有request,所以上面用get(request)的方式就会取到Map类型的request值/还有一点需要注意,在页面上访问ActionContext中的值时需要使用 #key 的方式。 session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); public String execute() request.put(r1,r1); session.put(s1,s1); application.put(a1,a1); request SUCCESS; 前台jsp页面访问时,可以这样来访问: | | | /attr会自动搜索request,session,application范围搜索 第二种方式: IOC方式 public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware private Map request; private Map session; private Map application; /DI dependency injection /IoC inverse of control public String execute() request.put(r1, r1); session.put(s1, s1); application.put(a1, a1); return SUCCESS; Override public void setRequest(Map request) this.request = request; Override public void setSession(Map session) this.session = session; Override public void setApplication(Map application) this.application = application; 其中的aware(得知,知道的意思),需要重写对应的方法第三种方法:获得HttpServletRequest、HttpSession、HttpServletApplication 依赖于容器的方式public class LoginAction3 extends ActionSupport private HttpServletRequest request; private HttpSession session; private ServletContext application; public LoginAction3() request = ServletActionContext.getRequest(); session = request.getSession(); application = session.g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论