struts2_11.2_OGNL(2)
来源:互联网 发布:罗浮威尔瓷砖 知乎 编辑:程序博客网 时间:2024/06/06 01:26
Cat.java
public class Cat { private static String color="RED"; private String name; private int age; private Dog dog; public Cat() {} public Cat(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } public String miaomiao(){ return "喵喵"; } public static String miaomiao1(){ return "static喵喵"; } @Override public String toString() { return this.name; }}
Dog.java
public class Dog { public static String color="GREEN"; private String name; private int age; public Dog() { // TODO Auto-generated constructor stub } public Dog(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String wangwang(){ return "汪汪"; } public static String wangwang1(){ return "static汪汪"; } @Override public String toString() { return this.name; }}
User.java
public class User { private String name; private int age; public User() { } public User(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return this.name; }}
animalAction .java
public class animalAction extends ActionSupport{ private User user; private List<User> users = new ArrayList<>(); private Dog dog; private Set<Dog> dogs = new HashSet<>(); private Cat cat; private Map<String,Cat> cats = new HashMap<>(); public animalAction() { users.add(new User("小明")); users.add(new User("小红")); users.add(new User("小刚")); dogs.add(new Dog("金毛",1)); dogs.add(new Dog("萨摩",2)); dogs.add(new Dog("藏獒",3)); cats.put("Jerry", new Cat("大脸猫",4)); cats.put("Tom", new Cat("小奶猫",5)); cats.put("Jack", new Cat("长尾猫",6)); } public String excute(){ return SUCCESS; } public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } public Set<Dog> getDogs() { return dogs; } public void setDogs(Set<Dog> dogs) { this.dogs = dogs; } public Map<String, Cat> getCats() { return cats; } public void setCats(Map<String, Cat> cats) { this.cats = cats; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Cat getCat() { return cat; } public void setCat(Cat cat) { this.cat = cat; }}
OGNL2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%@ taglib uri="/struts-tags" prefix="s" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><hr>cat age:<s:property value="cat.age"/></br>dog age:<s:property value="dog.age"/></br>值栈中对象的普通的方法:<s:property value="cat.miaomiao()"/></br>值栈中对象的普通的方法:<s:property value="dog.wangwang()"/></br>值栈中action的方法:<s:property value="excute()"/></br><hr>访问普通类的静态方法:<s:property value="@com.test.dog.Dog@wangwang1()"/></br>访问普通类的静态变量:<s:property value="@com.test.dog.Dog@color"/></br>访问Math类的静态方法:<s:property value="@@max(2,3)"/></br><hr>访问普通类的构造方法:<s:property value="new com.test.dog.Dog('阿黄',12)"/></br><hr />访问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]"/> | <s:property value="users[0].age"/></br>访问Set:<s:property value="dogs"/></br>访问Set中某个元素:<s:property value="dogs[1]"/></br><!-- set是无序的 这样取没用 -->访问Map:<s:property value="cats"/></br>访问Map中某个元素:<s:property value="cats.Jerry"/> | <s:property value="cats['Jerry']"/> | <s:property value="cats[\"Jerry\"]"/></br>访问Map中所有的key:<s:property value="cats.keys"/></br>访问Map中所有的value:<s:property value="cats.values"/></br>访问容器的大小:<s:property value="cats.size()"/> | <s:property value="users.size"/></br><hr />投影(过滤):<s:property value="cats.{?#this.age==4}[0]"/></br><!-- cats.{?#this.age==0}代表取age等于0的那个对象,这是个集合,因为age等于0的可能不止一个 -->投影:<s:property value="cats.{^#this.age>1}.{age}"/></br><!-- cats.{^#this.age>1}拿到age大于1的对象集合里的第一个 -->投影:<s:property value="cats.{$#this.age>1}.{age}"/></br><!-- cats.{$#this.age>1}拿到age大于1的对象集合里的最后一个 -->投影:<s:property value="cats.{$#this.age>1}.{age} == null"/></br><!-- 判断是否有age大于1的对象,返回true或者false --><hr />[]:<s:property value="[0]"/><!--[i]代表Value Stack Contents里第i个开始一直到栈底,[i].xxx代表第i个对象的xxx属性值--><s:debug></s:debug><hr></body></html>
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" /><!-- 开发模式,修改xml文件后不需要重启tomcat,立即生效 --> <constant name="struts.i18n.encoding" value="utf-8" /> <constant name="struts.ognl.allowStaticMethodAccess" value="true" /> <package name="OGNL2" namespace="/OGNL2" extends="struts-default"> <action name="OGNL2" class="com.test.action.animalAction" method="excute"> <result>/OGNL2.jsp</result> </action> </package></struts>
0 0
- struts2_11.2_OGNL(2)
- struts2_11.1_OGNL(1)
- 【重温】_Struts2重温笔记,要点概述_OGNL表达式【二】
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- >2
- Windows API分类
- Ubuntu在任意目录下打开terminal
- 创建 Image
- PHP7中php.ini、php-fpm和www.conf 配置
- 二叉树前序、中序、后序遍历相互求法
- struts2_11.2_OGNL(2)
- 结构型模式之桥接模式(Bridge)
- npm install -g n 运行错误
- Golang应用的多场景Dockerfile
- 使用docker compose部署服务【转】
- xajax简单例子,复制运行就明白了
- 理解 Glance
- 【厚积薄发】编程技术总结3—递归函数使用的优缺点详解
- 前端跨域问题遇到的坑及解决方式