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
原创粉丝点击