在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技术的遍历(配图解)的更多相关文章

  1. struts2(三)之表单参数自动封装与参数类型自动转换

    前言 对struts2的使用不外乎这几点,参数自动封装,拦截器的使用,数据校验,ognl表达(值栈和actionContext的讲解),struts2的标签,struts2的国际化, struts2的 ...

  2. struts2各个功能详解(1)----参数自动封装和类型自动转换

    struts2里面的各个功能,现在确实都不清楚,完全属于新学! 通过前面的例子,有时就会疑问,这些jsp中的数据信息是怎么传送给action的?例如: <form action = " ...

  3. Struts2学习(二)———— 表单参数自动封装和参数类型自动转换

    前篇文章对struts2的一个入门,重点是对struts2的架构图有一个大概的了解即可,之后的几篇文章,就是细化struts2,将struts2中的各种功能进行梳理,其实学完之后,对struts2的使 ...

  4. Lodop打印项对象类型属性区分

    Lodop提供了一些打印项类型,默认是普通项,通过设置打印对象的类型,可以实现一些普通项不能实现的效果.例如:该博客另一篇博文 标题是Lodop打印控件 打印‘接下一页’‘以下空白’,就用了眉脚项. ...

  5. Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)

    1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的 ...

  6. JS属性描述符之Object.defineProperty()定义对象属性特性

    一.Object.defineProperty的作用 用来给对象新增属性,和修改对象中的属性. 二.JS对象中的描述符 js对象中两种属性描述符:数据描述符和存取描述符(访问描述符). 注意事项: 1 ...

  7. struts2下velocity做视图如何访问request,session等内置对象,如:原来webwork的$req

    struts2下velocity做视图如何访问request,session等内置对象(转) velocity 内置对象 struts2 requestStruts2环境下用velocity做视图时访 ...

  8. Spring_day01--注入对象类型属性(重点)_P名称空间注入_注入复杂类型属性_IOC和DI区别_Spring整合web项目原理

    注入对象类型属性(重点) Action要new一个service对象,Service中又要new一个Dao对象,现在把new的过程交给spring来操作 1 创建service类和dao类 (1)在s ...

  9. js对象—类型和属性特性

    前言 权威指南中摘要的,工作中用不到的,重要的js基础. 三类对象两类属性 内置对象(native object) 是由ECMScript规范定义的对象或者类.例如:函数,数组,日期,正则... 宿主 ...

随机推荐

  1. Android Traceroute 功能实现

    经常在windows下开发网络功能的人 经常会使用的命令就是tracert .而实际上 在app开发中,我们也经常要碰到类似的情况.比如你的app 出现了问题,你总不能让用户想办法 去tracert吧 ...

  2. PV是什么意思

    现在国内的站点都号称自己能统计pv,不过听我讲完pv到底是什么,估计所有的站长都要笑了.     pv的意思,就是一个访问者在24小时(0点到24点)内到底看了你网站几个页面.     不过在国内,由 ...

  3. PHP截取中文字符串

    这里的输出的长度是6,那么一个汉字的字符长度就是3咯,可是老师演示的一个字符的长度却是2,百思不得其解. 查了一下资料发现,这个问题的答案与系统所采用的字符编码方式有关: 1. utf-8 如果系统采 ...

  4. [Papers]MHD, $\p_3\pi$, Lebesgue space [Cao-Wu, JDE, 2010]

    $$\bex \p_3\pi\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=\frac{12}{7},\quad \frac{12}{7} ...

  5. 把raw目录下的几张照片存放到SD卡里面去

    try { //SD卡路径 String filename =android.os.Environment .getExternalStorageDirectory().getAbsolutePath ...

  6. Pitcher Rotation

    题意: n个人m个对手给出每个人能战胜每个敌人的概率,现在有g个比赛,每个人赛完后要休息4天(可重复用),求能获得胜利的最大期望个数. 分析: 因为只有每个人5天就能用一次,所以对于每个人来说,只有得 ...

  7. CSS的优先级规则

    CSS的优先级规则有两类 1.位置群组规则 最高优先级为元素内嵌的style样式,如<div style=” “></div> 次高优先级为html头部中的<style& ...

  8. cJSON学习笔记

    1.JSON格式简述 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成.它基于JavaScript(Standa ...

  9. C使用FILE指针文件操作

    文件的基本概念 所谓“文件”是指一组相关数据的有序集合. 这个数据集有一个名称,叫做文件名.实际上在前面的各章中我们已经多次使用了文件,例如源程序文件.目标文件.可执行文件.库文件 (头文件)等.文件 ...

  10. Firefox 对条件判断语句块内的函数声明的处理与其他浏览器有差异

    标准参考 函数声明和函数表达式 定义一个函数有两种途径:函数声明和函数表达式. 函数声明: function Identifier ( FormalParameterList opt ) { Func ...