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 标签库详解的更多相关文章

  1. Struts2 标签库详解2

    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. C# ManualResetEventSlim 实现

    ManualResetEventSlim通过封装 ManualResetEvent提供了自旋等待和内核等待的组合.如果需要跨进程或者跨AppDomain的同步,那么就必须使用ManualResetEv ...

  2. Mongo 常用操作

    1.查询 [基本形式]db.col.find().pretty():pretty() 方法以格式化的方式来显示所有文档. [获取记录条数]:db.users.find().count(); [读取指定 ...

  3. MFC更换窗口图标

      https://blog.csdn.net/deep_kang/article/details/72722692: MFC更换图标,图像默认为MFC,主要步骤有三步. 第一步 找到一张图片(坑点: ...

  4. Python对List中的元素排序

    首先定义一个compare函数: def compare(sf1, sf2): if (sf1.value > sf2.value): return -1; elif (sf1.value == ...

  5. 解析 .Net Core 注入——注册服务

    在学习 Asp.Net Core 的过程中,注入可以说是无处不在,对于 .Net Core 来说,它是独立的一个程序集,没有复杂的依赖项和配置文件,所以对于学习 Asp.Net Core 源码的朋友来 ...

  6. 20151224今天发现到的两篇关于CSS架构、可复用可维护CSS和CSS学习提升能有改变思想观念意识的文章 分别是CSS架构目标和说说CSS学习中的瓶颈

    多讲一个,CSS全称是什么?CSS全称为Cascading Style Sheets,中文翻译为“层叠样式表”,简称CSS样式表又被我们称为CSS样式,CSS样式又被作为一种能制作出各种样式网页的技术 ...

  7. H+ 关闭menuTab页面

    //注:在contabs.js文件中 $(function () { }); 方法外 加入//注: data-name="' + menuName + '" 这句是加入的自定义属性 ...

  8. hive SQL 行转列 和 列转行

    一.行转列的使用 1.问题 hive如何将 a       b       1a       b       2a       b       3c       d       4c       d  ...

  9. The thumbprint of same asymmetric key is not same in 'SQL Server Connector for Microsoft Azure Key Vault' 1.0.4.0 and 'SQL Server Connector for Microsoft Azure Key

    https://support.microsoft.com/en-us/help/4470999/db-backup-problems-to-sql-server-connector-for-azur ...

  10. [MySQL Status] Queries,Questions,read/s区别,Com_Commit和handle_commit

    Queries: 这个状态变量表示,mysql系统接收的查询的次数,包括存储过程内部的查询   Questions: 这个状态变量表示,mysql系统接收查询的次数,但是不包括存储过程内部的查询   ...