ognl表达式应用

struts.xml

<!--OGNL表达式  -->
<package name="Ognl" extends="struts-default">
    <action name="getOgnl" class="com.cb.Ognl" method="TestOgnl">
	<result name="list">/WEB-INF/page/Ognl.jsp</result>
    </action>
</package>

Ognl.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<%@ taglib uri="/struts-tags" prefix="s"%><!--使用Struts2标签  -->
<%
	request.setAttribute("name", "陈冰");
	request.getSession().setAttribute("age", 25);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP ‘Ognl.jsp‘ starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

</head>

<body>
	<!--Ognl表达式输出request属性的值  -->
	<s:property value="#request.name" />
	<br>------------------------------<br>
	<!--Ognl表达式输出session中属性的值  -->
	<s:property value="#session.age" />
	<br>------------------------------<br>
	<s:property value="#session.Phone" />
	<br>------------------------------<br>
	<!--Ognl表达式输出值栈中的属性的值  -->
	<s:property value="Email" />
	<br>------------------------------<br>
	<!--Ognl表达式构造list集合  -->
	<s:set var="list" value="{‘广西‘,‘科技‘,‘大学‘}" scope="session"></s:set>
	<!--s:iterator迭代特点:把当前迭代对象存放在值栈的栈顶中  -->
	<s:iterator value="#session.list">
		<!--value为 NULL输出值栈栈顶的值  -->
		<s:property />
	</s:iterator>
	<br>------------------------------<br>
	<!--Ognl表达式构造Map集合  -->
	<s:set var="map" value="#{‘小张‘:‘XZ‘,‘小李‘:‘XL‘,‘小陈‘:‘XC‘}" scope="request"></s:set>
	<!--s:iterator迭代特点:把当前迭代对象存放在值栈的栈顶中  -->
	<s:iterator value="#request.map">
		<s:property value="key" />:<s:property value="value" />
	</s:iterator>
	<br>------------------------------<br>
	<!--输出后台Map集合值  -->
	<s:property value="#request.key1" />
	<s:property value="#request.key2" />
	<s:property value="#request.key3" />
	<br>------------------------------<br>
	<!--Ognl表达式判断某个元素是否在某个集合中  -->
	<s:if test="‘小张‘ in {‘小张‘,‘小李‘,‘小陈‘}">
	在集合中
	</s:if>
	<s:else>
	不在集合中
	</s:else>
	<br>------------------------------<br>
	<!--结合Action,输出价格大于60的书本  -->
	<s:iterator value="books.{?#this.bookPrice>60}">
		书名:<s:property value="bookName"/>,价格:<s:property value="bookPrice"/>
		<br>
	</s:iterator>
</body>
</html>

Book.java

package com.cb;

public class Book {
	private Integer bookId;
	private String bookName;
	private float bookPrice;
	public Integer getBookId() {
		return bookId;
	}
	public void setBookId(Integer bookId) {
		this.bookId = bookId;
	}
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public float getBookPrice() {
		return bookPrice;
	}
	public void setBookPrice(float bookPrice) {
		this.bookPrice = bookPrice;
	}
	//构造器
	public Book(Integer bookId, String bookName, float bookPrice) {
		this.bookId = bookId;
		this.bookName = bookName;
		this.bookPrice = bookPrice;
	}

}

Ognl.java

package com.cb;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.opensymphony.xwork2.ActionContext;

public class Ognl {
	private String Email;

	// book
	private List<Book> books;

	public String getEmail() {
		return Email;
	}

	public void setEmail(String email) {
		Email = email;
	}

	public List<Book> getBooks() {
		return books;
	}

	public void setBooks(List<Book> books) {
		this.books = books;
	}

	public String TestOgnl() {
		this.Email = "[email protected]";
		ActionContext.getContext().getSession().put("Phone", "15818331379");
		Map<String, Integer> maps = new HashMap<String, Integer>();
		maps.put("key1", 1);
		maps.put("key2", 2);
		maps.put("key3", 3);
		for (Map.Entry<String, Integer> entry : maps.entrySet()) {
			ActionContext.getContext().put(entry.getKey(), entry.getValue());// 往request中注值
		}

		books = new ArrayList<Book>();
		books.add(new Book(1, "Java", 78));
		books.add(new Book(2, "Extjs", 35));
		books.add(new Book(3, "Html", 45));
		books.add(new Book(4, "Jsp", 88));
		return "list";
	}

}
时间: 2024-08-07 17:00:45

