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
  • 相关阅读:
    语言及其文法
    编译原理绪论
    数据库系统绪论
    Flask系列-模板
    进程调度
    Flask系列-程序基本结构
    针对博客园上传md文件有点麻烦的解决方案
    博客样式存档二 (目前样式)
    [省选联考 2020 A 卷] 组合数问题
    退役划水(2)
  • 原文地址:https://www.cnblogs.com/chiwang/p/9361480.html
Copyright © 2011-2022 走看看