本文為原創,如需轉載,請注明作者和出處,謝謝!
《
Struts 2
系列教程》
上一篇:
Struts1.x系列教程(4):標簽庫概述與安裝
HTML標簽庫中的標簽基本上都是和HTML Tag一一對應的。但我們經常使用的主要是<html:form>標簽及其子標簽。因此,在本文將介紹一下<html:form>及其常用子標簽的用法。
一、HTML標簽庫中的常用標簽
1. <html:form>標簽
<html:form>標簽對應于HTML<form>標簽。用于向服務端提交用戶輸入信息。<html:form>標簽和HTML<form>標簽在使用方法上基本相同,但它們的一個重要的區別是<html:form>標簽的action屬性值所指的Struts動作在struts-config.xml中必須正確配置,否則<html:form>標簽會因為未找到Struts動作而拋出異常,從頁使JSP頁面無法正常運行,而HTML<form>無論action屬性的值所指的URL是否正確(或Struts動作是否在struts-config.xml中正確配置),都會正常顯示。<html:form>標簽的基本用法如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<
html:form
action
="Struts動作"
method
="get/post"
>
2. <html:text>標簽
<html:text>標簽是最常用的HTML標簽,它對應于type屬性值為“text”的HTML<input>標簽。每一個和HTML Tags對應的HTML標簽都有一個property屬性,<html:text>標簽也不例外。這個屬性用于和ActionForm的子類對象實例綁定,也就是說,property屬性的值必須和ActionForm子類中相應的屬性擁有同樣的名子。如果property屬性的值在ActionForm子類中未找到相應的屬性名,該HTML標簽就會由于拋出異常而使JSP頁面無法正常顯示。<html:text>標簽的基本用法如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<
html:text
property
="name"
/>
<html:text>
標簽的其他屬性(如
size
屬性)和
<input type=”text” ... />
標簽的相應屬性使用方法完全一致。
3.<html:radio>
標簽
<html:radio>
標簽對應于
type
屬性值為“
radio
”的
HTML<input>
標簽。如果
ActionForm
子類的某個屬性有多個可枚舉的選擇值(如性別為“男”、“女”),就可以使用
<html:radio>
來采集用戶的輸入信息。每一個可能的值對應一個
<html:radio>
標簽,如性別選項對應兩個
<html:radio>
標簽,代碼如下:
<!--<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"
/>
其中兩個<html:radio>標簽中的property屬性值必須都為“sex”,每個value表示選中當前選項后,提交給服務端的值,也就是通過ActionForm的子類實例對象的相應屬性可以獲得的值。
4.<html:checkbox>
標簽
<html:checkbox>
標簽對應于
type
屬性值為“
checkbox
”的
HTML<input>
標簽。
<html:checkbox>
標簽的基本用法如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
<
html:checkbox
property
="student"
value
="true"
/>
其中
value
屬性表示當勾選這個復選框時提交給服務端的值。
5. <html:multibox>標簽
<html:multibox>標簽實際上也對應于type屬性值為“checkbox”的HTML<input>標簽。但<html:multibox>和<html:checkbox>在映射到ActionForm子類實例對象的相應屬性的映射方式不同。所有property屬性值相同的<html:multibox>標簽被映射到同一個property所指的屬性中,并且這個屬性是一個數組類型。而<html:checkbox>標簽只對應了一個值。<html:multibox>標簽的基本用法如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
上網
<
html:multibox
property
="hobbies"
value
="上網"
/>
旅游
<
html:multibox
property
="hobbies"
value
="旅游"
/>
足球
<
html:multibox
property
="hobbies"
value
="足球"
/>
圍棋
<
html:multibox
property
="hobbies"
value
="圍棋"
/>
其中
value
屬性表示選中當前復選框的返回值。
6.<html:select>
和
<html:option>
標簽
<html:select>
和
<html:option>
組合對應了
HTML
中的
<select>
和
<option>
組合。這兩個標簽的基本用法如下:
<!--<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
="項目經理"
/>
<
html:option
value
="高級顧問"
/>
<
html:option
value
="其他"
/>
</
html:select
>
其中
value
屬性表示在下拉列表框中選擇某一項時向服務端提交的值。
7. <html:submit>和<html:reset>標簽
這兩個HTML標簽分別對應了type為“submit”和“reset”的HTML<input>標簽。它們的基本用法如下:
<!--<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
標簽
在
HTML
標簽庫中還有很多其他的標簽。關于這些標簽的詳細信息讀者可以參閱
Struts
的官方網站,
URL
如下:
http://struts.apache.org/1.2.9/userGuide/struts-html.html
二、
HTML
標簽庫演示實例
在本文給出了一個完整的例子來演示如何通過
HTML
標簽來展現用戶界面,以及如何從由
HTML
標簽生成的界面中獲取用戶提交的信息。實現這個例子需要如下四步:
【第
1
步】
建立使用
HTML
標簽的
JSP
頁面
在
<samples
工程目錄
>
中建立一個
htmlTags.jsp
文件,并輸入如下的內容:
<!--<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標簽庫演示
</
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
/>
學生:
<
html:checkbox
property
="student"
value
="true"
/>
<
p
/>
愛好:上網
<
html:multibox
property
="hobbies"
value
="上網"
/>
旅游
<
html:multibox
property
="hobbies"
value
="旅游"
/>
足球
<
html:multibox
property
="hobbies"
value
="足球"
/>
圍棋
<
html:multibox
property
="hobbies"
value
="圍棋"
/>
<
p
/>
職業:
<
html:select
property
="work"
>
<
html:option
value
=""
/>
<
html:option
value
="軟件工程師"
/>
<
html:option
value
="軟件測試工程師"
/>
<
html:option
value
="項目經理"
/>
<
html:option
value
="高級顧問"
/>
<
html:option
value
="其他"
/>
</
html:select
>
<
p
/>
<
html:submit
value
="提交"
/>
<
html:reset
value
="重置"
/>
</
html:form
>
</
body
>
</
html
>
現在
htmlTags.jsp
還運行不了,因為
htmlTags
動作并沒有在
struts-config.xml
中配置。下面我們先在
struts-config.xml
中配置一下這個
htmlTags
動作和相應的
ActionForm
的子類。
【第
2
步】
配置
ActionForm
子類和
htmlTags
動作
打開
struts-config.xml
,在
<form-beans>
中加入如下的
<form-bean>
標簽:
<!--<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>
標簽:
<!--<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
,動作類為
HtmlTagsAction
,下面我們就來建立這兩個類。
【第
3
步】
實現
HtmlTagsForm
類
在本例中,
HtmlTagsForm
類只含有用于接收用戶提交的信息的屬性,除此之外,并未在這個類中做其他的事(如驗證數據)。在
<samples
工程目錄
>"src" actionform
目錄中建立一個
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
類的實例對象讀取用戶提交的信息,并將它們輸出的客戶端瀏覽器。在
<samples
工程目錄
>"src"action
目錄中建立一個
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(
"
學生:
"
+
(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(
"
職業:
"
+
htForm.getWork());
}
catch
(Exceptione)
{
}
return
null
;
}
}
啟動
Tomcat
,并在
IE
中輸入如下的
URL
:
http://localhost:8080/samples/htmlTags.jsp
在出現用戶界面后,輸入如圖1所示的信息。
圖1
在點擊“提交”按鈕后,將顯示如圖
2
所示的頁面。
圖2
國內最棒的Google Android技術社區(eoeandroid),歡迎訪問!
《銀河系列原創教程》
發布
《Java Web開發速學寶典》
出版,歡迎定購
Struts1.x系列教程(5):HTML標簽庫