- 浏览: 237007 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (165)
- Java基础 (49)
- 开发工具 (3)
- Python基础 (1)
- Oracle基础 (9)
- Java 符号计算 (0)
- 计算机基本原理 (10)
- SQL (6)
- javascript (16)
- HTML (2)
- XML (4)
- 程序员之路 (7)
- JDBC (1)
- Unicode (0)
- 字符编码 (3)
- JSP基础 (2)
- Servlet&JSP (9)
- MySQL基础 (1)
- UML基础 (1)
- Hibernate (2)
- Java包 (1)
- Spring (1)
- Struts2 (9)
- 系统命令 (1)
- Tomcat (1)
- Windows (1)
- Android (1)
- C#基础 (14)
- HTML5 (1)
- .NET基础 (1)
- 数据库基础 (2)
- ASP.NET基础 (7)
- 开源Java (3)
- 趣味算法 (1)
- 面向对象思想 (1)
- 软件应用 (1)
- Web工程 (1)
- jquery (2)
- JPA (0)
- 设计模式 (0)
最新评论
-
静夜独窗:
JavaBean组件能说的具体一点吗,我感觉这样说理解的不清晰 ...
EL 表达式语言 -
静夜独窗:
在Java中,不同字符集编码的转换是通过Unicode作为中介 ...
JavaWeb中的乱码产生与解决方案
一. Struts2标签概述
Struts2把所有的标签都定义在URI为”/struts-tag”的命名空间下。
Struts2标签分类如下:
(1) UI标签:生成HTML元素的标签。
表单标签:主要用于生成HTML页面的表单元素的标签。
非表单标签:主要用于生成页面上的tree,Tab页等标签。
(2) 非UI标签:数据访问和逻辑控制等标签。
流程控制标签:主要包含用于实现分支,循环等流程控制的标签。
数据访问标签:主要包含用于输出ValueStack中的值,完成国际化等功能的标签。
(3) Ajax标签:用于Ajax支持的标签。(该标签不常用,因为最常使用的是Ajax框架。)
二. 使用Struts2标签库的准备
可以在struts2-core-2.0.11.jar压缩文件的META-INF目录下找到struts-tags.tld文件,该文件里定义了Struts2的标签。
要在jsp中使用Struts2的标志,先要指明标志的引入。通过jsp的代码的顶部加入以下的代码:
<%@taglib prefix="s" uri="/struts-tags" %>
三. Struts2标签语法
Struts2的标签都支持动态数据的访问,标签的属性都可以使用OGNL表达式,struts2标签的属性具有类型,这些类型可以简单地分为字符串类型和非字符串类型。
(1) 对于字符串类型的属性,如果要访问动态数据,需要使用%{…}这样的语法。
例如:<s:include value="%{url}" />
Include标签的value属性是字符串类型,Struts2将对这个属性进行解析,查找符合%{…}样式的字符串,然后将花括号之间的内容作为OGNL表达式进行求值。如果属性中没有%{…}样式的字符串,那么属性的值将被直接看成是字符串数据。
例如:<s:include value="urlTag.action" />
(2) 对于非字符串类型的属性,将作为OGNL表达式进行求值。
例如:<s:property value="username"/>
说明:property标签的value属性是Object类型,username将作为OGNL表达式进行求值,即取得值栈栈顶的对象的username。
如果要为非字符串类型的属性直接指定字符串数据,那么需要使用OGNL中的字符串常量,即用单引号(')或双引号(")将字符串括起来。
例如:<s:property value="'zhangsan'"/>
value属性的值’zhangsan’作为字符串常量,计算结果就是zhangsan,因此输出zhangsan。
(3) 除上述用法之外,可以使用%{…}这样的语法来指定字符串常量。
例如:<s:property value="%{'zhangsan' }"/>
在这种情况下,%{ }将被忽略,花括号中的内容将作为表达式被计算。
总结一下,struts2标签的属性按照下列的三个规则进行计算。
a. 所有的字符串属性类型都会解析“%{…}”这样的语法。
b. 所有的非字符属性类型都不会被解析,而是直接被看作一个OGNL表达式进行求值
c. 对于第二个规则的例外情况是,如果非字符串属性使用了“%{…}”语法,那么%{…}将被忽略,花括号中的内容将作为表达式计算。
如果使用标签时, 忘记了某个属性是字符串类型,还是非字符串类型,那么有一个简单的方法,那就是不考虑它是什么类型,统一使用“%{…}”语法。
四. Struts2通用标签
参考链接 http://struts.apache.org/2.x/docs/struts-tags.html
说明:官方文档可能有写地方是错误的。关键是自己的理解和实验。
Struts2中通用标签可以分为二类:数据标签和控制标签。控制标签用于呈现页面时控制执行流程,数据标签用于访问值栈中的数据。
数据标签:用于访问ActionContext和值栈中的数据。数据标签包括:
property set push param bean action include
url a i18n text date debug
控制标签:用于在呈现结果页面时控制程序的执行流程,根据程序执行的状态输出不同的结果,控制标签包括下列标签:
if/elseif/else iterator append merge
generator subset sort
1. property标签
property标签用于输出指定值。使用value属性来指定要输出的对象属性,如果没有指定value属性,那么默认输出值栈栈顶对象。
property标签的属性
default :String类型。如果value属性是null,则使用default值.
Escape :Boolean类型。是否转义输出内容中的HTML,例如,当该属性的值为true时,.&将被转移为&
value :Object类型。进行求值的表达式。默认为栈顶对象。
例:<s:property value=”usename” default=”游客” />
2. set标签 http://struts.apache.org/2.x/docs/set.html
set标签用于将值赋给指定范围内的变量。即将对象放入值栈中指定的范围中去。使用set标签常用于在循环或其他情况下更换名称。
name :2.1废弃。
val :String类型。新变量的名字。
value :Object类型。指定一个表达式,计算的结果赋给变量。默认为栈顶对象。
scope :String类型。变量的范围,可选的值为application、session、request、page、action。默认为action。
说明:
set标签以name属性的值作为键(key),将value属性的值保存到指定的范围对象中。scope属性取值中的page,request,session,application同JSP4种范围,如果指定action范围(默认值),value属性的值将被同时保存到request范围和OgnlContext中。
3. include标签
include标签的属性
在jsp2.jsp中,我们使用JSP的EL表达式来获取传的请求参数。注意:在include标签内部使用param标签向被包含的页面传递的请求参数,不能使用如下的property标签来访问:<s:property value=“#parameters.username” />
#parameters引用的实质是一个Map对象,并不等同于HttpServletRequest对象。
在包含页面时,如果页面中有中文,将会出现乱码,要解决这个问题,可以在struts.xml文件中配置struts.i18n.encoding属性,如下:
<constant name=“struts.i18n.encoding” value=“gbk” />
访问路径:http://localhost:8080/.../includeTag.jsp
4. date标签
date标签用于格式化输出日期值,也可用于输出当前日期值与指定日期值之间的时差
date标签的属性
注意:
1、format属性用于指定日期的格式化样式,具体的样式规则可以参看java.text.SimpleDateFormat类的API文档。
2、将nice属性设为true,可以输出指定日期值和当前日期值之间的时差,此时format属性失效,也就是说,当nice属性为true时,即使你指定了format属性,它也不会起作用
3、如果没有使用nice属性,也没有指定format属性,那么date标签将会在国际化资源包中查找struts.date.format键,并以这个键的值作为日期的格式化样式;如果这个键不存在,那么默认将会使用DateFormat.MEDIUM格式化样式。
4、如果找不到name属性指定的Date对象,那么将返回空。
date标签示例
第一步
在ApplicationResources.properties文件中添加struts.date.format键
struts.date.format=yyyy/MM/dd hh:mm:ss
第二步
可以使用struts2的struts.custom.i18n.resources属性来设置默认的资源包,编辑struts.xml文件,使用constant元素来配置struts.custom.i18n.resources属性,内容如下
<constant name=“struts.custom.i18n.resources” value=“ApplicationResources”/>
控制标签
if/elseif/else 标签
分支控制
格式:
<s:if test=”表达式”>
标签体
</s:if>
<s:elseif test=”表达式”>
标签体
</s:elseif>
……其他<s:elseif>标签……
<s:else>
标签体
</s:else>
iterator标签
主要用于对集合进行遍历。
<s:iterator…/>标签对集合进行遍历输出时.可以指定如下3个属性.
IteratorStauts实例包含方法
int getCount():返回当前迭代过元素的总数。
int getIndex():返回当前迭代元素的索引。
boolean isEven():判断当前迭元素是否为偶数。
boolean isOdd():判断当前迭元素是否为奇数。
boolean isFirst():判断当前迭元素是否为第一个元素。
boolean isLast():判断当前迭元素是否为最后一个元素
IteratorStauts的这些方法分别对应了count,index,even,odd,first,last属性
控制标签----- iterator标签示例
控制标签----- iterator(迭代标签)举例
<s:iterator value ="{'第一个元素','第二个元素'}" >
<p>day is: <s:property/></p>
</s:iterator>
private List myList;
private Map myMap;
public String execute() throws Exception {
myList = new ArrayList();
myList.add("第一个元素");
myList.add("第二个元素");
myList.add("第三个元素");
myMap = new HashMap();
myMap.put("key1", "第一个元素");
myMap.put("key2", "第二个元素");
myMap.put("key3", "第三个元素");
return SUCCESS;
}
省略生成setter/getter方法
<table>
<s:iterator value="{'第一个元素','第二个元素'}" status="st">
<tr>
<td><s:property value="#st.getIndex()" /></td>
<td><s:property /></td>
</tr>
</s:iterator>
</table>
<h2>显示List属性</h2>
<table>
<s:iterator value="myList" status="st">
<tr>
<td><s:property value="#st.getIndex()" /></td>
<td><s:property /></td>
</tr>
</s:iterator>
</table>
<h2>显示Map</h2>
<table>
<s:iterator value="#{'key1':'第一个元素','key2':'第二个元素'}" status="st">
<tr>
<td><s:property value="#st.getIndex()" /></td>
<td><s:property /></td>
</tr>
</s:iterator>
</table>
<h2>显示Map属性</h2>
<table>
<s:iterator value="myMap" status="st">
<tr>
<td><s:property value="#st.getIndex()" /></td>
<td><s:property /></td>
</tr>
</s:iterator>
</table>
select标签
select标签输出一个HTML列表框,等价于HTML代码:
select标签示例
示例一:
<s:form>
<s:select label=“最高学历” name=“education” list=“{‘高中’,‘大学’,‘硕士’}” />
</s:form>
在select标签的list属性中直接使用OGNL表达式创建了一个列表,列表中的每一项都将作为HTML列表框的一个选项。
示例二:
<s:form>
<s:select label=“最高学历” name=“education” list=“#{1:‘高中’,2:‘大学’,3:‘硕士’}” />
</s:form>
在select标签的list属性中直接使用OGNL表达式创建了一个Map。在这里要注意的是,Map的key是作为列表框选项的值,而Map中的value是作为列表框选项的内容。
示例三:
<s:form>
<s:select label=“最高学历” name=“education” list=“{‘高中’,‘大学’,‘硕士’}” headerKey=“-1” headerValue=“请选择你的学历” />
Header选项主要用来越提示作用,因此应该将header选项的值(通过headerKey属性设置)设为无意义的值,例如此处的-1.
示例四:
<s:form>
<s:select label=“最高学历” name=“education” list=“{‘高中’,‘大学’,‘硕士’}” headerKey=“-1” headerValue=“请选择你的学历” emptyOption=“true” multiple=“true” / >
使用emptyOption属性在header选项后添加一个空的选项。
multiple属性设为false,则只能从下拉列表中选择一个选项,如果设为true,则可以多选。
发表评论
-
Struts2的Ajax应用
2013-04-21 17:37 902一、基本原理 使用拦截器机制,对Action的成员变量做 ... -
文件的上传与下载
2012-08-28 22:56 1293一. 文件上传的原理 表单元素的enctype属性 enc ... -
Struts2异常处理
2012-08-25 23:48 1748传统异常处理方式 Java中的所有异常的根类是Thro ... -
注解配置Struts2 Action
2012-08-25 23:47 2836一. 基础配置 1. ParentPackage注解的 ... -
Struts2 Result基本配置
2012-08-25 23:46 1312一. Result配置概述 result代表了一个可能的输出 ... -
Struts2 Action和Action配置
2012-08-25 23:45 1914一. Action实现类 1. Ac ... -
Struts2基本配置文件
2012-08-25 16:09 2140配置文件无需记忆,请尽量复制粘贴局部更改。 一.简述 ... -
整合Struts2 Spring Hibernate
2012-08-12 17:34 1163Struts2,Spring,Hibernate各自的职责 ...
相关推荐
在Struts2框架中,标签库是其一大特色,它提供了丰富的自定义标签,使得开发者能够更加便捷地创建动态页面。这些标签极大地简化了JSP页面的编写,提高了代码的可读性和可维护性。 1. **Struts2核心标签库**: - `s...
Struts2 标签库详解 Struts2 提供了一个强大的标签库,用于简化 Web 应用程序的开发过程。这些标签可以分为两类:通用标签和 UI 标签。下面,我们将详细介绍 Struts2 标签库的使用。 4.1 通用标签 通用标签用来...
Struts2标签是Java开发中一个非常重要的工具,它极大地简化了MVC框架下的视图层构建,使得开发者能够更加高效地实现动态网页。在Struts2框架中,标签库是一系列预定义的JSP标签,它们提供了丰富的功能,如数据绑定、...
Struts 2 标签的使用注意事项 Struts 2 是一个基于MVC架构的Java Web应用程序框架,它提供了一系列的标签来简化Web开发。然而,在使用Struts 2标签时,需要注意一些重要的事项。 首先,在使用Struts 2标签之前,...
"Struts2标签库详解" Struts2标签库是Struts2框架中的一个重要组件,它提供了一系列的标签,帮助开发者快速构建Web应用程序。在Struts2标签库中,标签可以分为UI标签和非UI标签两大类。UI标签用于生成HTML控件,如...
在Struts2框架中,标签库是其重要组成部分,它提供了丰富的标签来帮助开发者更方便地构建用户界面。下面我们将深入探讨Struts2标签的使用及其API文档。 1. **Struts2标签的分类与功能** - **控制标签**:如`s:if`,...
在Struts2中,标签库是其核心特性之一,它提供了一系列预定义的JSP标签,用于简化视图层的编码,提高代码的可读性和可维护性。下面我们将详细探讨Struts2标签的使用方法以及EL(Expression Language)表达式。 1. *...
2. **Struts2标签**:Struts2提供了一系列自定义标签来简化视图层的开发。例如,我们可以使用`<s:textfield>`标签来创建输入框,`<s:password>`标签用于密码输入,`<s:submit>`标签则用于提交表单。 ```jsp ...
在Struts2框架中,标签库是其核心特性之一,它提供了丰富的UI组件和控制逻辑,使得开发者可以更加便捷地进行页面渲染和交互处理。本文将深入探讨Struts2标签的中文文档,以及如何利用这些文档进行有效开发。 首先,...
Struts2标签库的组成 Struts2框架的标签库可以分为以下三类: 用户界面标签(UI标签):主要用来生成HTML元素的标签。 表单标签:主要用于生成HTML页面的FORM元素,以及普通表单元素的标签。 非表单标签:主要用于生成...
本文将深入探讨Struts2标签和Tiles库的使用,以及它们在实际开发中的应用。 1. **Struts2标签** Struts2提供了丰富的标签库,这些标签使得开发者能够在JSP页面中方便地实现业务逻辑和控制流程。例如: - `s:...
首先,Struts2标签库分为两大类:核心标签库和展示标签库。核心标签库提供了一组基础功能,如表单处理、控制流程、消息显示等,而展示标签库则包含更具体的UI元素,如数据展示、分页等。了解这些标签库的使用,可以...
参考文档是开发者理解和使用Struts2标签的关键资源,它详细阐述了每个标签的功能、属性、用法及示例,有助于快速学习和掌握Struts2的视图层开发。 通过深入学习和实践Struts2的标签API,开发者可以有效地提升Web...
利用Struts 2标签创建ex3.jsp页面,此页面提交给tag.action,在structs.xml中配置这个action的转发视图为result.jsp在result.jsp页面中显示ex3.jsp页面控件的值。(源代码和实验报告)
Struts2标签库是Java Web开发中非常重要的一个部分,它是Apache Struts框架的一部分,用于简化JSP页面的编写,提高代码的可读性和可维护性。本资源包含了一个PDF和Word格式的文档,旨在详细介绍如何使用Struts2的...
Struts2标签详解与实例 在Java Web开发中,Struts2框架因其强大的MVC(模型-视图-控制器)架构而备受青睐。Struts2提供了丰富的标签库,简化了视图层的开发,使开发者可以更加专注于业务逻辑。本文将深入探讨Struts...
struts2 标签 Taglib (Struts2标签库)
第五章:struts2标签库