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. HTML5开发入门经典教程和案例合集(含视频教程)

    HTML5作为下一代网页语言,对Web开发者而言,是一门必修课.本文档收集了多个HTML5经典技术文档(HTML5入门资料.经典)以及游戏开发案例以及教学视频等,帮助同学们掌握这门重要的技术. 资源名 ...

  2. Struts2.3.16.3 基本9个jar包

    实践证明,Struts2.3.16.3 至少要下面9个Jar包才能正常启动. commons-fileupload-1.3.1.jar commons-logging-1.1.3.jar freema ...

  3. C#界面设计疑问

    1.就是想做一个类似下面界面的窗体,上面一排按键,点击一个下面对应改变一次界面的内容,这是如何实现的呢 ...是不是通过,比如这里有四个按键,然后使用4个大小相同的面板,每个面板内容不同.按一个按键, ...

  4. JavaScript 作用域和闭包

    作用域的嵌套将形成作用域链,函数的嵌套将形成闭包.闭包与作用域链是 JavaScript 区别于其它语言的重要特性之一. 作用域 JavaScript 中有两种作用域:函数作用域和全局作用域. 在一个 ...

  5. 网页UI视觉设计规范

  6. ecshop优化修改sitemap.xml到根目录

    大家都知道sitemap.xml是用来给搜索引擎提交收录的工具,虽然搜索引擎自己也会收录网站但是有了sitemap.xml之后速度会加快不少.而ecshop程序是有自动生成sitemap.xml的功能 ...

  7. 【转】linux之自建yum仓库

    原链接:http://www.live-in.org/archives/1410.html 平时使用yum方式安装更新软件,可以自建一个yum源,同步官方更新源,这样如果本地有机器要升级的话就可以直接 ...

  8. memcached的安装

    最近在研究怎么让Discuz!去应用Memcache去做一些事情,记录下Memcache安装的过程. Linux下Memcache服务器端的安装 服务器端主要是安装memcache服务器端,目前的最新 ...

  9. 灯塔(LightHouse)

    Description As shown in the following figure, If another lighthouse is in gray area, they can beacon ...

  10. JWeb备忘录

    一.好记性不如赖笔头-- 工具类: JUnit4使用  MyEclipse快捷键 知识点: JAVA反射 JavaSe教程  Java5新特性  Java6新特性  Java7新特性  Java8新特 ...