`

struts2day02访问ValueStack中的数据以及访问Context中的对象

 
阅读更多

1.在show.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
	</head>

	<body style="font-size: 30px;">
		查看ValueStack信息:
		<br>
		<s:debug></s:debug>
		<h1>
			访问root中的
		</h1>
		<br>
		id属性:
		<s:property value="id" />
		<br>
		time属性:
		<s:property value="time" />
		<br>
		使用date标签设定显示时间的格式
		<br>
		指定时间格式:
		<s:date name="time" format="yyyy-MM-dd hh:mm:ss" />
		<h1>
			访问Context中对象
		</h1>
		访问Session:
		<s:property value="#session.hello" />
		<h1>
			使用OGNL调用方法
		</h1>
		Message的长度:
		<s:property value="message.length()" />
		<br>
		OGNL调用静态的属性:
		<s:property value="@java.lang.Math@PI" />
		<br>
		<!--@:代表@java.lang.Math-->
		<s:property value="@@PI" />
		<br>
		<!-- 自定义静态属性建议不要在Action中进行设置 -->
		获取自定义静态属性:
		<s:property value="@zx.day2.action.ShowAction@show" />
		<s:property value="#show" />
		<br>
		使用OGNL进行运算:
		<s:property value="id+100>250" />
		<br>
		范文List中的数据
		<br>
		list第一个对象的工资:
		<s:property value="emps[0].name" />
		的工资为
		<s:property value="emps[0].salary" />
		<br>
		list的长度:
		<s:property value="emps.size" />
		<br>
		判断集合是否为空:
		<s:property value="emps.isEmpty" />
		<hr>
		<h1>
			set标签
		</h1>
		<!-- request.setAttribuet(key,value); -->
		scope:request:
		<s:set var="uname" value="emps[0].name" scope="request"></s:set>
		<s:property value="#request.uname" />
		<br>
		scope:action
		<s:set var="usalary" value="emps[0]" scope="action"></s:set>
		<s:property value="#usalary.salary" />
		<h2>
			push标签
		</h2>
		<s:push value="emps[0]">
		姓名:<s:property value="name" />
			<br>
		工资:<s:property value="salary" />
		</s:push><br>
		<h2>
		 bean标签
		</h2>
		<s:bean name="zx.day2.pojo.Emp" var="e1">
		  <s:param name="name">zhangsan</s:param>
		  <s:param name="salary">1222.0</s:param>
		  <!--
		   value的值使用单引号表示字符串
		  <s:param name="name" value="'zhangsan'"/>
		  <s:param name="salary" value="133"></s:param>
		   -->
		</s:bean>
		从页面创建的对象中获取数据<br>
		name:<s:property value="#e1.name"/><br>
		salary:<s:property value="#e1.salary"/>
	</body>
</html>
2.在zx.day2.pojo包中创建Emp实体类
package zx.day2.pojo;

public class Emp {
	private int id;
	private String name;
	private double salary;

	public Emp(int id, String name, double salary) {
		this.id = id;
		this.name = name;
		this.salary = salary;
	}

	public Emp() {

	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}

}
  

 3.actionTest.jsp页面

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
	</head>

	<body style="font-size: 30px;">
	   <s:action name="list" namespace="/" executeResult="true" ignoreContextParams="false">   
	   </s:action>
	</body>
</html>


4.在 iterator.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
	</head>
	<body style="font-size: 30px;">
		<h1>
			Iterator 迭代标签
		</h1>
		<s:iterator var="e" value="emps" status="s">
			<s:property value="#s.index" />
			<s:property value="#s.count" />
			<s:property value="#e.name" />
			<s:property value="#e.salary" />
			<br>
		</s:iterator>
		<h2>
			if/else/elseif
		</h2>
		<s:if test="emps.size>5">
	 员工个数超过5个
	</s:if>
		<s:else>
	 就几个,牛什么牛!
	</s:else>
		<br>
		员工数组中有没有一个叫tom的
		<br>
		对集合进行过滤:
		<br>
		<s:if test="emps.{?#this.salary>10000}">
	 a123有
	</s:if>
		<s:else>
	 没有Tom
	</s:else>
		<br>
		工资大于800的员工
		<br>
		<s:iterator var="e" value="emps.{?#this.salary>800}">
			<s:property value="#e.salary" />
			<br>
		</s:iterator>
		工资大于800的第一个员工
		<br>
		<s:iterator var="e" value="emps.{^#this.salary>800}">
			<s:property value="#e.salary" />
			<br>
		</s:iterator>
		<br>
		工资大于800的第一个员工
		<br>
		<s:iterator var="e" value="emps.{$#this.salary>800}">
			<s:property value="#e.salary" />
			<br>
		</s:iterator>
		<br>
		<!--  Include:<br>
		<s:include value="opt.jsp"></s:include>
		<br>
		URL:<a href="<s:url value="/login.action"/>">登陆</a>
		-->
	</body>
</html>
 

 

5.在ShowAction中

package zx.day2.action;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import zx.day2.pojo.Emp;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ShowAction extends ActionSupport {
	/**
	 * 
	 */

	private int id;
	private Date time;
	private String message;
	private static String show = "haoren";
	private List<Emp> emps;

	public String execute() {
		id = 100;
		time = new Date();
		message = "1234567";
		// 创建了一个Session
		ActionContext.getContext().getSession().put("hello", "hello OGNL");

		emps = new ArrayList<Emp>();
		emps.add(new Emp(1, "haoren", 2500));
		emps.add(new Emp(2, "lily", 1500));
		emps.add(new Emp(3, "jerry", 800));
		emps.add(new Emp(4, "tom", 650));

		return "success";

	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public Date getTime() {
		return time;
	}

	public void setTime(Date time) {
		this.time = time;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public static String getShow() {
		return show;
	}

	public static void setShow(String show) {
		ShowAction.show = show;
	}

	public List<Emp> getEmps() {
		return emps;
	}

	public void setEmps(List<Emp> emps) {
		this.emps = emps;
	}

}

 6.在struts.xml文件中

 

		<action name="show" class="zx.day2.action.ShowAction">
		 <result name="success">/show.jsp</result>
		 </action>
		 
		 <action name="list" class="zx.day2.action.ShowAction">
		 <result name="success">/iterator.jsp</result>
		 </action>
 

 

分享到:
评论

相关推荐

    Struts中的ognl和valueStack

    深入讲解Struts中的ognl和valueStack

    Struts2中关于ValueStack的一些操作

    通过EL,我们可以存、取对象数据,而且还可以直接访问类的静态数据,调用静态方法。 3、 WebWork的ValueStack底层有第三方开源项目OGNL实现。所以EL也都遵循OGNL的规范。我们在开发中,几乎不需要知道OGNL的细节。...

    Struts2访问request,session,application的四种方式

    Struts2作为一款流行的Java Web框架,为开发者提供了丰富的功能,包括方便地访问HTTP请求、会话以及应用程序范围内的数据。在Struts2中,有四种主要的方式可以用来操作request、session和application上下文中的数据...

    传智168期JavaEE struts2杜宏 day32~day33笔记

    在Struts2中,OGNL被广泛应用于处理对象之间的导航和访问,特别是在展示数据到视图层的过程中扮演着关键角色。OGNL的使用需要了解以下几个概念: - **OgnlContext**:这是一个核心组件,在OGNL中用于管理根对象(root...

    struts2框架面试题及答案02

    根据给定的信息,我们将深入探讨Struts2框架中的一些核心概念,包括OGNL表达式的使用、ValueStack的理解及其数据存取方法,以及拦截器的生命周期等。 ### OGNL表达式及其三要素 #### OGNL简介 OGNL(Object-Graph ...

    Struts2中访问web元素的例子

    Struts2中的ValueStack是模型部分的重要组成部分,它可以方便地处理Action对象与页面之间的数据传递。我们可以在Action中直接通过栈顶对象(通常是Action实例)的属性来获取和设置请求参数。例如: ```java ...

    很全面的struts2_ognl总结

    OGNL(Object-Graph Navigation Language)是一种基于 Java 的表达式语言,Struts2 框架中使用 OGNL 来访问和操作 ValueStack 中的对象。在 Struts2 中,OGNL 是一个强大的工具,允许开发者访问和操作 ValueStack 中...

    struts2中获得request对象

    本文将详细讲解在Struts2中获取`request`对象的几种常见方法,以及它们的适用场景。 1. **Action上下文(ActionContext)** `ActionContext`是Struts2的核心组件之一,它封装了与当前请求相关的所有上下文信息,...

    马士兵Struts2笔记2013

    Struts2是一个流行的Java web框架,...以上就是"马士兵Struts2笔记2013"中涉及的主要知识点,这些内容涵盖了Struts2的基础配置、数据处理、验证、调试以及与视图层的交互等方面,对于理解和掌握Struts2框架非常有帮助。

    达内培训机密资料_struts2_day02(2)

    - **ValueStack演示**:通过具体的示例介绍如何在Struts2中使用ValueStack来管理数据,如如何添加对象到ValueStack中、如何从ValueStack中取出对象等。 ### 分页功能实现 - **分页02** 案例描述了如何在Struts2...

    Struts用的ognl和valueStack(vs)实例

    在Struts中,OGNL用于在Action对象和视图之间传递数据。它的主要功能包括: 1. **属性访问**:OGNL可以轻松地获取或设置对象的属性,无论是简单类型还是复杂类型。 2. **动态方法调用**:通过OGNL,你可以动态地...

    struts1和struts2的区别

    - **Struts2**: 引入了ValueStack的概念,这使得开发者可以在视图层直接访问Action中的数据。Struts2还支持多种视图技术,如FreeMarker、Velocity等。 #### 数据绑定 - **Struts1**: 使用Commons-BeanUtils进行...

    OGNL访问OGNL上下文和Action上下文Struts2rarfdsafsdfasdfas

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种表达式语言,用于访问和操作对象的属性。OGNL上下文(OGNL Context)和Action上下文是Struts2中两个重要的概念,它们对于理解和使用OGNL表达式至关重要...

    Struts2深入理解

    - **访问四大作用域中的数据:** Struts2提供了内置的标签库,结合OGNL可以让开发者方便地访问应用中的各种数据。 - **ValueStack与ActionContext:** - **ValueStack存在于Action上下文中:** 每次处理请求时,...

    struts2学习笔记(完美总结)——转自OPEN经验库

    OGNL是Struts2中用于对象属性访问和表达式语言,它允许在Action、ValueStack和视图层之间传递数据。ValueStack是一个对象栈,它持有ActionContext上下文中的所有对象,包括Action实例、ActionForm、Session、Request...

    struts2中的ActionContext与ognl

    总的来说,ActionContext是Struts2框架处理请求上下文的核心,而OGNL则提供了灵活的数据访问和操作能力,两者结合使得Struts2能够高效地处理请求,实现模型和视图的解耦,提高Web应用的可维护性和可扩展性。

    struts2jar包

    在Struts2中,OGNL用于传递Action与视图之间的数据,以及在拦截器中进行表达式计算。 4. **struts2-convention-plugin.jar**:这是Struts2的约定优于配置插件,它简化了Action类和结果配置,使得开发者可以按照一定...

    struts2标签和OGNL表达式

    总的来说,OGNL是Struts2框架中不可或缺的一部分,它提供了一种强大而灵活的方式来访问和操作对象属性,结合Struts2的标签,使得视图层和模型层之间的数据交互变得简单且高效。通过理解OGNL的工作原理和在Struts2中...

Global site tag (gtag.js) - Google Analytics