struts2重点、精华、用法总结(六):数据处理机制之值栈
来源:互联网 发布:珍嗖啦淘宝上是真的吗 编辑:程序博客网 时间:2024/06/06 06:59
值栈
1.What:
Struts提供的一个域,对应ValueStack类型,作用在于存储数据,实现action到jsp的数据交互。故其重点为存入数据和读出数据。
作用:管理一次请求有效的数据
优点:与视图层(view层)解耦和。通常我们使用的视图层多为jsp,但视图层并不只有jsp可以实现,还有诸如freemaker和velocity等其他技术,若某一项目前期使用的是jsp+el+jstl标签,若后期访问量和并发不断增多,想要提高web的效率和访问速度,可能会使用以上两种模板技术来进行迭代,但由于jsp多和el、jstl标签配合使用,而以上两种技术又不支持el、jstl,就是更换技术很麻烦,但他们都支持值栈和struts标签,故达到了解耦和的效果。
2.使用:
• 在action中向值栈存入数据。
需要ognl找到对应位置,将数据存入
• 在view层中从值栈中获取数据
需要ognl找到对应位置之后将数据取出。
3.获取方式:
语法:
ValueStackvs = ActionContext.getContext().getValueStack(); //获取值栈
vs.setValue(“ognl”, object); //向ognl指定位置取值
vs.findValue(“ognl”); //想ognl制定的位置存值
注意:其中使用的ognl相关不是原生的ognl,而是经过struts2封装过后的ognl
4.内部存储结构
(1)综述:
(2)context区域:本质上,是一个map
Key value
Request map1 等价于request作用域底层的map
Session map2 等价于session作用域底层的map
Application map3 等价于application作用域底层的map
等价的意思为:数据严格同步
作用:可以通过valuestack统一对三大作用域进行操作
代码示例:
public String vs1(){ ValueStackvs = ActionContext.getContext().getValueStack(); HttpSession session = ServletActionContext.getRequest().getSession(); session.setAttribute("username", "zhnagsan"); String username = (String)vs.findValue("#session.username"); System.out.println("username:"+username); vs.setValue("#request.passwd", "123456"); HttpServletRequest request = ServletActionContext.getRequest(); String passwd = (String)request.getAttribute("passwd"); System.out.println("passwd:"+passwd); return "vsok"; }
(3)Root区域:
此处多放置当前action的对象以及struts标签处理的结果
5.思考:
Valuestack是一次请求有效,为什么可以管理session和application作用域???
原来,值栈并不是直接管理session,而是间接的通过session来管理session.这句话可能有语病,但要表达的意思是对的.值栈相当于一个存放数据的空间,假设其本身就是一个java类,里面有的那些request,session,等,其实只是拿了一个引用,通过这个引用使用session来管理session,这样,值栈的生命周期结束了,也仅仅是代表这个值栈失去了对session的引用,除非再它持有这个引用时,调用session的销毁方法,否则这个值栈的生命周期与session并无任何关系。
- struts2重点、精华、用法总结(六):数据处理机制之值栈
- struts2重点、精华、用法总结(五):数据处理机制之原生OGNL表达式
- struts2重点、精华、用法总结(七):数据处理机制之struts标签
- struts2重点、精华、用法总结(一)
- struts2重点、精华、用法总结(三):Action相关专题
- struts2重点、精华、用法总结(四):多方法控制器
- mybatis重点、精华、用法总结
- struts2重点、精华、用法总结(二):接受请求参数及页面跳转类型
- struts2重点知识点总结
- Struts2 重点总结 (1)
- Struts2 重点总结 (2)
- 8.IPC机制(六重点!!!IPC进程间通讯,自我学习总结)
- 【UML】之重点总结
- 王爽之《汇编语言》学习重点六
- 王爽之《汇编语言》学习重点六
- 【技术重温】html之重点(六)
- C语言之精华总结!
- C语言之精华总结!
- <并查集>luogu 1196 银河英雄传说
- 201612-4 压缩编码 ccf
- Solr之自动聚类。
- 扫荡倾斜摄影单体化难题
- 8
- struts2重点、精华、用法总结(六):数据处理机制之值栈
- Postgres修改logging_collector参数后reload报错的迷惑
- ROS中发布点云信息和里程计消息
- Android 4.4 SystemUI 的面板quicksettings删除
- 解决 Manifest.permission 中 permission无法解析的问题
- Median of Two Sorted Arrays
- 第三方控件
- linux下竞态分析和避免
- git常用命令,git实用命令,linux的git命令,-----2