struts标签库详解

Struts2标签库
包括:
OGNL
Struts2标签分类
控制标签 :(if, elseif,else, iterator, append, merge, generator, subset, sort)
数据标签 :(bean, param,date, debug, include, set, url, push)

OGNL
    Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(ExpressionLanguage,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性:,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
Struts2默认的表达式语言是OGNL
     OGNL的符号--#:
1、访问OGNL上下文和Action上下文,#相当于ActionContext.getContext() .
2、构造Map
用于过滤和投影(projecting)集合
?——所有匹配选择逻辑的元素
^——只提取符合选择逻辑的第一个元素
$——只提取符合选择逻辑的最后一个元素
名称
作用
示例:
parameters 
读取请求参数

request 
读取request中的属性:

session 
读取session中的属性:

application 
读取application中的属性:

attr
request > session > application顺序访问其属性:

范例:

--


范例:
 

支持对象方法调用 :

调用保存在pageContext中的Student对象的doSomeThing()
[N]语法:
从ValueStack的第N个位置开始取值
top关键字:
取出最顶端的对象
示例::



从ValueStack中的第0个位置开始取出最顶部的对象,返回为”阿拉伯联合酋长国”
Struts2标签分类
    1.分类:
        Struts2标签库:用户界面标签库(表单/非表单标签库),非用户界面标签库(控制标签库,数据访问标签库),ajax支持标签库
     2.导入taglib
<%@taglib prefix=“s”uri=“/struts-tags” %>
控制标签
1、条件标签 if…elseif…else
主要属性::     test : 测试条件
    范例:
<%! Random rnd = newRandom(); %>
 <% int n = rnd.nextInt(200);pageContext.setAttribute("n", n); %>
 恭喜,您中了一等奖!
 恭喜,您中了二等奖!
  欢迎惠顾!
2、迭代标签 iterator
用于循环数组,集合和Map
属性:  
value:数组,集合或Map
var:当前元素
status:当前元素的状态index,count,even,odd,first,last
示例:
遍历List
 
   
   

 

遍历Map
 
 
 

 

     3、集合合并标签 append和merge
     将多个集合合并成一个集合
属性::  var -  新集合的名称
示例:
           


 



 

注:merge用法和append相同,结果的组织不一样.
4、字符串分割标签 generator
  将一个字符串按照指定分隔符分割成一个字符串数组
属性::
separator: 分隔符
val(value): 字符串
count:字符串數組中元素個數
示例:


   


5、集合子集标签  subset
  从集合中取出一个子集,注意:子集被放在值栈的顶部,subset标签执行完后子集自动移除

属性::
source: 集合
start: 起始索引
count: 子集中元素个数
示例:





6、排序标签 sort
     根据定义的排序规则,对集合中的元素进行排序,排序后生成的新的集合放在值栈顶部,标签结束后自动删除.
属性::
comparator: 实现Comparator的类
source: 集合
示例:






数据标签
1、设置变量标签 set
用于设置一个新变量,并将新变量放入指定的作用域中
属性:
Var: 新变量的引用
Value:值
示例:


注:如果不指定,默认放在Stack Context中
2、栈顶置值标签 push
将某个值置于值栈的顶部,标签结束后,将从值栈中移除.
属性:
value: 即值
示例:



3、javabean创建标签 bean
用于创建javabean的实例,如果设置了var值,则存于Stack Context,否则,标签结束后自动移除.
属性:
name: javabean类名(带包)
var: 名称
示例:

1
张三好
2009-9-9


4、日期格式化标签 date
格式化日期并输出
属性:
name:日期
format:格式化字符串
示例:
<%pageContext.setAttribute("d", new Date()); %>

5、调试标签 debug
用于当前环境下Value Stack和stackcontext中保存的数据
6、资源包含标签 include
用于将一个html,jsp或servlet包含到当前页面中,使用param传递参数
属性:
value:包含页面名称
示例:

7、URL生成标签 url
生成URL地址,可以通过param标签传递请求参数,如果参数为中文,自动编码
属性:
value: url值
action: action名称,自动加上.action
示例:

中华人民共和国

">链接


8、数据输出标签 property
用于输出值栈,Stack Context中的数据
属性:
value:要输出的值
如果输出值栈中的值,不用#
如果输出Stack Context中的值,要用#
如果省略value,表示取出值栈的栈顶对象输出
总结
OGNL是标签的基础,要理解OGNL的基本使用,在struts2中,OGNL必须和标签紧密配合
控制标签包含一组条件判断标签和一组集合遍历和操作标签
数据标签包含一组数据访问相关的标签

你可能感兴趣的:(Struts2)