HTML 標籤庫是 Struts 1.x 中最常用的標籤庫,它將 HTML 表單元素與 Struts 控制層緊密綁定,極大簡化了視圖層開發。本文系統介紹核心標籤用法,並通過一個完整的用戶信息采集實例演示從頁面設計到後端處理的全流程。
對應 HTML <form>,用於提交用戶輸入。關鍵區別:action 屬性必須指向 struts-config.xml 中正確配置的 Struts 動作,否則拋出異常導致頁面無法運行。基本語法:
<html:form action="Struts動作" method="get/post">
最常用標籤,對應 <input type="text">。核心屬性 property 必須與 ActionForm 子類的屬性名完全一致,否則拋出異常。其他屬性(size 等)與原生 input 一致。
<html:text property="name"/>
對應 <input type="radio">,用於枚舉類型選擇(如性別)。同一組 radio 的 property 必須相同,value 表示選中時提交的值:
男<html:radio property="sex" value="1" /> 女<html:radio property="sex" value="2" />
對應 <input type="checkbox">,單個勾選框。value 表示勾選時提交的值:
<html:checkbox property="student" value="true" />
同樣對應 checkbox,但映射機制不同:同一 property 的多個 multibox 會映射到 ActionForm 中的陣列類型屬性,而 checkbox 只對應單值。適合多選場景:
上網<html:multibox property="hobbies" value="上網" /> 旅游<html:multibox property="hobbies" value="旅游" /> 足球<html:multibox property="hobbies" value="足球" /> 圍棋<html:multibox property="hobbies" value="圍棋" />
對應 HTML 下拉選單組合:
<html:select property="work"> <html:option value="軟件工程師" /> <html:option value="軟件測試工程師" /> <html:option value="項目經理" /> <html:option value="高級顧問" /> <html:option value="其他" /> </html:select>
對應提交與重置按鈕,value 屬性定義按鈕顯示文本:
<html:submit value="提交"/> <html:reset value="重置"/>
更多標籤請參考官方文檔:Struts HTML Tag Library 官方指南
本實例包含四步:JSP 頁面構建、Struts 配置、ActionForm 實現、Action 處理。
<%@ page pageEncoding="GBK"%>
<%@ taglib uri="https://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>
<form-bean name="htmlTagsForm" type="actionform.HtmlTagsForm" /> <action name="htmlTagsForm" path="/htmlTags" scope="request" type="action.HtmlTagsAction" />
package actionform;
import org.apache.struts.action.*;
public class HtmlTagsForm extends ActionForm {
private String name;
private String sex;
private Boolean student;
private String[] hobbies; // 注意:multibox 對應陣列
private String work;
// getter/setter 省略...
}
package action;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import java.io.*;
import actionform.HtmlTagsForm;
public class HtmlTagsAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HtmlTagsForm htForm = (HtmlTagsForm) form;
try {
response.setCharacterEncoding("GB2312");
PrintWriter out = 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(String hobby: htForm.getHobbies())
out.println(hobby + " ");
out.println("<p/>");
}
if(htForm.getWork() != null)
out.println("職業:" + htForm.getWork());
} catch (Exception e) {}
return null;
}
}
啟動 Tomcat,訪問 https://localhost:8080/samples/htmlTags.jsp,填寫表單提交後將顯示處理結果。圖1 為輸入界面,圖2 為提交後的輸出結果。

