在上一篇文章《为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。如果,您看完《为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我。我的E-MAIL:Max.M.Yuan@gmail.com。
在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。
|
Struts 1.x |
Struts 2.0 |
分类 |
将标志库按功能分成HTML、Tiles、Logic和Bean等几部分 |
严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志 |
表达式语言(expression languages) |
不支持嵌入语言(EL) |
OGNL、JSTL、Groovy和Velcity |
以上表格,纯属个人总结,如有所不足或错误,请不吝指正
好了,我要开始介绍“常用”(这里所谓的“常用”,是指在已往工作中使用Struts里经常用到的)的标志了。
|
要在JSP中使用Struts 2.0标志,先要指明标志的引入。通过在JSP的代码的顶部加入以下代码可以做到这点。 <%@taglib prefix="s" uri="/struts-tags" %> |
- 非UI标志
- if、elseif和else
描述:
执行基本的条件流转。
参数:
名称 |
必需 |
默认 |
类型 |
描述 |
备注 |
test |
是 |
|
Boolean |
决定标志里内容是否显示的表达式 |
else标志没有这个参数 |
id |
否 |
|
Object/String |
用来标识元素的id。在UI和表单中为HTML的id属性 |
|
例子:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Condition Flow</title>
</head>
<body>
<h3>Condition Flow</h3>
<!--
这里有点小技巧:
本来可以用#parameters.name[0]来获得,请求中name的值。但是,在我实现include例子时,
无论我用param标志给name赋任何值,#parameters里面不会含有任何值,所以#parameters.name也为空值。
其原因为:
当使用include标志时,被包含的页面(included)里#parameters拿到的是包含页面里的请求参数。
因此,这里必须手工调用request.getParameter("name")。
-->
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />
<s:if test="#name == 'Max'">
Max's file here
</s:if>
<s:elseif test="#name == 'Scott'">
Scott's file here
</s:elseif>
<s:else>
Other's file here
</s:else>
</body>
</html>
例1 condition.jsp
- iterator
描述:
用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。
参数:
名称 |
必需 |
默认 |
类型 |
描述 |
status |
否 |
|
String |
如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈 |
value |
否 |
|
Object/String |
要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象 |
id |
否 |
|
Object/String |
用来标识元素的id。在UI和表单中为HTML的id属性 |
例子:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
List list = new ArrayList();
list.add("Max");
list.add("Scott");
list.add("Jeffry");
list.add("Joe");
list.add("Kelvin");
request.setAttribute("names", list);
%>
<html>
<head>
<title>Iterator</title>
</head>
<body>
<h3>Names: </h3>
<!--
1、此处的空property元素用于获得当前iterator的值
2、status被设成stuts,在iterator的里面就可以通过#stuts取得IteratorStatus的对象。IteratorStatus类包含当前序号信息,如是否第一个或最后一个,是否为奇数序号。这些信息在我们做格式化的时候,显得非常有用。
-->
<ol>
<s:iterator value="#request.names" status="stuts">
<s:if test="#stuts.odd == true">
<li>White <s:property /></li>
</s:if>
<s:else>
<li style="background-color:gray"><s:property /></li>
</s:else>
</s:iterator>
</ol>
</body>
</html>
例2 iterator.jsp
- i18n
描述:
加载资源包到值堆栈。它可以允许text标志访问任何资源包的信息,而不只当前action相关联的资源包。
参数:
名称 |
必需 |
默认 |
类型 |
描述 |
value |
是 |
|
Object/String |
资源包的类路径(如com.xxxx.resources.AppMsg) |
id |
否 |
|
Object/String |
用来标识元素的id。在UI和表单中为HTML的id属性 |
例子:
HelloWorld=Hello Wrold!
例3 classes\ ApplicationMessages.properties
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Internationization</title>
</head>
<body>
<h3>
<s:i18n name="ApplicationMessages">
<s:text name="HelloWorld" />
</s:i18n>
</h3>
</body>
</html>
例3 i18n.jsp
- include
描述:
包含一个servlet的输出(servlet或jsp的页面)。
参数:
名称 |
必需 |
默认 |
类型 |
描述 |
value |
是 |
|
String |
要包含的jsp或servlet |
id |
否 |
|
Object/String |
用来标识元素的id。在UI和表单中为HTML的id属性 |
例子:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Iterator</title>
</head>
<body>
<h3>Interator Page</h3>
<s:include value="/condition.jsp">
<s:param name="name">Max</s:param>
</s:include>
<h3>i18n</h3>
<s:include value="/i18n.jsp" />
</body>
</html>
例4 include.jsp
- param
描述:
为其他标签提供参数,比如include标签和bean标签. 参数的name属性是可选的,如果提供,会调用Component的方法addParameter(String, Object), 如果不提供,则外层嵌套标签必须实现UnnamedParametric接口(如TextTag)。
|
value的提供有两种方式,通过value属性或者标签中间的text,不同之处我们看一下例子:
<param name="color">blue</param><!-- (A) --><!----><o:p></o:p>
<param name="color" value="blue"/><!-- (B) --> (A)参数值会以String的格式放入statck. (B)该值会以java.lang.Object的格式放入statck. |
参数:
名称 |
必需 |
默认 |
类型 |
描述 |
name |
否 |
|
String |
参数名 |
value |
否 |
|
String |
value表达式 |
id |
否 |
|
Object/String |
用来标识元素的id。在UI和表单中为HTML的id属性 |
例子:
请参考例4。
- set
描述:
set标签赋予变量一个特定范围内的值。当希望给一个变量赋一个复杂的表达式,每次访问该变量而不是复杂的表达式时用到。其在两种情况下非常有用: 复杂的表达式很耗时 (性能提升) 或者很难理解 (代码可读性提高)。
参数:
名称 |
必需 |
默认 |
类型 |
描述 |
name |
是 |
|
String |
变量名字 |
scope |
否 |
|
String |
变量作用域,可以为application, session, request, page, 或action. |
value |
否 |
|
Object/String |
将会赋给变量的值 |
id |
否 |
|
Object/String |
用来标识元素的id。在UI和表单中为HTML的id属性 |
例子:
请参考例1。
- text
描述:
支持国际化信息的标签。国际化信息必须放在一个和当前action同名的resource bundle中,如果没有找到相应message,tag body将被当作默认message,如果没有tag body,message的name会被作为默认message。
参数:
名称 |
必需 |
默认 |
类型 |
描述 |
name |
是 |
|
String |
资源属性的名字 |
id |
否 |
|
Object/String |
用来标识元素的id。在UI和表单中为HTML的id属性 |
例子:
请参考例3。
- url
描述:
该标签用于创建url,可以通过"param"标签提供request参数。
|
当includeParams的值时'all'或者'get', param标签中定义的参数将有优先权,也就是说其会覆盖其他同名参数的值。 |
参数: 略
例子:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>URL</title>
</head>
<body>
<h3>URL</h3>
<a href='<s:url value="/i18n.jsp" />'>i18n</a><br />
<s:url id="url" value="/condition.jsp">
<s:param name="name">Max</s:param>
</s:url>
<s:a href="%{url}">if\elseif\else</s:a>
</body>
</html>
例5 url.jsp
- property
描述:
得到'value'的属性,如果value没提供,默认为堆栈顶端的元素。
参数:
名称 |
必需 |
默认 |
类型 |
描述 |
default |
否 |
|
String |
如果属性是null则显示的default值 |
escape |
否 |
true |
Booelean |
是否escape HTML |
value |
否 |
栈顶 |
Object |
要显示的值 |
id |
否 |
|
Object/String |
用来标识元素的id。在UI和表单中为HTML的id属性 |
例子:
请参考例2。
- UI标志
分享到:
相关推荐
常用的Struts 2.0的标志(Tag)介绍 Struts 2.0的Action讲解 在Struts 2.0中国际化(i18n)您的应用程序 转换器(Converter)——Struts 2.0中的魔术师 在Struts 2.0中实现表单数据校验(Validation) Struts 2的基石...
02 常用的Struts 2.0的标志(Tag) 03 Struts 2.0的Action讲解 04 在Struts 2.0中国际化(i18n)您的应用程序 05 转换器(Converter)——Struts 2.0中的魔术师 06 在Struts 2.0中实现表单数据校验(Validation) 07 ...
Struts 2.0 是一款流行的Java Web框架,它的核心特性之一是强大的标签库(Tag Library),这使得开发者能够更方便地在JSP页面中构建动态用户界面。本篇文章主要介绍Struts 2.0中常用的标签,以及它们在实际工作中的...
### Struts 2.0的标志(Tag)详细介绍 #### 非UI标志:if、elseif、else 和 iterator 在Struts 2.0中,非UI标志主要用于控制流程和数据处理,它们提供了强大的功能来增强JSP页面的动态性和交互性。 ##### if、...
02 常用的Struts 2.0的标志(Tag) 03 Struts 2.0的Action讲解 04 在Struts 2.0中国际化(i18n)您的应用程序 05 转换器(Converter)——Struts 2.0中的魔术师 06 在Struts 2.0中实现表单数据校验(Validation) 07 ...
#### 二、Struts2.0的核心特点 - **MVC2模型的运用:** Struts2.0延续了MVC设计模式,但相比于原始的Struts1.x,其MVC实现更为灵活和强大,支持更多的交互和数据处理方式。 - **丰富的标签库(TagLibrary):** ...
对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。
#### 三、Struts2.0中常用的Tag介绍 Struts2.0提供了一套丰富的标签库,用于简化页面开发过程中的复杂操作。 - **`<s:textfield>`**:用于创建文本输入框。 - **`<s:select>`**:用于创建下拉选择框。 - **`...
在功能方面,Struts 2.0 引入了强大的标签库(Tag Library),包括各种 UI 组件和实用标签,极大地简化了视图层的开发。此外,Struts 2.0 支持多种结果类型和动作映射,使得跳转和处理更加灵活。它还支持多种数据...
1. **基础知识**:包括Java Servlet和JSP的基础,因为Struts2.0是建立在这些技术之上的。理解HTTP协议、Servlet生命周期以及JSP的EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)是非常...
Struts2.0标签的实现主要依赖于TLD(Tag Library Descriptor)文件,这些文件定义了标签的行为和属性。当JSP解析器遇到一个Struts2标签时,会根据TLD找到对应的标签处理类(TagHandler)并实例化,执行其doStartTag...
2.常用的Struts 2.0的标志(Tag)介绍 3.Struts 2.0的Action讲解 4.在Struts 2.0中国际化(i18n)您的应用程序 5.转换器(Converter)——Struts 2.0中的魔术师 在6.Struts 2.0中实现表单数据校验(Validation) 7...
**Struts 2.0**是Struts框架的升级版本,旨在克服Struts 1.x系列中的一些局限性,如过度编码、单元测试难度大等问题。它保留了原框架的优点,如MVC架构支持、丰富的标签库和开源特性,并在此基础上进行了改进,以...
- **安全性**:Struts2.0提供了一系列的安全特性,如参数过滤、XSS防护等,确保系统安全。 - **数据持久化**:MySQL作为底层数据库,保证了数据的稳定存储和高效检索。 - **易用性**:JSP和Struts2.0都提供了丰富的...
功能齐全的标志库(Tag Library) 开放源代码 但是,所谓“金无赤金,人无完人”,Struts自身也有不少的缺点: 需要编写的代码过多,容易引起“类爆炸” 单元测试困难 这些缺点随着Web的发展越来越明显。这就促...