Struts1.3——Struts标签
1.struts标签的介绍
Struts框架提供了一组非常丰富的框架组件,同时也提供了一组标签库用于和这些组件交互,主要介绍以下三类:
- html标签
 - bean标签
 - logic标签
 
2.Html标签库
struts标签库中包括很多标签,其中html标签是最常用的标签之一,该标签库包含的标签可以用来创建Struts输入表单和用户界面。
这类标签实际上就是普通的html标签,Struts设计者主要是为了和Struts框架统一,对普通的html标签做了一个封装,它的本质仍然是html标签。
使用struts的html标签,在文件的开头要使用如下语句引入标签库:
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
举几个简单的例子:
(1)<html:button>标签 
这个标签就相当于HTML中的<input type="button">标签,它的property属性就相当于<button>的name属性
<html:button property="button1" value="提交"></html:button>
- 1
 
(2)<html:image>标签和<html:img>标签 <html:image>这个标签是一个图片按钮,而并不是一个单纯的图片。 <html:img>标签是一个单纯的图片。
<html:image src="data:images/psb.jpg"></html:image>
<html:img src="data:images/psb.jpg"/>
- 1
 - 2
 
(3)<html:link>标签 
超链接标签。它可以通过href属性链接到当前应用外的链接,也可以通过page属性链接到当前应用下的某个资源。
<html:link href="http://www.sohu.com">链接到Sohu</html:link>
<html:link page="/login.jsp">Login</html:link>
- 1
 - 2
 
所以,在href属性中要写全路径,而在page属性中要写基于当前应用的路径。 
使用struts的link标签有一个好处是:它自动帮我们做了URL重写的工作,所以我们不用再担心客户端禁用了Cookie。
在html标签库中form标签是最重要的标签,它和struts框架紧密结合。form标签和一个ActionForm对应,当form的各个字段与ActionForm的属性匹配时,那么当客户把Form提交后,struts框架将用户的输入保存到对应的ActionForm中。这样就完成了标签与组件的交互工作。
所以,<html:form>标签的action属性值所指的struts动作在struts-config.xml文件中必须正确配置,否则会报错。
下面主要介绍一下form标签,以及其常用的子标签。
(1)<html:form>标签
用法如下:
<html:form action="/login.do(struts动作)" method="post/get">
- 1
 
(2)<html:text>标签 
该标签是最常用的HTML标签,它对应于HTML中的<input type="text">标签,它的property属性对应于<input type="text">标签的name属性,而且,它的property属性和其对应的ActionForm对象实例绑定,也就是说,property属性的值必须和ActionForm子类中相应的属性拥有同样的名字。否则,该标签将会抛出异常。
<html:text property="name"/>
- 1
 
该标签的其他用法和<input type="text">这个标签的用法完全一致。
(2)<html:radio>标签 <html:radio>标签对应于HTML中的<input type=radio>标签,如性别选项对应两个<html:radio>标签:
男<html:radio property="sex" value="0"/>
女<html:radio property="sex" value="1"/>
- 1
 - 2
 
这里的两个radio标签中的property属性值必须都为一样的”sex”,这个名字和其对应的ActionForm子类中的属性值一致。每个value表示选中当前选项后,提交给服务器的值,也就是通过ActionForm的子类实例对象的相应属性可以获得的值。
(3)<html:checkbox>标签 <html:checkbox>标签对应于HTML中的<input type=checkbox>标签,它的基本用法如下:
<html:checkbox property="student" value="true"/>
- 1
 
其中的value属性表示勾选这个复选框时提交给服务端的值。
(4)<html:multibox>标签 <html:multibox>标签也对应于HTML中的<input type=checkbox>标签,但是<html:multibox>标签和<html:checkbox>标签在映射到ActionForm子类实例对象的相应属性的映射方式不同。所有property属性值相同的<html:multibox>标签被映射到同一个property所指的属性中,并且这个属性是一个数组类型。而<html:checkbox>标签值对应了一个值。 <html:multibox>标签的基本用法如下:
香蕉<html:multibox property="fruits" value="香蕉"/>
苹果<html:multibox property="fruits" value="苹果"/>
西瓜<html:multibox property="fruits" value="西瓜"/>
桃子<html:multibox property="fruits" value="桃子"/>
- 1
 - 2
 - 3
 - 4
 
