• 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的集合结尾的那一个;
  • 相关阅读:
    Linux 命令ln
    基于ifix组态软件研究控制按钮权限
    Linux sar 性能监控命令
    使用Oracle执行计划分析SQL性能
    谈谈解决问题的思路
    MySQL技术内幕:InnoDB存储引擎 pdf下载
    算法笔记 pdf下载
    Python最佳代码实践:性能、内存和可用性!
    利用Python进行数据分析 pdf下载
    主流 NoSQL 数据库常见应用场景详解
  • 原文地址:https://www.cnblogs.com/lechance/p/4373278.html
Copyright © 2020-2023  润新知