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; } }
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与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>