ognl表达式应用的相关文章

Java实战之01Struts2-04拦截器、上传下载、OGNL表达式

十二.Struts2中的拦截器 1.拦截器的重要性 Struts2中的很多功能都是由拦截器完成的.比如:servletConfig,staticParam,params,modelDriven等等. 是AOP编程思想的一种应用形式. 2.拦截器的执行时机: \ 3.自定义拦截器 3.1.拦截器的类试图(初级版本): 3.2.编写步骤: a.编写一个类,继承AbstractInterceptor类或者实现Interceptor接口.重写intercept方法. 1 public class MyI

OGNL表达式语言中的&quot;#&quot;和&quot;$&quot;的区别

Struts2使用标准的Context来进行OGNL表达式语言求值,OGNL的顶级对象是一个Context,这个Context对象就是一个Map类型实例,其根对象就是ValueStack,如果需要访问ValueStack里的属性,直接通过如下方式即可:    //取得ValueStack中bar属性    ${bar}除此之外,Struts2还提供了一些命名对象,但是这些命名对象都不是Stack Context的跟对象,它们只是存在于StackValue中.所以访问这些对象时需要使用“#”前缀来

Struts2学习之路(六)—— OGNL表达式

OGNL全称为Object-Graph Navigation Language,可译为对象图导航语言.此处介绍的OGNL表达式内容,仅限于在struts2标签中应用,形式如下: <s:property value="xxx" /> 以下为列举的一些应用形式: 1.访问值栈中action的普通属性: <s:property value="username" /> 2.访问值栈中对象的属性(setter getter方法): <s:prop

Struts2之OGNL表达式

OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.Struts2框架使用OGNL作为默认 的表达式语言. 相对于EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHello(); 支持类静态方法调用和常量值访问,表达式的格式为@[类全名(包括包路径)]@[方法名|值名],例如:@[email protected]('foo%s','bar')或@[email protected]_NAME;

el表达式跟ognl表达式的区别(转)

EL表达式: >>单纯在jsp页面中出现,是在四个作用域中取值,page,request,session,application.>>如果在struts环境中,它除了有在上面的四个作用域的取值功能外,还能从值栈(valuestack)中取值.>>特点1:${name},name在值栈中的查找顺序是:先从对象栈中取,取到终止,否则,向map中取.>>特点2:在对象栈的查找顺序是,先从model中找是否有name这个属性,找到终止,否则,找action中是否有n

数据:OGNL表达式是

核心:后台将数据放入OGNL,前台通过OGNL取数据 ActionContext.getContext().getValueStack().push(fu);     ActionContext.getContext().getValueStack().set("key","value"); ServletContext就是application 获取值: saleName = request.getParameter("saleName");

struts.xml文件中action配置、OGNL的投影映射、OGNL表达式的符号

在struts.xml文件中不同的action配置,请求的路径是不一样的 1.请求 path = user!query.action; 配置如下: <action name="user" class="com.bwf.code.action.UserAction"> <result name="queryUser">/query.jsp</result> </action> 2.请求path = u

Struts2中OGNL表达式的用法

OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,能通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能. 一.为什么要使用OGNL 视图层的表达式语言通常是用来简化数据的访问操作,取代Java脚本代码,提供更清晰的视图层实现.比如,要获取user对象的age属性,利用OGNL表达式可以写成: <s:property value="user.age&

Struts2学习笔记(OGNL表达式)

Struts2学习笔记(OGNL表达式) Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言: Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python.Ruby和Smarttalk等)的一些起特性: Velocity,严格来说不是表达式语言,它是一种基于Ja

OGNL表达式的基本语法和用法------2

OGNL表达式的基本语法和用法 首先我们一起来看一下OGNL中的#.%和$符号.关于OGNL各种用法总结参看:http://blog.163.com/[email protected]/blog/static/72069304201032081730286/ 一.OGNL中的#.%和$符号 #.%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分.在这里我们简单介绍它们的相应用途. 1.#符号的三种用法 1)访问非根对象属性,例如示例中的#session.msg表达