其中,value属性也表示选中当前复选框的返回值。
(5)<html:select>和<html:option>标签 <html:select>和<html:option>标签组合对应了HTML中的<select><option>组合,基本用法如下:
<html:select property="address">
    <html:option value="北京"/>
    <html:option value="上海"/>
    <html:option value="深圳"/>
    <html:option value="广州"/>
</html:select>
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 
其中,value属性表示在下拉列表框中选择某一项时像服务端提交的值。
(6)<html:submit>和<html:reset>标签 
这两个标签分别对应了HTML中的<input type="submit">和<input type="submit">标签,用法如下:
<html:submit value="提交"/>
<html:reset value="重置"/>
- 1
 - 2
 
除了上述所介绍的之外,Struts1的HTML标签库还有其他的标签,这里不再一一赘述。
3.Bean标签库
Bean标签库为访问Bean和它的属性提供了方便的机制: 
1.该标签库包含的标签可以用来创建bean、访问bean和访问bean的属性。 
2.提供了依据cookies、headers和parameters的值创建相关bean的能力。
使用struts的bean标签库,也需要在文件的开头引入:
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
我们常用的主要是<bean:write>标签和<bean:message>标签,下面也主要介绍这两种标签。
(1)<bean:write>标签 
该标签主要用来输出,与JSTL中的<c:out>标签类似,但是用法略有不同,如下:
<%
request.setAttribute("abc","Hello World!");
Cat cat = new Cat("小花猫",5);
request.setAttribute("cat1", cat);
%>
<!-- bean:write 用于输出信息 -->
<h1>输出变量</h1>
<bean:write name="abc" scope="request"/>
<h1>输出对象的属性值</h1>
<bean:write name="cat1" property="name" scope="request"/>
<bean:write name="cat1" property="age" scope="request"/>
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 
(2)<bean:message>标签 
该标签通常和资源文件配合使用,可以更加方便地输出信息,这些信息在资源文件中配置。 
所谓的资源文件,就是指struts自动为我们配置的ApplicationResource.properties文件:
比如,我们在资源文件中配置如下:
key1 = welcome {0}
- 1
 
在JSP页面,我们可以做如下输出:
<bean:message key="key1" arg0="John"/>
- 1
 
此时,界面会输出 welcome John
这个标签通常用于国际化,在资源文件中用不同的语言配置不同的提示语,在界面上判断输出。
4.logic标签库
logic标签库主要用于管理和条件相关的输出,都某些对象进行迭代和输出,和流程管理。
同样的,引入logic标签库:
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
(1)<logic:iterate>循环标签 
与jstl中的<c:forEach>标签类似,使用方法如下:
<%
Cat cat1 = new Cat("小黑", 5);
Cat cat2 = new Cat("小花", 6);
Cat cat3 = new Cat("小灰", 7);
ArrayList<Cat> al = new ArrayList<Cat>();
al.add(cat1);
al.add(cat2);
al.add(cat3);
request.setAttribute("cats", al);
%>
<logic:iterate id="cat" name="cats" scope="request">
    <bean:write name="cat" property="name" />
    <bean:write name="cat" property="age" />
    <br>
</logic:iterate>
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 
这里,循环的对象为request域中的cats,每次将对象赋给id=cat的变量,然后再调用bean:write标签输出。
其实更简单的,这里也可以直接用EL表达式输出,效果是一样的:
<logic:iterate id="cat" name="cats" scope="request">
    ${cat.name}
    ${cat.age }<br>
</logic:iterate>
- 1
 - 2
 - 3
 - 4
 
(2)<logic:greaterThan>标签 
该标签用于判断一个变量是否大于一个值。如下,我们可以循环判断哪一只猫的年龄大于5岁:
<logic:iterate id="cat" name="cats">
<logic:greaterThan name="cat" value="5" property="age">
        ${cat.name}的年龄大于5岁!<br>
    </logic:greaterThan>
</logic:iterate>
- 1
 - 2
 - 3
 - 4
 - 5
 
与此类似的,还有<logic:equal>,<logic:greaterEqual>,<logic:lessThan>标签等等。
(3)<logic:empty>和<logic:notEmpty>标签 
这两个标签用于判断在一个域对象中是否存在某一个属性,如下例:
<logic:empty name="ee" scope="request">
    ee属性在request域对象中不存在<br>
</logic:empty>
<logic:notEmpty name="cats" scope="request">
    cats属性在request域对象中存在<br>
