这里我只说struts的三大标签:
HTML标签 : 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单
Bean标签: 在访问JavaBeans 及其属性,以及定义一个新的bean 时使用
Logic标签: 管理条件产生的输出和对象集产生的循环
struts标签使用举例-HTML
1.html:base
<html:base/> 对应 <base href="当前页面的地址">
2.html:cancel
该标签生成一个取消按钮。当点击该按钮后action servlet会绕过相应的form bean的validate()方法,同时将控制权交给相应的action。在action中可使用Action.isCancelled(HttpServletRequest)方法判断是否被取消了。如果返回true表示这个action被取消了,否则表示这个action没有被取消。
3.html:form
1) 标签中必须包含一个action属性,它是这个标签中唯一必需的属性。如果不具备该属性则JSP页面会抛出一个异常。之后你必须给这个action属性指定一个有效值。一个有效值是指应用程序的Struts配置文件中元素里的任何一个子元素的访问路径。而且相应的元素中必须有一个name属性,它的值是form bean的名称。
<html:form action="/login.do" >
如果你有上述一个标签 ,那么你的Struts配置文件的元素中必须有一个如下显示为粗体的元素:
<action-mappings>
<action path="/login"
type="com.javapro.struts.LoginAction"
name="loginForm"
scope="request"
input="/login.jsp">
<forward name="success"path="/mainMenu.jsp"/>
</action>
</action-mappings>
// 这就是说一个form标签是和form bean相关联的
2) 任何包含在<form>中用来接收用户输入的标签(<text>、<password>、<hidden>、<textarea>、<radio>、<checkbox>、<select>)必须在相关的form bean中有一个指定的属性值。比如,如果你有一个属性值被指定为“username”的<text>标签,那么相关的form bean中也必须有一个名为“username”的属性。输入<text>标签中的值会被用于生成form bean的userName属性。
4.html:select
该标签生成一个select元素。multiple属性决定是否为多选。如果指定了multiple="true"则为多选,此时对应的属性应该是一个数组。否则,此时对应的属性应该是标量。
注意:为了正确的处理未作选择的情况,在ActionForm中的reset()方法中必须将标量属性设置为默认值而将数组的长度置为0。
另外的一个重要问题就是struts如何生成option元素了,这个任务struts交给了html:option、html:options和html:optionsCollection三个标签。
html:option
该标签生成一个HTML的option元素。该标签必须嵌在html:select标签中。它的显示文本来自其标签体,也可以来自于资源文件。
eg.
<html:option value="red">red</html:option>
<html:option value="blue">blue</html:option>
来自于资源文件:
<html:optionvalue="color1" bundle="htmlselect.Colors" key="htmlselect.red"/>
它和配置文件中的<message-resources>元素的key属性匹配 –><message-resource parmeter="HtmlSelectColors"key="htmlselect.Colors"/>
<message-resource>中配置的资源文件为HtmlSelectColors.properties,相关内容为 htmlselect.red=RED
html:options
该标签生成多个HTML的option元素。该标签必须嵌在html:select标签中。
html:optionsCollection标签
该标签生成多个HTML的option元素。其功能和html:options标签的相同。
5.html:checkbox
该标签生成checkbox元素
eg
<html:checkboxproperty="loves" value="bb"name="studentForm"/>bb
<html:checkboxproperty="loves" value="dd"name="studentForm"/>dd
在名为studentForm中有一个名为loves的String类型的数组来与此标签对应,这样才能在studentForm中接收到该标签的多选值
6,html:multibox
该标签用法同html:checkbox
7.html:radio
该标签生成radio元素
eg
<html:radioproperty="sex" name="studentForm" value="男"/>男
在名为studentForm中有一个名为sex的String类型的属性来与此标签对应,这样才能在studentForm中接收到该标签的单选值
8.html:img
最重要的属性page:图象文件的路径,前面必须带有一个斜线。其它属性:heignt、width、alt。
<html:img
page="/logo.gif"height="50" width="200" alt="Web Logo"/>
9.html:link
<html:link page="/index.html">Click demo</html:link>
此行代码解析后:
<ahref="/index.html">Click demo</a>
10.html:html
它有两个属性:locale和xhtml,两者都不是必需的。
<html:html locale=\"true\">
此行代码解析后:
<htmllang=\"en\">
说明:
生成的结果取决于Struts应用程序所位于的服务器的locale。如果你将应用程序部署到一个不同locale的服务器,你不需要改变代码,Locale会自动调整。
11.html:errors
通过一个简单的<html:errors/>标签,你就可以在一个JSP页面上显示完全自定义的错误信息。
12.html:password
eg:
<html:passwordproperty="password" redisplay="false"/>
该标签中的一个很重要的属性是"redisplay",它用于重新显示以前输入到这个区域中的值。该属性的缺省值为true。然而,为了使password不能被重新显示,你或许希望将该属性的值设为false。
struts标签使用举例-logic
logic:empty
该标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:
1)当Java对象为null时;
2)当String对象为""时;
3)当java.util.Collection对象中的isEmpty()返回true时;
4)当java.util.Map对象中的isEmpty()返回true时。
eg.
< logic:empty name="userList">
…
< /logic:empty>
该句等同于:
if (userList.isEmpty()) {
…
}
logic:notEmpty
该标签的应用正好和logic:empty标签相反,略。
logic:equal
该标签为等于比较符。
eg1. 比较用户的状态属性是否1,若为1,输出"启用";
< logic:equal name="user" property="state" value="1">
启用
< /logic:equal>
eg2. 如果上例中的value值是动态获得的,例如需要通过bean:write输出,因struts不支持标签嵌套,可采用EL来解决该问题。
<logic:equal name="charge" property="num" value="${business.num}">
……
< /logic:equal>
logic:notEqual
该标签意义与logic:equal相反,使用方法类似,略。
logic:forward
该标签用于实现页面导向,查找配置文件的全局forward。
eg. < logic:forward name="index"/>
logic:greaterEqual
为大于等于比较符。
eg. 当某学生的成绩大于等于90时,输出“优秀”:
< logic:greaterEqual name="student" property="score"value="90">
优秀
< /logic:greaterEqual>
logic:greaterThan
此为大于比较符,使用方法同logic:greaterEqual,略;
logic:lessEqual
此为小于等于比较符,使用方法同logic:greaterEqual,略;
logic:lessThan
此为小于比较符,使用方法同logic:greaterEqual,略;
logic:match
此标签比较对象是否相等;
eg1. 检查在request范围内的name属性是否包含"amigo"串:
< logic:match name="name"scope="request" value="amigo">
< bean:write name="name"/>中有一个“amigo”串。
< /logic:match>
eg2. 检查在request范围内的name属性是否已“amigo”作为起始字符串:
< logic:matchname="name" scope="request" value="amigo"location="start">
< bean:write name="name"/>以“amigo”作为起始字符串。
< /logic:match>
eg3.
<logic:match header="user-agent" value="Windows">
你运行的是Windows系统
</logic:match>
logic:notMatch
此标签用于比较对象是否不相同,与logic:match意义相反,使用方法类似,略。
logic:messagePresent
该标签用于判断ActionMessages/ActionErrors对象是否存在;
eg. 如果存在error信息,将其全部输出:
< logic:messagePresentproperty="error">
< html:messagesproperty="error" id="errMsg" >
<bean:write name="errMsg"/>
< /html:messages>
< /logic:messagePresent >
logic:messagesNotPresent
该标签用于判断ActionMessages/ActionErrors对象是否不存在,使用方法与logic:messagePresent类似,略
logic:present
此标签用于判断request对象传递参数是否存在。
eg1. user对象和它的name属性在request中都存在时,输出相应字符串:
< logic:present name="user"property="name">
user对象和该对象的name属性都存在
< /logic:present>
eg2. 若有一个名字为“user”的JavaBean,输出对应字符串:
< logic:present name="user" >
有一个名字为“user”的JavaBean。
< /logic:present>
eg3.
< logic:present header="user-agent">
we got a user-agent header.
< /logic:present>
logic:notPresent
此标签用于判断request对象传递参数是否不存在,意义与了logic:present相反,使用方法类似,略。
logic:redirect
该标签用于实现页面转向,可传递参数。
eg1. < logic:redirect href="http://www.chinaitlab.com"/>
logic:iterator
用于显示列表为collection的值(List ,ArrayList,HashMap等)。
eg1. 逐一输出用户列表(userlList)中用户的姓名:
< logic:iterate id="user"name="userList">
< bean:write name="user"property="name"/>< br>
< /logic:iterate>
eg2. 从用户列表中输出从1开始的两个用户的姓名:
< logic:iterate id="user" name="userList"indexId="index" offset="1" length="2">
< bean:write name="index"/>.
< bean:write name="user"property="name"/>< br>
< /logic:iterate>
eg3. logic:iterator标签的嵌套举例
< logic:iterate id="user" indexId="index"name="userList">
< bean:write name="index"/>.
< bean:write name="user"property="name"/>< br>
< logic:iterate id="address"name="user" property="addressList" length="3"offset="1">
< bean:write name="address"/><br>
< /logic:iterate>
</logic:iterate>
struts标签使用举例-bean
该标签将指定的bean的属性值写到当前的JspWriter中,并且可以对输出进行格式化。
例如在struts的action着那个通过request.setAttribute("names","dddd");将属性值dddd中放入names,可在jsp页面中通过bean:write将names属性输出。
eg:<bean:write name="names"/>
对于日期型的属性,可在bean:write标签中指定format来输出日期格式,
eg:<bean:write name="date"format="MM/dd/yyyy"/>
如果要输出某对象的某属性,例如属性名为person的对象的name属性,可通过如下方式:
eg:<bean:write name="person"property="name"/>
bean:message
该标签用来从指定的locale中取回国际化的消息并输出,在这个过程中我们还可以传递5个以内的参数。message key可以通过key直接指定,也可以通过name和property间接的指定。
eg1. <bean:messagekey="welcome.title.content"/>
该句要求在资源文件中有welcome.title.content的键值对(资源文件ApplicationSource.properties在struts的配置文件中指定)。
eg2. 传递参数信息的bean:message的用法,
<bean:messagekey="greeting" arg1="good morning" arg2="goodevening"/>
在资源文件中greeting的配置举例如下:
greeting = hello, {0}, {1}.
bean:parameter
该标签取回请求中的参数值。如果没有指定multiple属性则依据刚取回的值创建一个String类型的bean,否则根据刚取回的值创建一个String[]类型的数组。然后用id属性值将String或String[]绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。
eg. 当请求如下的jsp页面时:http://localhost:8080/test.jsp?orgId=1
在test.jsp页中可通过如下方式获得orgId参数:
<bean:parameterid="ok" name="orgId"/>
<bean:write name="ok"/>
bean:size
该标签创建一个java.lang.Integer类型的bean,该值为该标签指定的Collection或Map,List中所含元素的个数。它可和logic:iterate标签配合使用。
如下语句输出userList属性中元素的个数:
eg. <bean:sizeid="size" name="userList"/>
<bean:write name="size"/>
以上部分转自网络