`
netxdiy
  • 浏览: 715036 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ongl表达式用法

阅读更多
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.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
<include file="/com/bjsxt/struts2/ognl/ognl.xml"/>
</struts>


ognl.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>

    <package name="ognl" extends="struts-default">

        <action name="ognl" class="com.bjsxt.struts2.ognl.OgnlAction">
            <result>/ognl.jsp</result>
        </action>
        <action name="test" class="com.bjsxt.struts2.ognl.TestAction">
            <result type="chain">ognl</result>
        </action>

    </package>
</struts>


OgnlAction.java
package com.bjsxt.struts2.ognl;

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

import com.opensymphony.xwork2.ActionSupport;

public class OgnlAction extends ActionSupport {
private Cat cat;
private Map<String, Dog> dogMap = new HashMap<String, Dog>();

private Set<Dog> dogs = new HashSet<Dog>();

private String password;

private User user;
private String username;

private List<User> users = new ArrayList<User>();

public OgnlAction() {
users.add(new User(1));
users.add(new User(2));
users.add(new User(3));

dogs.add(new Dog("dog1"));
dogs.add(new Dog("dog2"));
dogs.add(new Dog("dog3"));

dogMap.put("dog100", new Dog("dog100"));
dogMap.put("dog101", new Dog("dog101"));
dogMap.put("dog102", new Dog("dog102"));

}

public String execute() {
return SUCCESS;
}

public Cat getCat() {
return cat;
}

public Map<String, Dog> getDogMap() {
return dogMap;
}

public Set<Dog> getDogs() {
return dogs;
}

public String getPassword() {
return password;
}

public User getUser() {
return user;
}

public String getUsername() {
return username;
}

public List<User> getUsers() {
return users;
}

public String m() {
return "hello";
}

public void setCat(Cat cat) {
this.cat = cat;
}

public void setDogMap(Map<String, Dog> dogMap) {
this.dogMap = dogMap;
}

public void setDogs(Set<Dog> dogs) {
this.dogs = dogs;
}

public void setPassword(String password) {
this.password = password;
}

public void setUser(User user) {
this.user = user;
}

public void setUsername(String username) {
this.username = username;
}

public void setUsers(List<User> users) {
this.users = users;
}
}



Cat.java
package com.bjsxt.struts2.ognl;

public class Cat {

private Dog friend;

public Dog getFriend() {
return friend;
}

public void setFriend(Dog friend) {
this.friend = friend;
}

public String miaomiao() {
return "miaomiao";
}
}



Dog.java

package com.bjsxt.struts2.ognl;

public class Dog {

private String name;

public Dog() {

}

public Dog(String name) {
super();
this.name = name;
}

public String getName() {
return name;
}

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

@Override
public String toString() {
return "dog: " + name;
}
}



User.java

package com.bjsxt.struts2.ognl;

public class User {
private int age = 8;

public User() {

}

public User(int age) {
super();
this.age = age;
}


public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@Override
public String toString() {
return "user" + age;
}
}



S.java

package com.bjsxt.struts2.ognl;

public class S {
public static String STR = "STATIC STRING";

public static String s() {
return "static method";
}
}



TestAction.java
package com.bjsxt.struts2.ognl;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport {

@Override
public String execute() throws Exception {
return super.execute();
}

}



ognl.jsp
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>OGNL表达式语言学习</title>
</head>
<body>
<ol>
<li>访问值栈中的action的普通属性: username = <s:property value="username"/> </li>
<li>访问值栈中对象的普通属性(get set方法):<s:property value="user.age"/> | <s:property value="user['age']"/> | <s:property value="user[\"age\"]"/> | wrong: <%--<s:property value="user[age]"/>--%></li>
<li>访问值栈中对象的普通属性(get set方法): <s:property value="cat.friend.name"/></li>
<li>访问值栈中对象的普通方法:<s:property value="password.length()"/></li>
<li>访问值栈中对象的普通方法:<s:property value="cat.miaomiao()" /></li>
<li>访问值栈中action的普通方法:<s:property value="m()" /></li>
<hr />
<li>访问静态方法:<s:property value="@com.bjsxt.struts2.ognl.S@s()"/></li><!-- 类名@方法名 -->
<li>访问静态属性:<s:property value="@com.bjsxt.struts2.ognl.S@STR"/></li>
<li>访问Math类的静态方法:<s:property value="@@max(2,3)" /></li>
<hr />
<li>访问普通类的构造方法:<s:property value="new com.bjsxt.struts2.ognl.User(8)"/></li>
<hr />
<li>访问List:<s:property value="users"/></li>
<li>访问List中某个元素:<s:property value="users[1]"/></li>
<li>访问List中元素某个属性的集合:<s:property value="users.{age}"/></li>
<li>访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/></li>
<li>访问Set:<s:property value="dogs"/></li>
<li>访问Set中某个元素:<s:property value="dogs[1]"/></li>
<li>访问Map:<s:property value="dogMap"/></li>
<li>访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap[\"dog101\"]"/></li>
<li>访问Map中所有的key:<s:property value="dogMap.keys"/></li>
<li>访问Map中所有的value:<s:property value="dogMap.values"/></li>
<li>访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/> </li>
<hr />
<li>投影(过滤):<s:property value="users.{?#this.age==1}[0]"/></li>
<li>投影:<s:property value="users.{^#this.age>1}.{age}"/></li>
<li>投影:<s:property value="users.{$#this.age>1}.{age}"/></li>
<li>投影:<s:property value="users.{$#this.age>1}.{age} == null"/></li>
<hr />
<li>[]:<s:property value="[0].username"/></li><!-- 访问ongl的action -->

</ol>

<s:debug></s:debug>
</body>
</html>


index.jsp
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%
String contextPath = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
访问属性
<a href="<%=contextPath %>/ognl.action?username=u&password=p">ognl</a>
</body>
</html>
分享到:
评论

相关推荐

    ongl表达式

    4. **方法调用**:可以直接在ONGL表达式中调用对象的方法,如`user.getAge()`。 5. **条件和逻辑操作**:ONGL提供了`?`操作符进行三元条件判断,以及`&&`、`||`进行逻辑操作。 6. **运算符支持**:包括算术运算符...

    struts2中ongl表达式的使用和具体实例应用

    ### Struts2中OGNL表达式的使用与具体实例解析 #### 一、OGNL概述 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,...对于深入理解和掌握Struts2框架而言,熟练掌握OGNL的使用方法是非常必要的。

    struts2中的ongl表达式相关简介

    通过这种方式,我们可以方便地在视图层使用OGNL表达式来展示模型对象的信息,无需编写复杂的Java代码来处理数据的获取和展示。 **小结** OGNL是Struts 2框架中的一项关键技术,它简化了视图层与模型层之间的交互,...

    el和ongl表达式学习

    EL表达式通常在JSF组件的属性中使用,以便动态地获取或设置值。例如,`#{bean.property}` 这样的表达式会查找名为`bean`的JavaBean对象,并尝试访问其`property`属性。 EL具有以下主要特性: 1. **简化的对象访问**...

    在Java的Struts框架中ONGL表达式的基础使用入门

    OGNL是一种强大的表达式语言,它允许开发者通过简洁的语法来访问和操作对象的属性以及调用方法。它可以遍历对象图,执行类型转换,并且在对象间导航。OGNL的上下文是其工作的核心,它是一个Map对象,由ognl.Ognl...

    ONGL介绍

    `Ognl.getValue`方法用于解析和执行ONGL表达式,返回结果是`User`对象的`name`属性值。 **与MVEL、SpEL等比较** ONGL虽然强大,但并非唯一的选择。例如,MVEL和Spring Expression Language (SpEL)也是类似的表达式...

    ongl的使用方法及怎么解决

    本篇文档将详细介绍ONGL在访问上下文、集合操作以及构造Map等方面的使用方法,以及如何解决在使用过程中可能遇到的问题。 **一、访问OGNL上下文和Action上下文** 1. **#parameters**: OGNL提供了一个便捷的方式,...

    通过实例深入学习Java的Struts框架中的OGNL表达式使用

    本篇文章将深入探讨如何在Struts 2中使用OGNL表达式。 首先,OGNL的优势在于它能够方便地处理对象的方法调用。例如,你可以直接通过`xxx.doSomeSpecial()`来调用对象的方法,这在处理业务逻辑时十分便捷。不仅如此...

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

    本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系...用法:OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和$这三个符号的使用;

    Mybatis利用OGNL表达式处理动态sql的方法教程

    Mybatis是一款强大的持久层框架,它允许开发者将SQL语句直接写在XML配置文件...理解并熟练掌握这些动态SQL标签,对于提升Mybatis的使用技能至关重要。在实际开发中,可以根据具体需求灵活运用,使SQL语句更加简洁高效。

    ongl源代码

    - **独立使用**:ONGL也可单独作为工具库,用于在任何Java程序中执行动态表达式。 通过研究jkuhnert-ognl-1483b9a的源代码,你可以深入理解ONGL的内部实现,学习如何构建和执行表达式,以及如何处理对象图的各种...

    struts2 ongl包源码

    这个压缩包包含了Struts2中的ONGL包源码,对于理解Struts2的工作原理和深入学习OGNL的使用非常有帮助。 OGNL是Object-Graph Navigation Language的缩写,它的主要功能是在对象图中导航并执行操作。在Struts2中,...

    ongl 灵活运用

    **ONGL(Object-Graph Navigation Language)是一种强大的表达式语言,用于在Java应用程序中操作对象图。它在Web开发领域,特别是在Struts2框架中,被广泛用来简化视图层的逻辑,允许开发者通过简洁的表达式来访问和...

    OGNL表达式的使用及文档

    本篇将详细介绍OGNL的使用方法及其核心概念。 一、OGNL的基础知识 1. **表达式语法**:OGNL表达式通常由对象名、点号和属性名组成,例如`user.name`,表示获取`user`对象的`name`属性。也可以通过索引访问集合元素...

    ongl源码 非常好!

    ONGL(Object-Graph Navigation Language)是Java平台上的一种表达式语言,主要用于访问和操作对象的属性,以及执行动态方法调用。它简化了在Java应用程序中处理对象模型的复杂性,尤其是在MVC(Model-View-...

    最新的ongl 源码(含unittest代码)

    **ONGL源码详解** ONGL (Object-Graph Navigation Language...总的来说,最新的ONGL源码提供了深入学习和研究的机会,结合unittest代码,开发者可以全面了解其工作原理,并提升在Java应用开发中的表达式语言使用技巧。

    JSTL、EL、ONGL、Struts标签的区别

    - **用法**: OGNL 通常与 Struts2 标签一起使用,不能单独在 Struts 页面中使用;而 EL 可以直接在 JSP 页面中使用。 - **取值**: OGNL 更适合于复杂的对象图导航,而 EL 更适用于简单的数据访问。 **与 JSTL 的...

    Java struts2 ongl 标签 jsp页面

    例如,在提供的代码片段中,可以看到`&lt;%@ taglib prefix="s" uri="/struts-tags"%&gt;`引入了Struts2的标签库,这使得在JSP中可以方便地使用OGNL表达式来操作页面上的Java对象。 ```jsp ("sex", Sex.MALE); %&gt; This ...

    Struts2 Ongl文档

    根据提供的文件信息,我们可以归纳出以下关于Struts2中OGNL(Object-Graph Navigation Language)的知识点: ...通过掌握 OGNL 的基本概念和使用方法,开发者可以有效地提高应用程序的功能性和灵活性。

    ONGL中(#.%.$)三种符号的用法.pdf

    除了这些基础用法,OGNL还支持访问静态方法和变量,通过`@`符号结合类名和成员名。例如,`()" /&gt;`会输出一个随机数,`@examples.chap8.Muppet@OG_MUPPET`和`@examples.chap8.Muppet@getOgMuppet()`分别访问了类的...

Global site tag (gtag.js) - Google Analytics