zoukankan      html  css  js  c++  java
  • structs2 投影的介绍

    第一部分:代码


    //前端
    访问属性


    //web.xml
    <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/struts2/ognl/ognl.xml/">   
    </include></constant></constant></struts>


    //ognl.xml
    <struts>
        <package extends="struts-default" name="ognl">
             
                <result>/ognl.jsp</result>
            </action>
             
                <result type="chain">ognl</result>
            </action>
        </package>
    </struts>


    //类包
    //ognl.java
    package com.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 String password;
        private String username;
     
        private User user;
        private Cat cat;
     
        private List<user> users = new ArrayList<user>();
        private Set<dog> dogs = new HashSet<dog>();
        private Map<string, dog=""> dogMap = new HashMap<string, dog="">();
     
     
        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 String getPassword() {
            return password;
        }
         
        public String getUsername() {
            return username;
        }
     
     
        public User getUser() {
            return user;
        }
     
     
        public Cat getCat() {
            return cat;
        }
         
        public List<user> getUsers() {
            return users;
        }
        public Map<string, dog=""> getDogMap() {
            return dogMap;
        }
     
     
        public Set<dog> getDogs() {
            return dogs;
        }
     
     
        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;
        }
    }
     
    //user.java
    package com.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;
        }
    }</user></dog></string,></dog></string,></user></string,></string,></dog></dog></user></user>


    //cat.java
    package com.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.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;
        }
    }
    ?
    1
    //展示
    访问值栈中的action的普通属性: username =
    访问值栈中对象的普通属性(get set方法): | | | wrong: <%----%>
    访问值栈中对象的普通属性(get set方法):
    访问值栈中对象的普通方法:
    访问值栈中对象的普通方法:
    访问值栈中action的普通方法:
    访问静态方法:
    访问静态属性:
    访问Math类的静态方法:
    访问普通类的构造方法:
    访问List:
    访问List中某个元素:
    访问List中元素某个属性的集合:
    访问List中元素某个属性的集合中的特定值: |
    访问Set:
    访问Set中某个元素:
    访问Map:
    访问Map中某个元素: | |
    访问Map中所有的key:
    访问Map中所有的value:
    访问容器的大小: |
    投影(过滤):
    投影:1}.{age}/>
    投影:1}.{age}/>
    投影:1}.{age} == null/>
    []:
    第二部分:分析


    -> 点击之后,根据配置文件里里面的配置,找到文件包含
    -> 查找ognl.xml文件


    <struts>
            <package extends="struts-default" name="ognl">
                 
                    <result>/ognl.jsp</result>
                </action>
                 
                    <result type="chain">ognl</result>
                </action>
            </package>
           </struts>
     


    -> 根据xml配置文件里面的action关联的类,构造类对象;
    -> 根据ognl.java构造ognl对象;
    -> 展示阶段进行取值显示,有几种访问方式需要注意:
    -> 访问值栈中属性,值栈中对象的方法,静态方法,静态属性,容器对象;
    访问值栈中的action的普通属性
    值栈中对象的普通属性
    值栈中对象的普通方法
    值栈中action的普通方法
    静态方法访问方式@类名@方法名


    需要在web.xml中设置 value=true>
    查看默认设置的方法:/Struts2_1900_OGNL / WebRoot / WEB-INF / lib / struts2-core-2.1.6.jar /default.properties
    访问集合
    -> 调用方法
    ?
    1
    http://localhost:8080/Struts2_1900_OGNL/ognl.action?username=u&password=p&user.age = 19&cat.friend.name =oudy
    第三部分;讨论


    Object Graph Navigation Language
    对象图导航语言


    第四部分:有关投影的讨论


    投影即过滤功能。
    过滤写法:
    ?
    1
     
    投影(过滤):
    投影:1}.{age}/>
    投影:1}.{age}/>
    投影:1}.{age} == null/>
    以? ^ $ 开头加上过滤条件,和正则表达式不相同;
    this表示循环过程中的对象,帮助你做一些循环;


    投影(过滤):
    表示从从users中取出age=1的那一个,结果是一个集合;


    投影(过滤):
    表示从从users中取出age=1的第一个,结果是一个;
    投影:1}.{age}/>
    表示从从users中取出age>1的集合结尾的那一个;
  • 相关阅读:
    PAT 甲级 1126 Eulerian Path (25 分)
    PAT 甲级 1126 Eulerian Path (25 分)
    PAT 甲级 1125 Chain the Ropes (25 分)
    PAT 甲级 1125 Chain the Ropes (25 分)
    PAT 甲级 1124 Raffle for Weibo Followers (20 分)
    PAT 甲级 1124 Raffle for Weibo Followers (20 分)
    PAT 甲级 1131 Subway Map (30 分)
    PAT 甲级 1131 Subway Map (30 分)
    AcWing 906. 区间分组 区间贪心
    AcWing 907. 区间覆盖 区间贪心
  • 原文地址:https://www.cnblogs.com/lechance/p/4373278.html
Copyright © 2011-2022 走看看