`
- 浏览:
149103 次
- 性别:
- 来自:
北京
-
在struts2中没有与servlet相关,我们的会话跟踪要怎么做呢?
在struts2中提供了ActionContext类,该类提供了一个方法,而方法的返回值并不是HttpSession,而是Map,因此getSession()方法的返回值是Map。struts2的拦截器会负责把Session和HttpSession之间进行转换。
可以在上面的那个Action的if语句里加上这样的语句:
ActionContext.getContext().getSession().put("username", getUsername());
在done.jsp页面也加上:
${sessionScope.username}登陆成功
------------------------------------------------------------------------------------------------------
当Action设置了某个属性值后,struts2将这些属性值全部封在一个叫struts.valuestack的请求属性里。在JSP页面中输出需要的信息可以通过如下代码来获取包含全部输出信息的ValueStack对象
request.getAttribute("struts.valuestack");
可以通过OGNL表达式非常方便的访问该对象封装的信息。
从数据结构上看,ValueStack有点类似于Map的结构,但它比Map结构更加强大。Action中所有的属性都被封装到了ValueStack对象中,Action中的属性名可以理解为ValueStack中的value的名字。
DONE.JSP页面代码
ValueStack vs=(ValueStack)request.getAttribute("struts.valuestack");
vs.findValue("blogs");
先慢慢往下看,后面有完成的例子
struts2的标签
为了控制struts2的valuestack中封装的值,struts2提供了大量的标签,常用的有:
if(if …else):如果标签里的判断表达式返回值为真,输出标签体内容。(可以用来做样式控制)
iterator:用于迭代集合属性的某个元素
property:该标签用于输出指定的属性值
代码如下
<table border="1" bordercolor="red" align="center" width="50%">
<caption><b>${sessionScope.username}</b></caption>
<s:iterator value="blogs" status="index"> <!-- value为在valuestack中的对象名 status是迭代序号-->
<s:if test="#index.odd==true"> <!-- test为判断表达式,这里的意思是index为奇数则输出带样式的tr -->
<tr style="background-color: #cccccc">
</s:if>
<s:else> <!-- 不带样式的tr -->
<tr>
</s:else>
<td align="right"><b>blog</b></td>
<td><s:property/></td> <!-- 这就是要输出的值 会用但是不太明白 -->
</tr>
</s:iterator>
</table>
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
**ValueStack使用参考** ValueStack是Struts2框架中的核心组件之一,它是ActionContext和ActionInvocation之间的一个数据传递层,负责在Action与视图之间传递和管理数据。ValueStack的作用在于简化模型-视图-控制器...
【在线培训:ValueStack】是一场深入探讨Java开发中ValueStack特性和应用的专题讲座。在本次培训中,参与者将全面了解栈数据结构的基础知识,以及在Struts2框架中ValueStack的重要角色。以下是详细的知识点讲解: 1...
关于ValueStack的描述: 1、 ValueStack其实就是一个放置Java对象的堆栈而已,唯一特别的是可以使用EL来获得值堆栈中对象属性的数据,并可以为值堆栈的对象属性赋值。 2、 EL,全称Express Language,即表达式...
在给定的压缩包文件“s20505_valueStack_OGNL”中,我们关注的核心知识点是Struts2中的OGNL(Object-Graph Navigation Language)和相关标签的使用。OGNL是Struts2默认的表达式语言,用于在视图层和控制器层之间传递...
深入讲解Struts中的ognl和valueStack
1、什么是值栈 2、值栈的内部结构 3、ActionContext和ValueStatck的关系 4、如何获取值栈对象 5、向值栈存数据 6、从值栈中获取数据
Struts是Java Web开发中的一个开源框架,它主要用于构建基于MVC(Model-View-Controller)模式的应用程序。在Struts中,OGNL(Object-Graph Navigation Language)和Value Stack(VS)是两个核心概念,它们对于理解...
String getText(String key, String defaultValue, String[] args, ValueStack stack) Gets a message based on a key using the supplied args, as defined in MessageFormat, or, if the message is not found,...
OGNL(Object-Graph Navigation Language)是一种基于 Java 的表达式语言,Struts2 框架中使用 OGNL 来访问和操作 ValueStack 中的对象。在 Struts2 中,OGNL 是一个强大的工具,允许开发者访问和操作 ValueStack 中...
根据给定的信息,我们将深入探讨Struts2框架中的一些核心概念,包括OGNL表达式的使用、ValueStack的理解及其数据存取方法,以及拦截器的生命周期等。 ### OGNL表达式及其三要素 #### OGNL简介 OGNL(Object-Graph ...
这是通过Struts2的内建机制实现的,其中ValueStack对象起着至关重要的作用。ValueStack是一个数据结构,它像一个栈一样,用于存储Action类的属性和它们的值。当一个HTTP请求到达时,Struts2会创建Action类的一个实例...
- **`ValueStack`**:每当一个新的请求被处理时,Struts2都会为该请求创建一个`ValueStack`实例。`ValueStack`的主要职责是存储请求过程中的数据,并且它支持通过属性名的方式来访问这些数据。当一个Action执行完毕...
ValueStack 对象在 Struts2 中扮演着非常重要的角色,它将属性值从一个拦截器传到了另一个拦截器(当然,在这其间,属性值可能改变),最后会传到 Action 对象,并将 ValueStack 对象中的属性的值终值赋给 Action 类...
ActionContext提供了在Action、Servlet、ValueStack以及其他的Struts2组件之间传递数据的桥梁。在这个“JavaEE ActionContext存取数据示例”中,我们将深入探讨ActionContext的使用方法及其与OGNL(Object-Graph ...
在这个项目中,分页相关的数据(如总页数、当前页数据列表等)会被放入ValueStack,然后在JSP页面上通过OGNL表达式访问并展示出来。例如,我们可以使用`${pager.currentPage}`获取当前页数。 接下来,我们需要创建...
- **ValueStack的实现**:ValueStack有一个实现类叫做OgnlValueStack。 - **ValueStack的生命周期**:与HTTP请求的生命周期一致,每个请求对应一个ValueStack实例。 - **ValueStack的内容**:除了包含当前Action对象...
- 第三种:直接从HttpServletRequest对象的属性中获取,`ValueStack valueStack3 = ServletActionContext.getRequest().getAttribute("struts.valueStack");` 4. **值栈的结构**: 值栈实际上是一个OgnlContext的...
同样,`ValueStack.push()`和`ValueStack.pop()`可以将对象压入和弹出栈,从而实现数据在不同范围间的传递。 3. **OGNL (Object-Graph Navigation Language)**: OGNL是Struts2中强大的表达式语言,它允许开发者...
5. **理解ValueStack的工作原理**:了解如何通过ValueStack将Action类的属性暴露给视图,以及如何使用OGNL表达式来访问复杂的属性路径。 6. **运行和测试**:启动服务器,访问应用,提交表单,观察Struts2如何处理...