本文為原創(chuàng),如需轉(zhuǎn)載,請注明作者和出處,謝謝!
《
Struts 2
系列教程》
上一篇:
Struts1.x系列教程(4):標(biāo)簽庫概述與安裝
HTML標(biāo)簽庫中的標(biāo)簽基本上都是和HTML Tag一一對應(yīng)的。但我們經(jīng)常使用的主要是<html:form>標(biāo)簽及其子標(biāo)簽。因此,在本文將介紹一下<html:form>及其常用子標(biāo)簽的用法。
一、HTML標(biāo)簽庫中的常用標(biāo)簽
1. <html:form>標(biāo)簽
<html:form>標(biāo)簽對應(yīng)于HTML<form>標(biāo)簽。用于向服務(wù)端提交用戶輸入信息。<html:form>標(biāo)簽和HTML<form>標(biāo)簽在使用方法上基本相同,但它們的一個(gè)重要的區(qū)別是<html:form>標(biāo)簽的action屬性值所指的Struts動(dòng)作在struts-config.xml中必須正確配置,否則<html:form>標(biāo)簽會(huì)因?yàn)槲凑业絊truts動(dòng)作而拋出異常,從頁使JSP頁面無法正常運(yùn)行,而HTML<form>無論action屬性的值所指的URL是否正確(或Struts動(dòng)作是否在struts-config.xml中正確配置),都會(huì)正常顯示。<html:form>標(biāo)簽的基本用法如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<
html:form
action
="Struts動(dòng)作"
method
="get/post"
>
2. <html:text>標(biāo)簽
<html:text>標(biāo)簽是最常用的HTML標(biāo)簽,它對應(yīng)于type屬性值為“text”的HTML<input>標(biāo)簽。每一個(gè)和HTML Tags對應(yīng)的HTML標(biāo)簽都有一個(gè)property屬性,<html:text>標(biāo)簽也不例外。這個(gè)屬性用于和ActionForm的子類對象實(shí)例綁定,也就是說,property屬性的值必須和ActionForm子類中相應(yīng)的屬性擁有同樣的名子。如果property屬性的值在ActionForm子類中未找到相應(yīng)的屬性名,該HTML標(biāo)簽就會(huì)由于拋出異常而使JSP頁面無法正常顯示。<html:text>標(biāo)簽的基本用法如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<
html:text
property
="name"
/>
<html:text>
標(biāo)簽的其他屬性(如
size
屬性)和
<input type=”text” ... />
標(biāo)簽的相應(yīng)屬性使用方法完全一致。
3.<html:radio>
標(biāo)簽
<html:radio>
標(biāo)簽對應(yīng)于
type
屬性值為“
radio
”的
HTML<input>
標(biāo)簽。如果
ActionForm
子類的某個(gè)屬性有多個(gè)可枚舉的選擇值(如性別為“男”、“女”),就可以使用
<html:radio>
來采集用戶的輸入信息。每一個(gè)可能的值對應(yīng)一個(gè)
<html:radio>
標(biāo)簽,如性別選項(xiàng)對應(yīng)兩個(gè)
<html:radio>
標(biāo)簽,代碼如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
男
<
html:radio
property
="sex"
value
="1"
/>
女
<
html:radio
property
="sex"
value
="2"
/>
其中兩個(gè)<html:radio>標(biāo)簽中的property屬性值必須都為“sex”,每個(gè)value表示選中當(dāng)前選項(xiàng)后,提交給服務(wù)端的值,也就是通過ActionForm的子類實(shí)例對象的相應(yīng)屬性可以獲得的值。
4.<html:checkbox>
標(biāo)簽
<html:checkbox>
標(biāo)簽對應(yīng)于
type
屬性值為“
checkbox
”的
HTML<input>
標(biāo)簽。
<html:checkbox>
標(biāo)簽的基本用法如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<
html:checkbox
property
="student"
value
="true"
/>
其中
value
屬性表示當(dāng)勾選這個(gè)復(fù)選框時(shí)提交給服務(wù)端的值。
5. <html:multibox>標(biāo)簽
<html:multibox>標(biāo)簽實(shí)際上也對應(yīng)于type屬性值為“checkbox”的HTML<input>標(biāo)簽。但<html:multibox>和<html:checkbox>在映射到ActionForm子類實(shí)例對象的相應(yīng)屬性的映射方式不同。所有property屬性值相同的<html:multibox>標(biāo)簽被映射到同一個(gè)property所指的屬性中,并且這個(gè)屬性是一個(gè)數(shù)組類型。而<html:checkbox>標(biāo)簽只對應(yīng)了一個(gè)值。<html:multibox>標(biāo)簽的基本用法如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
上網(wǎng)
<
html:multibox
property
="hobbies"
value
="上網(wǎng)"
/>
旅游
<
html:multibox
property
="hobbies"
value
="旅游"
/>
足球
<
html:multibox
property
="hobbies"
value
="足球"
/>
圍棋
<
html:multibox
property
="hobbies"
value
="圍棋"
/>
其中
value
屬性表示選中當(dāng)前復(fù)選框的返回值。
6.<html:select>
和
<html:option>
標(biāo)簽
<html:select>
和
<html:option>
組合對應(yīng)了
HTML
中的
<select>
和
<option>
組合。這兩個(gè)標(biāo)簽的基本用法如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<
html:select
property
="work"
>
<
html:option
value
="軟件工程師"
/>
<
html:option
value
="軟件測試工程師"
/>
<
html:option
value
="項(xiàng)目經(jīng)理"
/>
<
html:option
value
="高級顧問"
/>
<
html:option
value
="其他"
/>
</
html:select
>
其中
value
屬性表示在下拉列表框中選擇某一項(xiàng)時(shí)向服務(wù)端提交的值。
7. <html:submit>和<html:reset>標(biāo)簽
這兩個(gè)HTML標(biāo)簽分別對應(yīng)了type為“submit”和“reset”的HTML<input>標(biāo)簽。它們的基本用法如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<
html:submit
value
="提交"
/>
<
html:reset
value
="重置"
/>
其中
value
屬性表示在按鈕上顯示的信息。
8..
其他的
HTML
標(biāo)簽
在
HTML
標(biāo)簽庫中還有很多其他的標(biāo)簽。關(guān)于這些標(biāo)簽的詳細(xì)信息讀者可以參閱
Struts
的官方網(wǎng)站,
URL
如下:
http://struts.apache.org/1.2.9/userGuide/struts-html.html
二、
HTML
標(biāo)簽庫演示實(shí)例
在本文給出了一個(gè)完整的例子來演示如何通過
HTML
標(biāo)簽來展現(xiàn)用戶界面,以及如何從由
HTML
標(biāo)簽生成的界面中獲取用戶提交的信息。實(shí)現(xiàn)這個(gè)例子需要如下四步:
【第
1
步】
建立使用
HTML
標(biāo)簽的
JSP
頁面
在
<samples
工程目錄
>
中建立一個(gè)
htmlTags.jsp
文件,并輸入如下的內(nèi)容:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<%
@pagepageEncoding
=
"
GBK
"
%>
<%
@tagliburi
=
"
http://struts.apache.org/tags-html
"
prefix
=
"
html
"
%>
<
html
>
<
head
>
<
title
>
HTML標(biāo)簽庫演示
</
title
>
</
head
>
<
body
>
<
html:form
action
="htmlTags"
method
="post"
>
姓名:
<
html:text
property
="name"
/>
<
p
/>
性別:男
<
html:radio
property
="sex"
value
="1"
/>
女
<
html:radio
property
="sex"
value
="2"
/>
<
p
/>
學(xué)生:
<
html:checkbox
property
="student"
value
="true"
/>
<
p
/>
愛好:上網(wǎng)
<
html:multibox
property
="hobbies"
value
="上網(wǎng)"
/>
旅游
<
html:multibox
property
="hobbies"
value
="旅游"
/>
足球
<
html:multibox
property
="hobbies"
value
="足球"
/>
圍棋
<
html:multibox
property
="hobbies"
value
="圍棋"
/>
<
p
/>
職業(yè):
<
html:select
property
="work"
>
<
html:option
value
=""
/>
<
html:option
value
="軟件工程師"
/>
<
html:option
value
="軟件測試工程師"
/>
<
html:option
value
="項(xiàng)目經(jīng)理"
/>
<
html:option
value
="高級顧問"
/>
<
html:option
value
="其他"
/>
</
html:select
>
<
p
/>
<
html:submit
value
="提交"
/>
<
html:reset
value
="重置"
/>
</
html:form
>
</
body
>
</
html
>
現(xiàn)在
htmlTags.jsp
還運(yùn)行不了,因?yàn)?
htmlTags
動(dòng)作并沒有在
struts-config.xml
中配置。下面我們先在
struts-config.xml
中配置一下這個(gè)
htmlTags
動(dòng)作和相應(yīng)的
ActionForm
的子類。
【第
2
步】
配置
ActionForm
子類和
htmlTags
動(dòng)作
打開
struts-config.xml
,在
<form-beans>
中加入如下的
<form-bean>
標(biāo)簽:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<
form-bean
name
="htmlTagsForm"
type
="actionform.HtmlTagsForm"
/>
然后在
<action-mappings>
中加入如下的
<action>
標(biāo)簽:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<
action
name
="htmlTagsForm"
path
="/htmlTags"
scope
="request"
type
="action.HtmlTagsAction"
/>
我們從上面兩段配置代碼可以看出,
ActionForm
的子類為
HtmlTagsForm
,動(dòng)作類為
HtmlTagsAction
,下面我們就來建立這兩個(gè)類。
【第
3
步】
實(shí)現(xiàn)
HtmlTagsForm
類
在本例中,
HtmlTagsForm
類只含有用于接收用戶提交的信息的屬性,除此之外,并未在這個(gè)類中做其他的事(如驗(yàn)證數(shù)據(jù))。在
<samples
工程目錄
>"src" actionform
目錄中建立一個(gè)
HtmlTagsForm.java
文件,并輸入如下的代碼:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
package
actionform;
import
org.apache.struts.action.
*
;
public
class
HtmlTagsForm
extends
ActionForm
{
private
Stringname;
private
Stringsex;
private
Booleanstudent;
private
String[]hobbies;
private
Stringwork;
public
StringgetWork()
{
return
work;
}
public
void
setWork(Stringwork)
{
this
.work
=
work;
}
public
String[]getHobbies()
{
return
hobbies;
}
public
void
setHobbies(String[]hobbies)
{
this
.hobbies
=
hobbies;
}
public
StringgetName()
{
return
name;
}
public
StringgetSex()
{
return
sex;
}
public
void
setSex(Stringsex)
{
this
.sex
=
sex;
}
public
void
setName(Stringname)
{
this
.name
=
name;
}
public
BooleangetStudent()
{
return
student;
}
public
void
setStudent(Booleanstudent)
{
this
.student
=
student;
}
}
【第
4
步】
建立
HtmlTagsAction
類
HtmlTagsAction
類的主要功能是通過
HtmlTagsForm
類的實(shí)例對象讀取用戶提交的信息,并將它們輸出的客戶端瀏覽器。在
<samples
工程目錄
>"src"action
目錄中建立一個(gè)
HtmlTagsAction.java
文件,并輸入如下的代碼。
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
package
action;
import
javax.servlet.http.
*
;
import
org.apache.struts.action.
*
;
import
java.io.
*
;
import
actionform.HtmlTagsForm;
public
class
HtmlTagsAction
extends
Action
{
public
ActionForwardexecute(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse)
{
HtmlTagsFormhtForm
=
(HtmlTagsForm)form;
try
{
response.setCharacterEncoding(
"
GB2312
"
);
PrintWriterout
=
response.getWriter();
out.println(
"
姓名:
"
+
htForm.getName()
+
"
<p/>
"
);
if
(htForm.getSex()
!=
null
)
out.println(
"
性別:
"
+
(htForm.getSex().equals(
"
1
"
)
?
"
男
"
:
"
女
"
)
+
"
<p/>
"
);
out.println(
"
學(xué)生:
"
+
(htForm.getStudent()
==
null
?
"
否
"
:
"
是
"
)
+
"
<p/>
"
);
if
(htForm.getHobbies()
!=
null
)
{
out.println(
"
愛好:
"
);
for
(Stringhobby:htForm.getHobbies())
out.println(hobby
+
"
"
);
out.println(
"
<p/>
"
);
}
if
(htForm.getWork()
!=
null
)
out.println(
"
職業(yè):
"
+
htForm.getWork());
}
catch
(Exceptione)
{
}
return
null
;
}
}
啟動(dòng)
Tomcat
,并在
IE
中輸入如下的
URL
:
http://localhost:8080/samples/htmlTags.jsp
在出現(xiàn)用戶界面后,輸入如圖1所示的信息。
圖1
在點(diǎn)擊“提交”按鈕后,將顯示如圖
2
所示的頁面。
圖2
國內(nèi)最棒的Google Android技術(shù)社區(qū)(eoeandroid),歡迎訪問!
《銀河系列原創(chuàng)教程》
發(fā)布
《Java Web開發(fā)速學(xué)寶典》
出版,歡迎定購
Struts1.x系列教程(5):HTML標(biāo)簽庫