Struts1.x系列教程(5):HTML标签库

系统 1554 0

本文为原创,如需转载,请注明作者和出处,谢谢!

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 ="上网" /> &nbsp;
旅游
< html:multibox property ="hobbies" value ="旅游" /> &nbsp;
足球
< html:multibox property ="hobbies" value ="足球" /> &nbsp;
围棋
< 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 ="提交" /> &nbsp;&nbsp;&nbsp; < 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标签库


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论