`
caleb_520
  • 浏览: 251292 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Struts2 OGNL表达式之三

阅读更多
Struts 2的OGNL中“#”号用法

在Struts 2中,OGNL的“#”主要有三种用法:
(1)访问OGNL上下文中的parameters、request、session、application和attr对象。
(2)构造Map,如:#{key1:value1,key2:value2,key3:value3,......}
(3)取得集合中的子集,如:books.{?#this.price > 20}

第一种OGNL的“#”用法,访问OGNL上下文中的parameters、request、session、application和attr对象:

创建OgnlForSessionAction.java文件,其代码如下:

package com.gxa.edu.struts2.action.ch7;

import com.opensymphony.xwork2.ActionContext;

public class OgnlForSessionAction {

	public String execute() {
		ActionContext context = ActionContext.getContext();
		context.getSession().put("username", "张三");
		context.getSession().put("password", "123");
		return "success";
	}
}


在struts-ch7.xml文件中添加如下代码:

<action name="ognlForSessionAction" 
class = "com.gxa.edu.struts2.action.ch7.OgnlForSessionAction">
	<result name="success">/ch7/ognlForSession.jsp</result>
</action>


最后,创建ognlForSession.jsp文件,其代码如下:

<%@ page language="java" pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'ognlForSession.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>
    Session存放用户的名称:<s:property value="#session.username"/><br>
    Session存放用户的密码:<s:property value="#session.password"/>
  </body>
</html>


测试结果如下图



第二种OGNL的“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。例如:例如,<s:url value=“xxx”/>标签。此标签中的value属性的值标是一个字符串类型。所以,可以采用Struts 2的OGNL中“%”号。

在原来的ongl.jsp文件中,添加如下代码:
<%@ page language="java" pageEncoding="gb2312"%>
<%@ taglib prefix = "s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <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>
    用户名:<s:property value="person.username"/>
    密码:<s:property value="person.password"/>
    <p>OGNL"%"的用途</p>
    <br><s:url value="%{person.password}"></s:url>
    <br><s:url value="#person.password"/></body>
</html>


运行后的结果如下图:



第三种OGNL的$符号主要有两个方面的用途:(1)国际化资源文件中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同${max}之间。(2)在Struts 2框架的配置文件中引用OGNL表达式,例如下面的代码片断所示:

大家看下面的代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<!-- 如果要上传中文名称的文件,将"struts.i18n.encoding"的值设置为GBK -->
	<constant name="struts.i18n.encoding" value="GBK"></constant>
	
	<package name="filedownload" extends = "struts-default" namespace = "/ch4">
		<default-action-ref name="download"></default-action-ref>
		<action name="download" 
class = "com.gxa.edu.struts2.ch4.action.FileDownloadAction" method = "download">
			<param name="filePath">/upload/工作成果.doc</param>
			<param name="testParam">${testParam}</param>
			<result name = "success" type = "stream">
				<param name="contentType">application/x-download</param>
				<param name="bufferSize">4096</param>
				<param name="inputName">downLoad</param>
				<param name="contentDisposition">filename=${fileContentDisposition}</param>
			</result>
		</action>
	</package>
</struts>


上面的代码中有两个代码:

(1)<param name="testParam">${testParam}</param>
(2)<param name="contentDisposition">filename=${fileContentDisposition}</param>

这就是ognl表达式中“$”用法,其实Struts2中也利用了设置注入的思想,这个非常的方便的将Java代码和xml进行数据交互。
  • 大小: 27 KB
  • 大小: 25.5 KB
分享到:
评论

相关推荐

    Struts2 使用OGNL表达式

    以下是一些关于Struts2中OGNL表达式的关键知识点: 1. **基础语法**:OGNL表达式的格式通常为`object.property`或`object[index]`,用于访问对象的属性或数组/集合的元素。例如,`user.name`将获取名为`user`的对象...

    struts2 ognl表达式

    Struts2 OGNL表达式是Java Web开发中一个重要的概念,它是一种强大的对象图形导航语言(Object-Graph Navigation Language)。在Struts2框架中,OGNL被广泛用于视图层,作为数据绑定的主要手段,使得开发者能够方便...

    struts2 OGNL表达式

    Struts2 OGNL表达式是Java开发中一个重要的知识点,尤其在Web应用程序设计中扮演着核心角色。OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,它被Struts2框架广泛用于视图层与模型层之间的数据...

    struts2 中 OGNL表达式的使用

    struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用

    struts2 OGNL表达式使用

    struts2 OGNL表达式使用 OGNL(Object-Graph Navigation Language)是对象图导航语言,允许开发者在Struts2应用程序中访问和操作对象及其属性。下面是OGNL表达式的使用方法: 访问基本属性 1. 访问值栈中action的...

    struts2 OGNL 表达式及各种标签的使用

    - 在Struts2的Action类中,可以使用OGNL表达式来动态地处理请求参数,如`String name = (String)params.get("user.name");` - 在JSP页面上,使用OGNL标签显示和处理数据,如`管理员界面&lt;/s:if&gt;`。 通过理解并熟练...

    Struts2 如何使用OGNL表达式(三十八)

    本文将深入探讨如何在Struts2中有效地使用OGNL表达式。 首先,OGNL是Struts2的核心组成部分,它允许开发者在Action类和JSP页面之间灵活地传递和访问数据。在Action类中,你可以设置属性,然后在JSP页面上通过OGNL...

    ognl表达式 ognl表达式

    在Struts2中,OGNL的核心组件之一是`ValueStack`,它充当了OGNL表达式的数据源。`ValueStack`是一个存储数据的栈结构,包含了所有的模型对象以及请求、会话和应用范围的数据。开发者可以通过EL表达式直接访问`...

    struts2OGNL表达式ActionContext及valuesStack.pdf

    在Struts2中,OGNL表达式的使用大大提升了代码的可读性和维护性。 首先,`#`字符在OGNL中扮演着关键角色。它主要用于访问OGNL上下文和Action上下文。`#`前缀可以用来获取`ActionContext`,这包含了四个重要的域:...

    ognl表达式java使用案例详解(测试通过)

    Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势: 1、 支持对象方法调用,如xxx.doSomeSpecial(); 2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@...

    struts2-OGNL表达式测试

    这个“struts2-OGNL表达式测试”可能是一个测试项目或代码示例,旨在演示如何在Struts2应用中使用OGNL表达式。 OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来获取或设置对象的属性。这使得视...

    Struts2深入学习----OGNL表达式原理

    Struts2是一个流行的Java Web...通过深入学习OGNL表达式原理,开发者能够更好地利用Struts2框架,提高Web应用的开发效率和可维护性。对于那些希望在Struts2开发中更进一步的人来说,熟悉和掌握OGNL是必不可少的技能。

    Struts2的标签库及OGNL表达式语言

    本篇文章将详细探讨Struts2中的OGNL表达式语言以及标签库。 **OGNL(对象图导航语言)** OGNL是一种强大的表达式语言,它允许开发者通过简洁的语法来访问和操作对象的属性。在Struts2框架中,OGNL扮演着至关重要的...

    Struts2 OGNL表达式实例详解

    Struts2 OGNL表达式实例详解 Struts2 OGNL表达式实例详解主要介绍了Struts2 OGNL表达式实例详解,相关实例代码,需要的朋友可以参考。Object Graph Navigation Language(对象图导航语言),就是用点来访问成员变量...

    OGNL表达式

    - **#**:通常用于表示OGNL表达式,在Struts2中作为OGNL表达式的开头标记。 - **%**:用于指定JSP页面的编码格式,如`;charset=utf-8" pageEncoding="utf-8" %&gt;`。 - **$**:在JSP页面中表示EL表达式的开头,但在...

    JS:ognl表达式

    #### 三、OGNL表达式的结构 OGNL 表达式的基本单位被称为“链”。链可以包含属性访问、方法调用等。链之间可以通过点号连接,形成更复杂的表达式。 ##### 示例 假设我们有如下对象结构: ```java public class ...

    struts2_OGNL表达式ActionContext及valuesStack

    本文将深入探讨Struts2中的OGNL表达式,ActionContext以及valuesStack。 首先,OGNL表达式是Struts2中不可或缺的一部分,它允许开发者以一种声明式的方式访问和修改对象的属性。比如,`myBean.getMyProperty()`这样...

    struts2中ognl表达式的理解和用法

    3. 结果类型配置:在Struts2的配置文件中,结果类型可以通过OGNL表达式动态决定,例如,`resultType="#attr.resultType"`。 4. JSP标签库:Struts2提供了丰富的JSP标签库,这些标签内部也大量使用了OGNL来获取和显示...

    精通struts2的ognl表达式

    ### 精通Struts2中的OGNL表达式 在深入探讨Struts2框架的核心功能时,理解并熟练掌握OGNL(Object-Graph Navigation Language)表达式的应用是至关重要的一步。OGNL是一种强大的表达式语言,它允许开发者通过简洁、...

    struts2 ognl的用法

    在Struts2中使用OGNL表达式主要涉及以下几种符号:“#”、“%”和“$”。 ##### 1. “#”符号的使用 - **访问Struts2上下文**: - `#`可用于访问当前的`ActionContext`,如`#ActionContext.getContext()`。 - ...

Global site tag (gtag.js) - Google Analytics