ongl 表达式

struts.xml简单配置

<!-- (默认false)设置ognl表达式是否支持静态方法 --><constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant><package name="ognl" namespace="/ognl" extends="struts-default"><action name="ognl" class="com.ouc.wkp.action.OgnlAction"><result>/ognl.jsp</result></action></package>
struts.xml

记得打开

<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>

 

package com.ouc.wkp.action;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 org.apache.commons.chain.Catalog;import com.opensymphony.xwork2.ActionSupport;
import com.ouc.wkp.model.Cat;
import com.ouc.wkp.model.Dog;
import com.ouc.wkp.model.User2;//user.xxx只有传,才会构造,想初始化domain model,可以自己new,也可以传参数值
//但这时候要有参数为空的构造方法
//
public class OgnlAction extends ActionSupport {private String password;private String username;private User2 user;private Cat cat;private Map<String, Dog> dogMap = new HashMap<String, Dog>();private Set<Dog> dogs = new HashSet<Dog>();private List<User2> users = new ArrayList<User2>();public Cat getCat() {return cat;}public void setCat(Cat cat) {this.cat = cat;}public User2 getUser() {return user;}public void setUser(User2 user) {this.user = user;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Map<String, Dog> getDogMap() {return dogMap;}public void setDogMap(Map<String, Dog> dogMap) {this.dogMap = dogMap;}public Set<Dog> getDogs() {return dogs;}public void setDogs(Set<Dog> dogs) {this.dogs = dogs;}public List<User2> getUsers() {return users;}public void setUsers(List<User2> users) {this.users = users;}public OgnlAction() {users.add(new User2(1));users.add(new User2(2));users.add(new User2(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"));}@Overridepublic String execute() throws Exception {return SUCCESS;}public String m() {return "mmmmm";}
}
OgnlAction.java
package com.ouc.wkp.model;
//user.xxx只有传,才会构造,想初始化domain model,可以自己new,也可以传参数值
//但这时候要有参数为空的构造方法
public class User2 {private int age=8;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public User2(){
//        System.out.println("user constructor");
    }public User2(int age){this.age=age;}@Overridepublic String toString() {return "user"+age;}
}
User2.java
package com.ouc.wkp.model;public class Cat {private Dog friend;public Dog getFriend() {return friend;}public void setFriend(Dog friend) {this.friend = friend;}public String miaomiao(){return "miaomiao";}//    public Cat(){
//        
//    }
//    
//    public Cat(Dog friend){
//        this.friend=friend;
//    }
//    
//    @Override
//    public String toString() {
//        return "cat"+friend;
//    }
}
Cat.java
package com.ouc.wkp.model;public class Dog {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public Dog(){}public Dog(String name){super();this.name=name;}@Overridepublic String toString() {return "dog"+name;}
}
Dog.java

 

然后就是比较核心的ognl.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";
%><!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><s:debug></s:debug>This is ognl.jsp<br> 访问值栈中的action的普通属性:username=<s:property value="username" /><br /> 访问值栈中对象的普通属性(get set 方法)<s:property value="user.age" /><br /> 访问值栈中对象的普通属性(get set 方法)<s:property value="cat.friend.name" /><br /> 访问值栈中对象的普通方法<s:property value="password.length()" /><br /> 访问值栈中对象的普通方法<s:property value="cat.miaomiao()" /><br /> 访问静态方法:<s:property value="@com.ouc.wkp.action.S@s()" /><br /> 访问静态属性:<s:property value="@com.ouc.wkp.action.S@STR" /><br /> 访问Math类的静态方法:<s:property value="@@max(2,3)" /><br /> 访问普通类的构造方法:<s:property value="new com.ouc.wkp.model.User2(10)" /><br /> 访问List:<s:property value="users" /><br /> 访问List中某个元素:<s:property value="users[1]" /><br /> 访问List中元素某个属性的集合:<s:property value="users.{age}" /><br /> 访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]" /><br /> |<s:property value="users[0].age" /><br /> 访问Set:<s:property value="dogs" /><br /> 访问Set中某个元素:<s:property value="dogs[1]" /><br /> 访问Map:<s:property value="dogMap" /><br /> 访问Map中某个元素:<s:property value="dogMap.dog101" /><br /> |<s:property value="dogMap['dog101']" /><br /> |<s:property value="dogMap[\"dog101\"]" /><br /> 访问Map中所有的key:<s:property value="dogMap.keys" /><br /> 访问Map中所有的value:<s:property value="dogMap.values" /><br /> 访问容器的大小:<s:property value="dogMap.size()" /><br /> |<s:property value="users.size" /><br /> 投影(过滤):<s:property value="users.{?#this.age==1}[0]" /><br /> 投影:<s:property value="users.{^#this.age>1}.{age}" /><br /> 投影:<s:property value="users.{$#this.age>1}.{age}" /><br /> 投影:<s:property value="users.{$#this.age>1}.{age}==null" /><br /> []:value stack从上往下数<s:property value="[0].username" />
</body>
</html>
ognl.jsp

输入网址

 http://localhost:8081/maShiBing/ognl/ognl?password=p&username=u&user.age=9&cat.friend.name=fuck

运行结果为

 

转载于:https://www.cnblogs.com/wangkaipeng/p/5736899.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle dd if=/dev/zero of=/dev,【转】dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解...

一、dd命令的解释dd&#xff1a;用指定大小的块拷贝一个文件&#xff0c;并在拷贝的同时进行指定的转换。注意&#xff1a;指定数字的地方若以下列字符结尾&#xff0c;则乘以相应的数字&#xff1a;b512&#xff1b;c1&#xff1b;k1024&#xff1b;w2参数注释&#xff1a;1. …

Python开发-- Lesson 2--Python数据类型(2016/07/30)

1、文件操作 python中对文件、文件夹&#xff08;文件操作函数&#xff09;的操作需要涉及到os模块和shutil模块。 得到当前工作目录&#xff0c;即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来删除一个文件:os.remove(…

oracle什么是重复组,规范化:“重复组”是什么意思?

扬帆大鱼英语的价值一次又一次地重复。这是重复组吗&#xff1f;不。在SUBJECT_MODULE中英语的多次出现不是重复组&#xff0c;甚至不是人们误认为重复组的两件事中的任何一个。它们也不是冗余或缺乏规范化的证据。这样的多个外观可能与冗余或规范化有关&#xff0c;但是在没有…

清除浮动php,CSS清除浮动

今天看到一篇文章关于清除浮动的&#xff0c;突然间脑袋短路了&#xff0c;咦&#xff1f;为什么要清除浮动&#xff1f;原谅我的无知&#xff0c;搜了下原来是这样&#xff0c;又倒腾出原来的笔记&#xff0c;唉&#xff0c;本来就有记录啊&#xff0c;而且也会经常用到&#…

Linux下使用Speedtest测试网速

导读Speedtest是用来测试网络性能的开源软件&#xff0c;在Linux下面安装Speedtest可以用来测试网络出口的上传和下载速度&#xff0c;帮助排查网络方面导致的故障。Speedtest介绍由于公司几个项目用户访问的时候响应较慢&#xff0c;项目本身没问题&#xff0c;服务及调用的接…

oracle leg函数,oracle对象 约束索引 游标 函数

约束视图:视图是存储在数据库中的查询的SQL 语句,视图是一个虚拟表&#xff0c;其内容由查询定义。视图就如同一张表一样&#xff0c;对表能够进行的一般操作都可以应用于视图&#xff0c;例如查询&#xff0c;插入&#xff0c;修改&#xff0c;删除操作等。当对通过视图看到的…

iOS开发ARC内存管理

本文的主要内容&#xff1a; ARC的本质ARC的开启与关闭ARC的修饰符ARC与BlockARC与Toll-Free BridgingARC的本质 ARC是编译器&#xff08;时&#xff09;特性&#xff0c;而不是运行时特性&#xff0c;更不是垃圾回收器(GC)。 Automatic Reference Counting (ARC) is a compile…

php 实时查看公众号加粉数据,公众号实时涨粉数据怎么查看

公众号文章发布后如何查看涨粉效果&#xff1f;怎么根据发文情况来调整公众号运营方向呢&#xff1f;这款能监控实时涨粉数据的我们在进行公众号运营时&#xff0c;除了是简单的写文、排版、推送&#xff0c;还需要通过优质的内容不断吸引新用户快速发展新用户&#xff0c;将公…

【PHP】月末・月初の出力方法

文章出处 &#xff1a; Qiita - http://qiita.com/shoridevel/items/0a2f4a64e55d84919a1c 今月の月初 echo date("Y-m-01", time()); 今月の月末 echo date("Y-m-t", time()); 前月の月初 /* echo date("Y-m-01",strtotime("-1 month"…

oracle数据库控制台命令,Oracle数据库控制台常用命令

安装好数据库我们打开控制台&#xff0c;在控制台来输入命令来操作数据库。SQLPlus命令&#xff1a;SQLPlus命令是用来登录Oracle数据库的命令&#xff0c;有两种写法&#xff0c;分别如下&#xff1a;(一般我们用scott用户来登录Oracle)1.输入SQLPlus命令&#xff0c;在后面直…

两圆相交面积

//求两圆相交的面积 #include<iostream> #include<cstdio> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #define esp 1e-8using namespace std;struct Circle{double x,y;double r; }p[3000]; int cmp(Circl…

oracle存储过程function,oracle 存储过程跟function

当前位置:我的异常网 数据库 oracle 存储过程跟functionoracle 存储过程跟functionwww.myexceptions.net 网友分享于&#xff1a;2014-11-26 浏览&#xff1a;0次oracle 存储过程和functionfunctionfunction 语法中本地调用用 测试用SELECT TO_DATE(2006-05, YYYY-MM) FROM …

Oracle优化 -- 关于Database Buffer Cache相关参数DB_CACHE_SIZE的优化设置

select size_for_estimate, buffers_for_estimate ,ESTD_PHYSICAL_READ_factor,ESTD_PHYSICAL_READS from v$db_cache_advice 2 where block_size8192 and advice_statusON; 中&#xff0c;size_for_estimate表示预计的数据库高速缓冲区的大小&#xff08;即&#xff1…

php 注入是什么意思,如何理解ThinkPHP框架里的依赖注入?

依赖注入&#xff0c;你可以分开理解。拆成&#xff0c;依赖和注入依赖&#xff1a;就是你现在要用 request 对象的get 方法&#xff0c;所有你必须要先能得到request对象&#xff0c;然后才能使用这个方法。这个就是依赖。注入&#xff1a;怎么得到request 对象呢&#xff1f;…

iOS - UITextField

前言 NS_CLASS_AVAILABLE_IOS(2_0) interface UITextField : UIControl <UITextInput, NSCoding>available(iOS 2.0, *) public class UITextField : UIControl, UITextInput, NSCoding 1、UITextField 的创建 Objective-C // 实例化 UITextField 对象UITextFi…

oracle一般人能不能学,Oracle人门学习笔记

1.如何显示当前用户是谁?show user;2.进入sql*plus管理工具&#xff0c;运行里面输入sqlplusw就可以了。3.disc断开当前数据库的连接4.passw修改密码命令示例&#xff1a;passw 回车更改snapall的口令旧口令&#xff1a;*******新口令&#xff1a;******重新键入新口令&#x…

欧拉图

欧拉路径&#xff1a;每条边经过且只经过一次的路径 欧拉回路&#xff1a;如果从某个点出发&#xff0c;经过且只经过每条边一次&#xff0c;最后又回到这个点的路径 欧拉图&#xff1a;存在欧拉回路的图 图&#xff1a; 平凡图&#xff1a;只含有一个点 重边&#xff1a;两点之…

oracle rac standby,oracle RAC数据库建立STANDBY(二)

这篇文章描述为RAC环境创建STANDBY数据库。由于篇幅限制&#xff0c;加上碰到了很多的bug&#xff0c;只能将文章拆分成多篇。这章介绍STANDBY数据库创建的后续操作&#xff0c;并检查STANDBY运行机制&#xff1a;首先登陆实例&#xff0c;检查数据库状态&#xff1a;bash-3.00…

[MySQL] MySQL x64 下载地址

MySQLhttp://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.14-winx64.ziphttp://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-5.7.14.0.msiPHP ServerWampServer2.1d-x64.exe转载于:https://www.cnblogs.com/Areas/p/5759195.html

微信php翻译和天气预报整合,微信公众平台天气预报功能开发

本来是想自己直接从中国天气网获取信息并处理&#xff0c;后来发现处理起来太麻烦&#xff0c;而且要获取所有城市的城市编码&#xff0c;再有就是&#xff01;不支持国外天气&#xff01;&#xff01;(我们学校有很多毕业生在国外上学&#xff0c;所以我考虑还是做出支持国外天…