</logic:notEmpty>
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 
到这里,我们已经知道了很多不同的标签,有HTML原生标签,JSTL标准标签,EL表达式和Struts标签,其中有很多标签的功能是一样的,这里给出一个选择使用标签的原则:
JSTC -> EL -> Struts
即,优先使用JSTL和EL表达式,最后再选择使用struts标签库。
Struts1.3——Struts标签的更多相关文章
- struts1四:常用标签
		
struts1支持的5种标签: HTML 标签: 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单 Bean 标签: 在访问JavaBeans 及其属性,以及定义一个 ...
 - Struts1之html标签
		
Struts1的html标签主要是为了绘制HTML页面标签元素,通过与Struts1框架的集成,增强功能 首先,在使用前,需要引入tld文件 <%@ taglib prefix="ht ...
 - struts 标签<s:ierator>的简单使用说明
		
struts 标签<s:ierator>的简单使用说明,只显示<s:ierator> 的前6条数据 <s:iterator value="lstVisitor& ...
 - 转:Struts标签checkbox使用总结(默认选择设置)
		
在使用struts标签html:checkbox 的时候,如何让checkbox框默认是选中的,一般情况 下都是当formbean里面该property的值和标签上value给定的值相等的时候,生成的 ...
 - Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
		
我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的 ...
 - [转]Struts标签库详解
		
本文转自:http://hi.baidu.com/xzkcz/blog/item/5cf9f91f01beb9f4e0fe0bd4.html Struts提供了五个标签库,即:HTML.Bean. ...
 - JSTL、EL、ONGL、Struts标签的区别与使用
		
一.JSTL 来源 我们使用JSP开发信息展现非常方便,也可嵌入java代码用来实现相关逻辑,但同样带来了很多问题: jsp维护难度增加 出事提示不明确,不容易提示 分工不明确等 解决上面的问题可以 ...
 - 在EL表达式或者Struts标签库中格式化日期对象,即将Date转换为yyyy-MM-dd格式
		
一.EL表达式 首先,在jsp页面引入<fmt> tags,<%@ taglib prefix="fmt" uri="http://java.sun.c ...
 - struts2 taglib  struts标签学习整理中
		
项目中经常会用到struts标签,这样可以减少代码量. select用法: <s:select list="#request.sysTypes" name="rul ...
 
随机推荐
- java 字符串的操作方法
			
方法 作用 范例 indexOf() 找到第一个字符出现的位置,()以下标来判断,返回的是字符所在的下标 int num = String.indexOf("字符") l ...
 - getAttribute 与getParmeter 区别
			
1.getAttribute是取得jsp中 用setAttribute設定的attribute 2.parameter得到的是string:attribute得到的是object 3.request. ...
 - zabbix配置-模板
			
1.配置=>模板=>创建模板=>输入模板名称和群组 2.配置=>模板=>找到刚刚创建的模板=>点击应用集(applications)=>创建应用集=>输 ...
 - drf:restful概念,类继承关系,drf请求封装,drf请求流程,版本控制组件,认证组件(token),权限组件
			
1.restful规范 resfful规范的概念最重要: 是一套规范,规则,用于程序之间进行数据交换的约定. 他规定了一些协议,对我们感受最直接的就是,以前写增删改查的时候需要些四个视图寒素,rest ...
 - HBase最佳实践-读性能优化策略
			
任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...
 - HTML- 锚点实例
			
<!DOCTYPE HTML> <html> <head> <meta charset='utf-8'> <title>锚点实例</t ...
 - 用函数递归的方法解决古印度汉诺塔hanoi问题
			
问题源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规 ...
 - centOS发布.Net Core 2.0 API
			
1.dotnet xxx.dll & & 放在启动参数后面表示设置此进程为后台进程.(目前测试无效) 2.ps -ef | grep xxx ps:将某个进程显示出来 -A 显示所有 ...
 - mac bash上显示git分支与状态
			
主要实现 显示当前路径 显示当前所在分支 显示当前修改状态 = 表示一个干净的分支 ~ 表示文件有改动 # 表示已commit 但未 push 通过网上搜索和自己根据实际需要修改的代码如下: .bas ...
 - WPF-将DataGrid控件中的数据导出到Excel
			
原文:WPF-将DataGrid控件中的数据导出到Excel 导出至Excel是非常常见,我们可以用很多类库,例如Aspose.NOPI.Interop,在这里我们使用微软自家的工具.我的WPF绑定的 ...