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

读取请求参数

<s:property value="#parameters.id"/>

request

读取request中的属性:

<s:property value="#request.r"/>

session

读取session中的属性:

<s:property value="#session.s"/>

application

读取application中的属性:

<s:property value="#application.a"/>

attr

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

<s:property value="#attr.pc"/>

范例:

<s:iterator value="#{'china':'中国','usa':'美国','e':'俄国'}" var="c">

<s:property value="#c.key"/>--<s:propertyvalue="#c.value"/><br/>

</s:iterator>

范例:

<s:property value="#attr.list.{sname}[0]"/>

<s:property value="#attr.list.{$#this.sid== 3}.{sname}[0]"/>

支持对象方法调用 :

<s:property value="#attr.p.doSomeThing('李四')"/>

调用保存在pageContext中的Student对象的doSomeThing()

[N]语法:

从ValueStack的第N个位置开始取值

top关键字:

取出最顶端的对象

示例::

<s:push value="'阿拉伯联合酋长国'">

<s:property value="[0].top"/>

</s:push>

从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); %>

<s:if test="#attr.n % 7 == 0">恭喜,您中了一等奖! </s:if>

<s:elseif test="#attr.n % 5 ==0">恭喜,您中了二等奖! </s:elseif>

<s:else> 欢迎惠顾!</s:else>

2、迭代标签 iterator

用于循环数组,集合和Map

属性:

value:数组,集合或Map

var:当前元素

status:当前元素的状态index,count,even,odd,first,last

示例:

遍历List

<s:iterator value="{'中华人民共和国', '美利坚合众国', '阿拉伯联合酋长国'}" var="cur"status="st">

<s:property value="#st.count"/>

<s:property value="#cur"/><br/>

</s:iterator>

遍历Map

<s:iterator value="#{1: '中国', 2: '美国', 3: '日本'}" var="cur">

<s:property value="#cur.key"/>

<s:property value="#cur.value"/><br/>

</s:iterator>

3、集合合并标签 append和merge

将多个集合合并成一个集合

属性::  var -  新集合的名称

示例:

<s:appendvar="newCollection">

<s:param value="{'中国', '美国', '日本'}"></s:param>

<s:param value="{'德国', '泰国', '新加坡'}"></s:param>

</s:append>

<s:iterator value="#newCollection"var="cur">

<s:property value="#cur"/><br/>

</s:iterator>

注:merge用法和append相同,结果的组织不一样.

4、字符串分割标签 generator

将一个字符串按照指定分隔符分割成一个字符串数组

属性::

separator: 分隔符

val(value): 字符串

count:字符串數組中元素個數

示例:

<s:generator separator=","val="'中,华人,民共和,国'" var="arr"/>

<s:iterator value="#arr"var="cur">

<s:property value="#cur"/><Br/>

</s:iterator>

5、集合子集标签  subset

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

属性::

source: 集合

start: 起始索引

count: 子集中元素个数

示例:

<s:subset source="{'中国', '美国', '日本', '德国', '泰国', '新加坡'}" start="1"count="3">

<s:iterator  var="cur">

<s:property value="#cur"/>

</s:iterator>

</s:subset>

6、排序标签 sort

根据定义的排序规则,对集合中的元素进行排序,排序后生成的新的集合放在值栈顶部,标签结束后自动删除.

属性::

comparator: 实现Comparator的类

source: 集合

示例:

<s:bean name="com.aptech.sorted.LengthSorted"var="ls“/>

<s:sort comparator="#ls"source="{'中1','88w','777','6666'}">

<s:iterator>

<s:property/><br/>

</s:iterator>

</s:sort>

数据标签

1、设置变量标签 set

用于设置一个新变量,并将新变量放入指定的作用域中

属性:

Var: 新变量的引用

Value:值

示例:

<s:set var="v1"value="'中华人民共和国'" scope="page"></s:set>

<s:property value="#attr.v1"/>

注:如果不指定,默认放在Stack Context中

2、栈顶置值标签 push

将某个值置于值栈的顶部,标签结束后,将从值栈中移除.

属性:

value: 即值

示例:

<s:push value="'中华人民共和国'" >

<s:property/>

</s:push>

3、javabean创建标签 bean

用于创建javabean的实例,如果设置了var值,则存于Stack Context,否则,标签结束后自动移除.

属性:

name: javabean类名(带包)

var: 名称

示例:

<s:bean name="com.aptech.entity.Student"var="stu">

<s:param name="sid">1</s:param>

<s:param name="sname">张三好</s:param>

<s:param name="sbirthday">2009-9-9</s:param>

</s:bean>

<s:property value="#stu.sbirthday"/>

4、日期格式化标签 date

格式化日期并输出

属性:

name:日期

format:格式化字符串

示例:

<%pageContext.setAttribute("d", new Date()); %>

<s:date name="#attr.d"format="yyyy年MM月dd日 HH时mm分ss秒"/>

5、调试标签 debug

用于当前环境下Value Stack和stackcontext中保存的数据

6、资源包含标签 include

用于将一个html,jsp或servlet包含到当前页面中,使用param传递参数

