`
jd406
  • 浏览: 48511 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

OGNL学习笔记

 
阅读更多
一直不知道OGNL是个什么东西,只知道在网页中可以采用下面两种常用的方式进行输入控制:
${userName}
<s:property value="userName" />

这两种有什么区别呢?今天对照着官方文档(http://struts.apache.org/2.2.1/docs/ognl.html)做了一个小测试:
官方文档的原文是:
The Action instance is always pushed onto the value stack. Because the Action is on the stack, and the stack is the OGNL root, references to Action properties can omit the # marker. But, to access other objects in the ActionContext, we must use the # notation so OGNL knows not to look in the root object, but for some other object in the ActionContext.
大致说的是:如果我们要取的值是Action的属性,可以省略#,如果不是,需要加上#。
我做了一个测试,代码如下:
1、信息输入页面index.jsp
<form action="<%=request.getContextPath() %>/interceptor/login!login.action">
    	<label>用户名称:</label>
         <input type="text" name="userName" id="userName" /><br/>
    	<label>用户密码:</label>
         <input type="text" name="password" id="password" /><br/>
    	<input type="submit" value="提交">
</form>


2、处理输入信息的Action:
package com.interceptor.action;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

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

public class UserAction extends ActionSupport {
	
	private String userName;

	@SuppressWarnings("unchecked")
	public String login(){
		Map session=ActionContext.getContext().getSession();
		HttpServletRequest request = ServletActionContext.getRequest();
		String password=request.getParameter("password");
		session.put("password", password);
		//request.setAttribute("password", password);这种方法也不能用OGNL取到值
		return SUCCESS;
	}
	
	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}


3、struts.xml
<?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>
    <constant name="struts.devMode" value="true" />
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <package name="interceptor" extends="struts-default" namespace="/interceptor">
    	<action name="login" class="com.interceptor.action.UserAction">
                    <result>/result.jsp</result>
        </action>
    </package>
</struts>


4、信息显示页:
<%@ page language="java"  pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"  %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Struts2</title>
    <style type="text/css">
    body{
    	font-size:14px;
    }
    </style>
  </head>
  
  <body>
    	<p>userName采用s:property标签:<s:property value="userName" /></p>
    	<p>userName采用EL表达式:${userName }</p>
    	<p>password采用s:property标签:<s:property value="password" /></p>
    	<p>password采用EL表达式:${password }</p>
  </body>
</html>


5、运行结果:查看附件图片

总结:
OGNL中经常会有“#”、“%”、“$”三个符号。一般“#”都是像前文所述代表那些非值栈的对象。还有就是ognl.jsp中创建 Map对象时候用到。而“%”则是显示对象中的值。至于“$”则是用来显示属性文件中定义的值。比如某属性文件中定义了“kkk=10”则在 Struts2的struts.xml或者JSP文件中用“${kkk}”则系统会读取“10”这个值作为显示值。

需要还需要结合相关实例进行进一步的学习,下面这个网址不错,给出了OGNL的应用,很全面,需要的时候可以查阅:
http://www.iteye.com/topic/646851
http://www.iteye.com/topic/569156
  • 大小: 5 KB
  • 大小: 11.5 KB
分享到:
评论

相关推荐

    OGNL学习笔记,包含struts2中ognl的各种用法

    本篇笔记主要介绍了在Struts2中使用OGNL的一些基本用法。 首先,OGNL可以用来获取不同范围内的属性值。在Java Web开发中,有四种常见的作用域:Request、Session、Application和Page。在示例代码中,`&lt;s:property&gt;`...

    struts2 OGNL语言学习笔记

    Struts2 OGNL语言学习笔记 OGNL(Object-Graph Navigation Language)是 Struts 2 中的一种表达式语言,主要用于简化 JSP 页面中的编码,使页面与后台代码分离。下面是 OGNL 语言的主要特点和用法: 1. 支持对象...

    Ognl_JSTL_学习笔记.zip

    通过深入学习和实践《Ognl_JSTL_学习笔记.doc》,开发者可以熟练掌握这两种技术,提高在Java Web开发中的效率和代码质量。在实际工作中,理解并灵活运用Ognl和JSTL,能够更好地设计和实现交互丰富的Web应用。

    新手整理OGNL笔记.wps

    新手学习整理的OGNL笔记。可能有不正确之处,请谨慎。

    OGNL源代码以及个人笔记

    这个压缩包包含了OGNL的源代码和作者的个人笔记,对Java开发者尤其是对OGNL感兴趣的爱好者来说,是很好的学习资源。 首先,我们来了解一下OGNL的基本概念。OGNL的核心功能是提供一种简洁、灵活的方式来访问和操作...

    Struts2_OGNL 笔记

    Struts2_OGNL笔记主要关注的是如何在Struts2框架中使用OGNL(Object-Graph Navigation Language)表达式语言。OGNL作为一种强大的表达式语言,常用于Struts2的视图层,允许开发者轻松地访问和操作Java对象的属性。 ...

    OGNL笔记

    **OGNL笔记** OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,主要用于Java应用程序,特别是用于在对象图中导航和操作数据。它被广泛应用于Spring框架中的视图层,如Spring MVC,用于在视图中...

    thymeleaf+学习笔记

    ### Thymeleaf 学习笔记关键知识点 #### 一、Thymeleaf 概述与优势 **Thymeleaf** 是一款现代且高级的模板引擎,它为 Web 和独立环境提供了强大的模板处理能力。根据给定内容,我们可以看出 Thymeleaf 的一些主要...

    Java相关课程系列笔记之十三Struts2学习笔记

    本笔记将深入探讨Struts2的核心概念、发展历程、使用方法以及与OGNL(Object-Graph Navigation Language)的结合应用。 **一、Struts2概述** 1.1 为什么要用Struts 在Java Web开发中,Struts2作为MVC框架,能够...

    struts2四天的学习笔记

    13. ** strut2四天笔记**:这份学习笔记可能涵盖了以上所有知识点,包括如何创建Action,配置struts.xml,使用OGNL表达式,处理异常,以及实践中的各种技巧和最佳实践。 在四天的学习过程中,你应该通过实践和理解...

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

    本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与ValueStack、Tags以及项目中的关键实践。 **一、Action** Action是Struts2中处理业务逻辑的核心组件,它是实现了`...

    struts2学习笔记总结

    本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    struts2学习笔记

    本学习笔记将详细阐述Struts2的核心概念、发展历程、使用步骤以及OGNL技术。 一、Struts2概述 1.1 为什么要用Struts 在传统的JSP开发中,模型与视图、控制器的耦合度较高,导致代码维护困难。Struts2引入了MVC...

    Struts2学习笔记

    本学习笔记将深入探讨Struts2的核心概念、架构以及实际应用。 一、Struts2框架概述 1. 架构:Struts2基于Model-View-Controller(MVC)设计模式,将业务逻辑、数据处理和用户界面分离,提高了代码的可读性和可维护...

    struts中文文档及学习笔记

    在“struts中文文档及学习笔记”中,我们可以找到关于Struts框架的详细信息。首先,文档可能包含了Struts的基本概念,如Action、Form Bean、Result、Interceptor等核心组件的介绍。Action是处理用户请求的核心,它...

    Struts1及14. Struts2学习笔记

    本学习笔记将对Struts1和Struts2进行详细解析。 **Struts1简介** Struts1是早期流行的MVC框架,它的核心是ActionServlet,负责处理HTTP请求,并通过ActionForm对象收集表单数据,然后调用Action类的方法进行业务...

Global site tag (gtag.js) - Google Analytics