struts2对一些属性的使用和对session封装对象类型采用jstl技术的遍历(配图解)
在struts2中如何实现像jsp中request,session,appliaction的使用。其实有两种方法。下面通过一个案列来说明两个方法的使用。
先写一个test.java类
packagecom.test;
importjavax.servlet.ServletContext;
importjavax.servlet.http.HttpServletRequest;
importorg.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
public class Test {
publicString myMethod(){
ActionContext actionContext=ActionContext.getContext();
actionContext.put("req", "这是一个request");
actionContext.getSession().put("sess", "这是一个seesion");
actionContext.getApplication().put("app", "这是一个application");
return "aa";
}
public String myMethod2()throws Exception{
HttpServletRequestrequest=ServletActionContext.getRequest();
request.setAttribute("req2", "这是一个request2");
request.getSession().setAttribute("sess2", "这是一个seesion2");
ServletContext context=ServletActionContext.getServletContext();
context.setAttribute("app2", "这是一个application2");
return "bb";
}
}
这里面method和method2方法是分别实现request,session,application的例子。不过在正常情况下建议使用方法一。
然后在struts2.Xml中:
<package name="fish"namespace="/test" extends="struts-default">
<action name="redfish"class="com.test.Test" method="myMethod">
<result name="aa">/index.jsp</result>
</action>
<action name="bluefish"class="com.test.Test" method="myMethod2">
<result name="bb">/index.jsp</result>
</action>
</package>
最后在index.jsp中写
${applicationScope.app}<br>
${sessionScope.sess}<br>
${requestScope.req}<br>
${applicationScope.app2}<br>
${sessionScope.sess2}<br>
${requestScope.req2}<br>
我们在浏览器中输入
http://127.0.0.1:8080/struts2test5/test/redfish
可以看到
我们接着在浏览器中输入:
http://127.0.0.1:8080/struts2test5/test/bluefish
可以看到
我们不仅可以看到后面3个,还可以看到前面两个,这更可以说明一个时间session和appliaction的生命周期。
那么如何实现这些request,session,application来实现一个对 对象的封装和拆箱呢。
我们可以在test.JAVA再加一个方法
publicString myMethod3(){
ActionContext actionContext=ActionContext.getContext();
actionContext.getSession().put("sess3",Arrays.asList("雅酷","飞鱼","李四") );
return "cc";
}
}
然后再struts2.XML再加一个action
<action name="yellowfish"class="com.test.Test" method="myMethod3">
<result name="cc">/index.jsp</result>
</action>
在index.JSP加入内容的同时先引入两个jar一个是jstl和standar。使用标签就行遍历。
在jsp的head先加
%@tagliburi="http://java.sun.com/jsp/jstl/core" prefix="fish" %
然后在jsp的body中加入
<fish:forEach items="${sess3}" var="name">
${name}<br>
</fish:forEach>
我们接着在浏览器中输入:
http://127.0.0.1:8080/struts2test5/test/yellowfish
我们可以看到:
对象被遍历出来,但是上面有两句,这次我们已经把服务器停了。却还有两句话,因为session其实他是有生命时间的。所以session的生命周期在随着服务器的关闭而消失是不是很严谨的。Session其实底层是用cookies来完成的。
struts2对一些属性的使用和对session封装对象类型采用jstl技术的遍历(配图解)的更多相关文章
- struts2(三)之表单参数自动封装与参数类型自动转换
前言 对struts2的使用不外乎这几点,参数自动封装,拦截器的使用,数据校验,ognl表达(值栈和actionContext的讲解),struts2的标签,struts2的国际化, struts2的 ...
- struts2各个功能详解(1)----参数自动封装和类型自动转换
struts2里面的各个功能,现在确实都不清楚,完全属于新学! 通过前面的例子,有时就会疑问,这些jsp中的数据信息是怎么传送给action的?例如: <form action = " ...
- Struts2学习(二)———— 表单参数自动封装和参数类型自动转换
前篇文章对struts2的一个入门,重点是对struts2的架构图有一个大概的了解即可,之后的几篇文章,就是细化struts2,将struts2中的各种功能进行梳理,其实学完之后,对struts2的使 ...
- Lodop打印项对象类型属性区分
Lodop提供了一些打印项类型,默认是普通项,通过设置打印对象的类型,可以实现一些普通项不能实现的效果.例如:该博客另一篇博文 标题是Lodop打印控件 打印‘接下一页’‘以下空白’,就用了眉脚项. ...
- Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)
1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的 ...
- JS属性描述符之Object.defineProperty()定义对象属性特性
一.Object.defineProperty的作用 用来给对象新增属性,和修改对象中的属性. 二.JS对象中的描述符 js对象中两种属性描述符:数据描述符和存取描述符(访问描述符). 注意事项: 1 ...
- struts2下velocity做视图如何访问request,session等内置对象,如:原来webwork的$req
struts2下velocity做视图如何访问request,session等内置对象(转) velocity 内置对象 struts2 requestStruts2环境下用velocity做视图时访 ...
- Spring_day01--注入对象类型属性(重点)_P名称空间注入_注入复杂类型属性_IOC和DI区别_Spring整合web项目原理
注入对象类型属性(重点) Action要new一个service对象,Service中又要new一个Dao对象,现在把new的过程交给spring来操作 1 创建service类和dao类 (1)在s ...
- js对象—类型和属性特性
前言 权威指南中摘要的,工作中用不到的,重要的js基础. 三类对象两类属性 内置对象(native object) 是由ECMScript规范定义的对象或者类.例如:函数,数组,日期,正则... 宿主 ...
随机推荐
- free-jqGrid
PM> Install-Package free-jqGrid jqGrid 是一个用来显示网格数据的jQuery插件,通过使用jqGrid可以轻松实现前端页面与后台数据的ajax异步通信.文档 ...
- 讲解HTML服务器推送相关技术知识(转)
1. 为什么需要服务器推送? 最大的优点:实时 健康知识平台重庆男科医院 重庆妇科医院适用场景:实时股票价格.商品价格.实时新闻.Twitter/weibo timeline.基于浏览器的聊天系统 2 ...
- Win7桌面快捷方式全变成某个软件的图标,然后所有快捷方式都只打开这个图标的软件
电脑真是用到老学老好,之前没有遇到的情况,今天终于碰上了. 由于电脑桌面搜狗浏览器图标总不显示,于是选择快捷方式的打开方式为搜狗浏览器,结果,尼玛呀,全部快捷图标都变成搜狗的. 上网找了一下,双击就搞 ...
- WebApp开发经验
1.自适应屏幕 <meta name="viewport" id="viewport" content="width = device-widt ...
- ansible文件模块使用
1. 文件组装模块-assemble assemble主要是将多份配置文件组装为一份配置文件. 参数 必填 默认 选项 说明 Backup 否 No Yes/no 是否创建备份文件,使用时间戳 Del ...
- WebApi参数传递
c# webapi的参数传递方式:1.查询字符串(query string):2.内容主体(content body) 当然也有cookie或url部分或头部信息(header)等其它传方式,这里仅讨 ...
- 有趣的库:pipe(类似linux | 管道)库
pipe并不是Python内置的库,如果你安装了easy_install,直接可以安装它,否则你需要自己下载它:http://pypi.python.org/pypi/pipe 之所以要介绍这个库,是 ...
- 轻松学习Linux之VI编辑器的使用
本文出自 "李晨光原创技术博客" 博客,谢绝转载!
- Hadoop MapReduce概念学习系列之mr程序组件全貌(二十)
其实啊,spilt是,控制Apache Hadoop Mapreduce的map并发任务数,详细见http://www.cnblogs.com/zlslch/p/5713652.html map,是m ...
- [转]软件开发过程(CMMI/RUP/XP/MSF)是与非?
经常看到和听到大家在争论敏捷过程.RUP和CMM 哪个软件开发过程更好或者哪个过程不好,各自都有理由.争论得不亦乐乎......实际上,没有十全十美的过程,也不存在更好的过程.关键是什么样的过程适合自 ...