属性:

value:包含页面名称

示例:

<s:include value="MyHtml.html"></s:include>

7、URL生成标签 url

生成URL地址,可以通过param标签传递请求参数,如果参数为中文,自动编码

属性:

value: url值

action: action名称,自动加上.action

示例:

<s:url value="control.jsp"var="url">

<s:param name="id">中华人民共和国</s:param>

</s:url>

<a href="<s:propertyvalue="#url" />">链接</a>

<s:url action="test"var="url2"></s:url>

<s:property value="#url2"/>

8、数据输出标签 property

用于输出值栈,Stack Context中的数据

属性:

value:要输出的值

如果输出值栈中的值,不用#

如果输出Stack Context中的值,要用#

如果省略value,表示取出值栈的栈顶对象输出

总结

OGNL是标签的基础,要理解OGNL的基本使用,在struts2中,OGNL必须和标签紧密配合

控制标签包含一组条件判断标签和一组集合遍历和操作标签

数据标签包含一组数据访问相关的标签

Struts2 标签库详解2的更多相关文章

  1. Struts2 标签库详解

    Struts2标签库 包括: OGNL Struts2标签分类 控制标签 :(if, elseif,else, iterator, append, merge, generator, subset, ...

  2. struts2标签库详解

    要在jsp中使用Struts2的标志,先要指明标志的引入.通过jsp的代码的顶部加入以下的代码: <%@taglib prefix="s" uri="/struts ...

  3. Struts标签库详解【3】

    struts2标签库详解 要在jsp中使用Struts2的标志,先要指明标志的引入.通过jsp的代码的顶部加入以下的代码: <%@taglib prefix="s" uri= ...

  4. struts2标签使用详解

    Struts2常用标签总结一 介绍1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码 ...

  5. Struts标签库详解【1】

    struts2标签详解 要在jsp中使用Struts2的标志,先要指明标志的引入.通过jsp的代码的顶部加入以下的代码: <%@taglib prefix="s" uri=& ...

  6. [转]Struts标签库详解

    本文转自:http://hi.baidu.com/xzkcz/blog/item/5cf9f91f01beb9f4e0fe0bd4.html   Struts提供了五个标签库,即:HTML.Bean. ...

  7. 10.javaweb核心标签库详解

    一.JSTL简介及在项目中安装配置 1,  简介 使用JSTL标签的目的就是不希望jsp中出现java逻辑代码 分类 2,  JSTL的安装配置 首先将jar包中的各个标签库配置文件拷贝到项目WEB- ...

  8. Struts标签库详解,非常好的Struts标签详解

    Struts提供了五个标签库,即:HTML.Bean.Logic.Template和Nested. HTML 标签:         用来创建能够和Struts 框架和其他相应的HTML 标签交互的H ...

  9. java-自定义标签&&JSTL标签库详解

    自定义标签是Jav aWeb的一部分非常重要的核心功能,我们之前就说过,JSP规范说的很清楚,就是Jsp页面中禁止编写一行Java代码,就是最好不要有Java脚本片段,下面就来看一下自定义标签的简介: ...

随机推荐

  1. HSSFClientAnchor(int dx1,int dy1,int dx2,int dy2,short col1,int row1,short col2, int row2)

      public HSSFClientAnchor(int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int  ...

  2. jaxb xml to bean

    package www.garbin.com.utils; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException ...

  3. 8 fastJson的使用

    Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发. 1.遵循http://json.org标准,为其官方网站收录的参考实现之一. 2.功能qiang打, ...

  4. Spring dbcp连接池简单配置 示例

    一.配置db.properties属性文件 #database connection config connection.username=sa connection.password=sa conn ...

  5. mvc4 基于Area实现插件模块化开发

    对于一个较大规模的Web应用,可以从功能上通过Area将其划分为为较小的单元.每个Area相当于一个独立的子系统,具有一套包含Model.Views和Controller在内 的目录结构和配置文件.一 ...

  6. jquery实现导航栏头部点击变换颜色

    实现效果如下: 话不多说直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  7. XJOI网上同步训练DAY2 T2

    [问题描述] 火车司机出秦川跳蚤国王下江南共价大爷游长沙.每个周末勤劳的共价大爷都会开车游历长沙市. 长沙市的交通线路可以抽象成为一个

  8. 《Programming WPF》翻译 第9章 2.选择一个基类

    原文:<Programming WPF>翻译 第9章 2.选择一个基类 WPF提供了很多类,当创建一个自定义元素时,你可以从这些类中派生.图9-1显示了一组可能作为类--可能是合适的基类, ...

  9. 《Programming WPF》翻译 第7章 3.笔刷和钢笔

    原文:<Programming WPF>翻译 第7章 3.笔刷和钢笔 为了在屏幕上绘制一个图形,WPF需要知道你想要为图形填充什么颜色以及如何绘制它的边框.WPF提供了一些Brush类型支 ...

  10. PHPDocumentor安装与使用

    phpDocuemtor官网:http://www.phpdoc.org/ 通过pear安装,进入dos的php目录,输入pear install -a PhpDocumentor.如果想使用web接 ...