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

转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/16/251603.html

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>标签的基本用法如下:

<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>标签的
基本用法如下:

<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>标签,代码如下:

男<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>标签的基本用法如下:

<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>标签的基本用法如下:

上网<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>组合。这两个标签的基本用法如下:

<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>标签。它们的基本用法如下:

<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文件,并输入如下的内容:

<%@ page pageEncoding="GBK"%>
  <%@ taglib uri="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>标签:

<form-bean name="htmlTagsForm" type=" actionform.HtmlTagsForm" />

然后在<action-mappings>中加入如下的<action>标签:

<action name="htmlTagsForm" path="/htmlTags" scope="request" type=" action.HtmlTagsAction" />

我们从上面两段配置代码可以看出,ActionForm的子类为HtmlTagsForm,动作类为HtmlTagsAction,下面我们就来建立这两个类。

【第3步】实现HtmlTagsForm类

在本例中,HtmlTagsForm类只含有用于接收用户提交的信息的属性,除此之外,并未在这个类中做其他的事(如验证数据)。在<samples工程目录>"src" actionform目录中建立一个HtmlTagsForm.java文件,并输入如下的代码:

package actionform;
  
  import org.apache.struts.action.*;
  public class HtmlTagsForm extends ActionForm
  {
      private String name;
      private String sex;
      private Boolean student;
      private String[] hobbies;
      private String work;
      public String getWork()
      {
          return work;
      }
      public void setWork(String work)
      {
          this.work = work;
      }
      public String[] getHobbies()
      {
          return hobbies;
      }
      public void setHobbies(String[] hobbies)
      {
          this.hobbies = hobbies;
      }
      public String getName()
      {
          return name;
      }
      public String getSex()
      {
          return sex;
      }
      public void setSex(String sex)
      {
          this.sex = sex;
      }
      public void setName(String name)
      {
          this.name = name;
      }
      public Boolean getStudent()
      {
          return student;
      }
      public void setStudent(Boolean student)
      {
          this.student = student;
      }
  }


【第
4步】建立HtmlTagsAction类

HtmlTagsAction类的主要功能是通过HtmlTagsForm类的实例对象读取用户提交的信息,并将它们输出的客户端浏览器。在<samples工程目录>"src"action目录中建立一个HtmlTagsAction.java文件,并输入如下的代码。

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,并在IE中输入如下的URL:

http://localhost:8080/samples/htmlTags.jsp

在出现用户界面后,输入如图1所示的信息。

图1

在点击“提交”按钮后,将显示如图2所示的页面。

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

时间: 2024-08-24 19:40:29

【转】Struts1.x系列教程(5):HTML标签库的相关文章

【转】Struts1.x系列教程(4):标签库概述与安装

转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/15/251411.html Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动作)和客户端代码(Javascript.HTML等)实现的.这些Struts标签被写在JSP页面中,用于生成客户端代码.进行逻辑判断等工作,使用Struts标签可以尽量

【转】Struts1.x系列教程(7):Logic标签库

转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/19/251967.html Struts Logic标签库包含了如下三类标签:     1. 循环标签:iterate标签.用于枚举数组.集合类型对象中的元素. 2. 条件处理标签:用于是否相等.比

【转】Struts1.x系列教程(6):Bean标签库

转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/18/251805.html Bean标签库共有11个标签.这些标签可以完成如下五种工作: 1.       获得HTTP请求信息 2.       访问Java对象 3.       访问JSP内嵌对象和Struts配置对象 4.

【转】Struts1.x系列教程(2):简单的数据验证

转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/13/251197.html 简单验证从本质上说就是在服务端来验证客户端提交的form中的数据.这种验证只是对form中的数据规则进行检查,如必须输入用户ID,价格不能小于0或是对email格式的验证.在这个验证过程中,并不需要访问数据库.因此,简单验证需要在用户提交form后,并且在服务器处理form中的数据之前进行. 在进行完简单验证后,如果form中的

[转]Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序

转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/13/251101.html 本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅<Struts 2系列教程>来比较Struts 1.x和Struts 2.x的相同点和不同点.    在这篇文章中将以一个简单的例子(mystruts)来演示如何使用MyEclipse来开发.运行Struts程序,并给出了解决ActionForm出现乱码问题的方法.读者可以从本文中了解

【转】Struts1.x系列教程(3):属性(资源)文件乱码问题的解决之道

转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/14/251244.html 资源文件不仅仅需要保存英文信息,在很多时候,也需要保存其他的语言信息,如中文信息.但Java的属性文件只支持英文,要想在属性文件中保存中文,需要使用"uxxxx格式,但这非常不方便,因此,本文将分别介绍如何使用native2ascii.exe和Eclipse插件的方式来解决这个问题. 一.使用na

适合0基础的web开发系列教程-文本格式标签汇总

html标签主要是起结构的作用,布局的效果主要靠css完成,比如颜色.背景.字体大小.对齐等. 不过html标签中也有一些常用的文本格式化标签,能对文本内容进行简单的格式设置. 比如加粗文字.定义斜体.定义小号字.下划线.删除线.上标和下标等. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>夜鹰教程网</title> </head>

struts2 官方系列教程三:使用struts2 标签 tag

避免被爬,先贴上本帖地址:struts2 官方系列教程一:使用struts2 标签 tag http://www.cnblogs.com/linghaoxinpian/p/6901316.html 本教材假定你已完成了HelloWorld项目,你可以在 struts2 官方系列教程三:使用struts2 标签 tag 下载本章节的代码 在上一节教程中,我们在index.jsp中使用 url tag 创建了一个超链接hello.action 这节我们将探索struts2中其它tags Web应用程

Web攻防系列教程之跨站脚本攻击和防范技巧详解

Web攻防系列教程之跨站脚本攻击和防范技巧详解[XSS] 收藏:http://www.rising.com.cn/newsletter/news/2012-04-25/11387.html 来源:瑞星 2012-04-25 14:33:46 摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性 以及XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么,又该如何进行有效的防范呢?本文对此进行了 有针对性的具体