Struts2入门(五)——OGNL和标签库
2016-11-01 19:56
405 查看
一、前言
OGNL和标签库的作用,粗暴一点说,就是减少在JSP页面中出现java代码,利于维护。1.1、OGNL
1.1.1、什么是OGNL?OGNL(Object-Graph Navigation Language):对象图形导航语言,是一种功能强大的表达式语言,通过简单的语法,就能够任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性的类型转换功能。
1.1.2、OGNL的基本知识
1.OGNL表达式的计算是围绕OGNL上下文进行的
OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示。它里面可以存放很多个JavaBean对象。
它有一个上下文根对象。上下文中的根对象可以直接使用名来访问或直接使用它的属性名访问它的属性值。否则要加前缀“#key”。
2.Struts2的标签库都是使用OGNL表达式来访问ActionContext中的对象数据的。如:<s:propertyvalue="xxx"/>。
3.Struts2将ActionContext设置为OGNL上下文,并将值栈作为OGNL的根对象放置到ActionContext中。
4.值栈(ValueStack) :
可以在值栈中放入、删除、查询对象。访问值栈中的对象不用“#”。
Struts2总是把当前Action实例放置在栈顶。所以在OGNL中引用Action中的属性也可以省略“#”。
5.调用ActionContext的put(key,value)放入的数据,需要使用#访问。
OGNL上下文存储图
package com.Ogml; import java.io.StringWriter; public class Persons { public static String sex = "男"; private String uname; private int age; public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public static void sayhello(){ System.out.println("hello"); } }
Persons
仅作为笔记记录。
1.2、标签库
笔者对于标签库这些,真的不太感兴趣。但是没办法,还是的学着,发下牢骚。1.2.1、标签库的好处
在Struts2中,它提供了大量的标签来生成页面效果,简单说来就是使用标签库中为我们提供的标签来达到我们想过的页面效果。而且标签库的使用非常简单,struts2把所有的标签都定义在URI为"/struts-tags"的命名空间下,我们只需要在页面中引入:<%@ taglib uri="/struts-tags" prefix="s"%>,就可以使用该标签库。
1.2.2、标签库的简单分类
UI标签:主要用于生产HTML元素的标签
非UI标签:主要用户数据访问,逻辑控制标签等
Ajax标签:用户Ajax支持的标签
对于UI标签,则可以分为两类:
1、表单标签:主要生成HTML页面的form元素以及普通标签元素
2、非表单标签:主要用于生成页面上的数据,tag页等标签
非UI标签,也可以分为两类:
1、流程控制标签:主要用于实现分支,循环等流程控制的标签
2、数据访问标签:主要包含输出valueStack中的值,完成国际化等功能的标签
这样就清晰多了。
相关文章推荐
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- java struts2入门学习--OGNL语言基本用法
- Struts2自学入门(六)——OGNL数据标签和控制标签
- struts2入门(8)--OGNL
- Web框架梳理:第一章:Struts2入门、传值、分页、对象、值栈、OGNL、响应方式、标签、拦截器
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- Struts2标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系与各自使用
- Struts2 入门3:Ognl表达式语言与struts标签
- java struts2入门学习--防止表单重复提交.OGNL语言学习
- Struts2标签库和OGNL
- Struts2标签库与OGNL的关系
- struts2_day03_01_ognl概述_02_ognl入门案例
- 20160502-struts2入门--ognl表达式
- 【OA】——Struts2 标签库和 OGNL表达式 使用小结
- 3.11.3: Struts2的标签库---Struts2的ognl表达式语言
- ognl学习(二)---struts2标签库与OGNL表达式的使用
- 3.11.4: Struts2的标签库---ognl中的集合操作
- Struts2 标签库与OGNL的使用
- Struts2入门(8):OSNL &amp; 标签库
- struts2之OGNL和struts2标签库和ValueStack对象