zoukankan      html  css  js  c++  java
  • struts入门三

    OGNL基础语法以及与Struts框架整合 的体现

    一:OGNL基础语法

      1.创建实体类

    package cn.itcast.domain;
    /**
    * @author 作者
    * @version 创建时间:2018年7月24日 上午9:51:20
    * 类说明:
    */
    public class User {
        private String name;
        private Integer age;
        public User() {
            
        }
        public User(String name,Integer age) {
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        
    }
    User

      2.OGNL基础语法 

    package cn.itcast.ognltest;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.junit.Test;
    
    import cn.itcast.domain.User;
    import ognl.Ognl;
    import ognl.OgnlContext;
    import ognl.OgnlException;
    
    /**
     * @author 作者
     * @version 创建时间:2018年7月24日 上午9:52:17 类说明:OGNL基础语法 基础步骤: 1.创建root
     *          放置任何对象作为Root都可以 2.创建Context 核心是里面放置Map键值对 3.将root的值和Context的值放入OGNL中
     */
    public class OgnlBase {
        private User userRoot = new User();
        private Map<String, User> context = new HashMap<String, User>();
        private OgnlContext oc = new OgnlContext();
    
        // 基本步骤
        public void test01() {
            // 1.创建root 放置任何对象作为Root都可以
            // User userRoot = new User();
            userRoot.setName("张三");
            userRoot.setAge(18);
            // 2.创建Context 核心是里面放置Map键值对
            // Map是接口不能实例化,只能使用其实现类实例化
            // Map<String,User> context = new HashMap<String,User>();
            context.put("user1", new User("李四", 19));
            context.put("user2", new User("王五", 20));
            // 3.将root的值和Context的值放入OGNL中
            // OgnlContext ognl = new OgnlContext();
            oc.setRoot(userRoot);
            oc.setValues(context);
        }
    
        // 基本取值
        @Test
        public void test02() throws OgnlException {
            test01();
            // 从root中取值
            String name = (String) Ognl.getValue("name", oc, oc.getRoot());
            // 从context中取值
            String name1 = (String) Ognl.getValue("#user1.name", oc, oc.getRoot());
            // 打印
            System.out.println(name);
            System.out.println(name1);
        }
    
        // 基本赋值
        @Test
        public void test03() throws OgnlException {
            test01();
            // 给root中赋值
            Ognl.getValue("name='八戒'", oc, oc.getRoot());
            String name = (String)Ognl.getValue("name", oc, oc.getRoot());
            // 给context中赋值
            Ognl.getValue("#user1.name = '悟空'", oc, oc.getRoot());
            String name1 = (String) Ognl.getValue("#user1.name", oc, oc.getRoot());
            // 打印
            System.out.println(name);
            System.out.println(name1);
        }
        // 调用方法
        @Test
        public void test04() throws OgnlException {
            test01();
            Ognl.getValue("setName('唐僧')", oc, oc.getRoot());
            String name = (String)Ognl.getValue("getName()", oc, oc.getRoot());
            // 调用context方法
            Ognl.getValue("#user1.setName('沙僧')", oc, oc.getRoot());
            String name1 = (String) Ognl.getValue("#user1.getName()", oc, oc.getRoot());
            // 打印
            System.out.println(name);
            System.out.println(name1);
        }
    
        // 调用静态方法
        @Test
        public void test05() throws OgnlException {
            test01();
            //例如调用系统自带的方法 @Java.lang.Math完整类名
            Double pi = (Double) Ognl.getValue("@java.lang.Math@PI", oc, oc.getRoot());
            System.out.println(pi);
        } 
    
        // 创建对象(List,Map)
        @Test
        public void test06() throws OgnlException {
            test01();
            //创建List对象
            Integer size = (Integer)Ognl.getValue("{'唐僧','悟空','八戒','沙僧'}.size()", oc, oc.getRoot());
            String name = (String)Ognl.getValue("{'唐僧','悟空','八戒','沙僧'}[0]", oc, oc.getRoot());
            String name1 = (String)Ognl.getValue("{'唐僧','悟空','八戒','沙僧'}.get(1)", oc, oc.getRoot());
            System.out.println(size);
            System.out.println(name);
            System.out.println(name1);
            //创建Map对象
            Integer size1 = (Integer)Ognl.getValue("#{'name':'tom','age':20,'adress':'秦皇岛'}.size()", oc, oc.getRoot());
            String name2 = (String)Ognl.getValue("#{'name':'tom','age':20,'adress':'秦皇岛'}['name']", oc, oc.getRoot());
            Integer age = (Integer)Ognl.getValue("#{'name':'tom','age':20,'adress':'秦皇岛'}.get('age')", oc, oc.getRoot());
            String adress = (String)Ognl.getValue("#{'name':'tom','age':20,'adress':'秦皇岛'}.get('adress')", oc, oc.getRoot());
            System.out.println(size1);
            System.out.println(name2);
            System.out.println(age);
            System.out.println(adress);
        }
    }
    OGNL基础语法

    二:OGNL与Struts框架整合

      1..导包

      2.配置struts文件

      3.配置web.xml

      4.书写action

    package cn.itcast.ognltest;
    /**
    * @author 作者
    * @version 创建时间:2018年7月24日 下午5:15:29
    * 类说明:
    */
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    
    import cn.itcast.domain.User;
    
    public class StrutsOgnlAction extends ActionSupport implements ModelDriven<User>{
        private User user = new User();
        
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            System.out.println(user);
            return super.execute();
        }
    
        @Override
        public User getModel() {
            // TODO Auto-generated method stub
            return user;
        }
    }
    接受参数

      5.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">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="${pageContext.request.contextPath}/StrutsOgnlAction" method="post">
        用户名:<input type="text" name="name"/>
        <input type="submit" value="提交" />
        </form>
    </body>
    </html>
    jsp
  • 相关阅读:
    react ts axios 配置跨域
    npm run eject“Remove untracked files, stash or commit any changes, and try again.”错误
    java 进程的参数和list的线程安全
    帆软报表 大屏列表跑马灯效果JS
    帆软报表 快速复用数据集,避免重复劳动
    分析云 OA中部门分级思路和实现方法
    分析云 分段器 只显示一个块的数据
    分析云 更改服务默认的端口号
    分析云U8项目配置方法新版本(2)
    Oracle 创建时间维度表并更新是否工作日字段
  • 原文地址:https://www.cnblogs.com/chiwang/p/9361480.html
Copyright © 2011-2022 走看看