您的位置:首页 > 编程语言 > Java开发

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中的值,完成国际化等功能的标签



这样就清晰多了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: