Struts Html标签库
来源:互联网 发布:手机音频驱动软件 编辑:程序博客网 时间:2024/05/24 07:31
1.<html:html>标签:
<html:html>标签用于在网页开头生成HTML的<html>元素,它只有一个用于显示用户语言的lang属性: <html:html lang="true">2.<html:base>标签<html:base>标签在网页的<head>部分生成HTML<base>元素。HTML<base>元素用于生成当前网页的绝对URL路径3.<html:link>和<html:rewrite>标签<html:link>标签用于生成HTML<a>元素。<html:link>在创建超链接时,有两个优点:● 允许在url中以多种方式包含请求参数。● 当用户浏览关闭Cookie时,会重写url,把SessionId作为请求参数包含在URL中,用于跟踪用户的Session状态。<html:bace>标签有以下重要属性:● forward :指定全局转发链接●href:指定完整的URL链接 ● page: 指定相对于当前网页的URL<html:rewrite>用于输出超链接中的URl部分,但它并不生成HTML<a>元素。 URL指的是URL中的协议,主机和端口以后的内容,URL用于指定具体的资源。例如:对于urlhttp://localhost:8080/htmltaglibs/HtmlBasic.do,它的url为/htmltaglibs/HtmlBasic.do。以下用一些例子演示如何使用<html:link>和<html:rewrite>标签:1>.创建全局转发链接首先在struts配置文件的<global-forwords>元素中定义一个<forward>元素:<global-forwords><forword name="index" path="/index.jsp"> </global-forwords>接着在JSP文件中创建<html:link>标签:<html:link forward="index">Link to Global ActionFoward </html:link><html:link>中的forward属性和<global-forwords>元素中的<forward>子元素匹配。以上代码生成如下html内容:<a href="/htmltaglibs/index.jsp">Link to Global ActionFoward</a>2>.创建具有完整URL的链接如果web站点需要链接到其他站点,应该给出其他站点的完整URL,例如:<html:link href="http://jakarta.apache.org/struts/index.html">Generate an "href" directly </html:link>以上代码生成:<a href="http://jakarta.apache.org/struts/index.html">Generate an "href" directly</a>3>.从当前网页中创建相对URL如果从一个网页链接到同一个应用中的另一个网页(相对地址跳转),可采用:<html:linkpage="HtmlBasics.do"> A relative link from this page </html:link>生成 HTML 代码如下:<ahref="htmltaglibs/HtmlBasics.do">A relative link from this page</a> 4>.在url或url中包含请求参数<html:linkpage="HtmlBasics.do?prop1=abc&prop2=123"> Hard-code the url parameters </html:link>或rewrite:<html:rewritepage="HtmlBasics.do?prop1=abc&prop2=123"/> 生成以下代码:<apage="/htmltaglibs/HtmlBasics.do?prop1=abc&prop2=123">Hard-code the url parameters</a> rewrite:/htmltaglibs/HtmlBasics.do?prop1=abc&prop2=1234.<html:img>标签1>.生成基本的HTML<img>元素<html:img page="/struts-power.gif"/>生成 html代码如下:<img src="/htmltaglibs/struts-power.gif">Html标签库中基本的表单标签:1.<html:form>标签<html:form action="FormBasic.do"> 生成html代码:<form name="FormBasicAction" mothod="post" action="/htmltaglibs/FormBasic.do/">Struts将参照Struts配置文件来查找相应的Action组件,在struts-config.xml文件中,与"FormBasic.do"对应的代码为:<action path="/FormBasic"type="htmltaglibs.actions.FormBasicAction" name="FormBacsicForm" scope="session" input="/FormBasic.jsp" validate="false"> <foreard name="success" path="/FormBasic.jsp"> </action>2.<html:text>标签在表单上创建HTML文本框字段。如下:<html:text property="userName">因为指定了一个userName的属性名,它应该匹配ActionForm 中的一个属性,所一在FormBasicForm 中也必须有uerName这个属性和相应的getter(),setter()方法。当表单提交时,struts框架会把userName字段的内容赋给form的userName属性。3.<html:cancel>标签<html:cancel>标签在表单中生成取消按钮,当用户按下取消按钮使,将产生一个取消事件,这个事件由Action类来捕获,至于如何处理这个事件,可以在Action类的execute()方法中编程来完成。这里不再详细说明:创建按钮:<html:cancel>Cancel</html:cancel>4.<html:reset>标签<html:reset>标签生成表单的复位按钮,使用方法如下:<html:reset></html:reset>这个标签的用法很简单,它和html元素<input type="reset">在功能上相同。5.<html:submit>标签<html:submit>Submit</html:submit>6.<html: hidden>标签在表单上生成隐藏字段,存放用户不希望看到和不允许修改的信息:如下两种方式:一.<html:hidden property="userName">生成Html:<input type="hidden" name="userName" value="propValue">二.添加了write属性<html:hidden property="userName" write="true"/>生成Html:<input type="hidden" name="userName" value="propValue">propValue检查框和单选按钮标签: 下面就简单说一下在HTML表单上生成检查框和单选按钮的标签,这些标签必须嵌套在<html:form>标签中:1.<html:checkbox>标签<html:checkbox>标签在表单上生成标准的HTML检查框,例如ActionForm Bean 中的某个属性只有两种可选值(如true和false),就可以在表单中用<html:checkbox>标签来表示。<html:checkbox>的使用方法为:<html:checkbox property="ch1"/> 生成HTML代码:<input type="checkbox" name="cb1" value="true"> a.jap包含两个<html:checkbox>标签,它们分别和AForm Bean中的ch1和ch2属性关联。在Bean中,ch1和ch2属性必须定义为boolean类型 <html:checkbox>有一个value属性,用来设置用户选中检查框时的值,value的默认值为true,可以用以下方式改变value属性: <html:checkbox property="ch1" value="true"/> 以上代码说明当用户选择了这个检查框,就把相应Bean中的ch1属性设置为true. 其实这样也会容易让人搞混,例如当value="false"时,如果用户没有选择这个检查框,就把Bean中对应的属性设置为true. 为了检查框能正常工作,必须在Bean的reset()方法中对其进行复位,当<html:checkbox>的 value属性为true时,必须在reset()方法中把对应的属性设置为false.当<html:checkbox>的 value属性为false时,必须在reset()方法中把对应的属性设置为true. 以下演示一下ch1属性复位:this.setCh1(false);//Note:With checkbox2 nerver reset here,it won't ever appear "unset"//this.setCh2(false)以上reset()方法没有复位ch2的值,在这种情况下,会导致ch2无法正常工作。一旦用户选择了ch2,以后ch2将永远为选中状态,即使用户取消了选择,ch2的值仍然为true,如图: 首次 ch1=false 选中ch1和ch2 ch1=true 取消选中ch1和 ch1=false ● →→ → 访问 ch2=false 后提交表单 ch2=true ch2后提交表单 ch2=true ch1和ch2的状态图 2.<html:multibox>标签<html:multibox>标签和<html:checkbox>一样,可以提供html<input type="ch1">元素,区别在于<html:multibox>可以生成复选框,它和Form 的关联方式不一样。如果应用中有多个CheckBox,并且希望在Form中用单个数组来表示它们,就可以采用<html:multibox>.<html:multibox>的使用方法如下: 1>.在Form中定义一个数组,来存放所有的 CheckBox的值:private String strArray[]=new String[0];public String[] getStrArray(){return (this.strArray);}public void setStrArray(String strArray[]){this.strArray=strArray;}2>.其次在表单中加入<html:multibox>元素,通过设置property="strArray"来把它和Form中的数组关联。3>.对于每个<html:multibox>元素,设置它的初始值,有以下两种方式:<html:multibox property="strArray" value="Value1"/> 或<html:multibox property="strArray">Value2</html:multibox> 当用户提交表单时,所有被选中的复选框的值都会被存放在Form中的相应数组中。如果某个复选框没有被选中,那么数组就不会包含它的值,例如,如果用户选择了上例的两个复选框,那么数组的内容为{"Value1","Value2"}. 3.<html:radio>标签<html:radio>标签提供HTML<input type="radio">元素,表示单选按钮,多个<html:radio>标签可以成组使用,如下:<html:radio property="r1" value="v1"/> <html:radio property="r1" value="v2"/> 以上标签的property属性相同,而仅仅是value不同,它们都和Form中的V1属性对应,生成的HTML如下: <input type="radio" name="r1" value="v1"> <input type="radio" name="r1" value="v2"> 1.<html:select>标签<html:select>标签生成HTML<select>元素。它可以在表单上创建下拉列表或多选列表。在<html:select>标签中可以包含多个<html:option>,<html:options>和<html:optionCollection>标签。<html:select>标签的基本形式为:
<html:select>标签有以下重要属性:▲size属性:指每次在网页上显示的可选项的数目。▲multiple属性:指定是否支持多项选择,如果设置为true,就表示多选列表,支持多项选择;否则表示下拉列表,只支持单项选择,默认为false.▲property属性:与ActionForm Bean中的对应属性对应,这个属性用来存放用户在列表上选中选项的值,在单选的情况下,Bean中的对应属性应该定义为简单类型(不能为数组)。在多项选择的情况下,Bean中的对应属性应该定义为数组类型,以便存放用户选择的多个选项。例如:在 cust.jsp中的客户列表为下拉列表,颜色列表为多选列表:<html:select property="custId"/>
<html:select property="colors" multiple="true" size="6"/> 对应的Bean为:private int custId;
private String colors[];
public String[] getColors() {
return colors;
}
public void setColors(String[] colors) {
this.colors = colors;
}
public int getCustId() {
return custId;
}
public void setCustId(int custId) {
this.custId = custId;
} 2.<html:option>标签<html:option>标签生成HTML<option>元素,这个标签被嵌套在<html:select>标签中,代表列表的一个可选项,它的label有两个来源:▲ 在<html:option>和</html:option>之间的文本内容。 例如:<html:select property="colors" size="6" multiple="true"> <!--在<html:option>和</html:option>之间的文本内容-->
<html:option value="a.orange">Orange</html:option>
<html:option value="a.purple">Purple</html:option> <!--由<html:option>标签的key,locale和bundle属性指定的Resource Bundle中的内容-->
<html:option value="a.red" <html:option value="a.blue" bundle="a.Colors" bundle="a.Colors"key="a.red"></html:option>
key="a.blue"></html:option>
</html:select> 3.<html:options>标签<html:options>标签提供一组HTML<option>元素。在<html:select>中可以包含多个<html:options>元素,如下:<html:select property="colors" size="6" multiple="true">
.......
<html:options collection="colorCollection" property="value" labelProperty="label"/> </html:select> 当然在这个jsp页面之前还定义了colorCollection集合,被存放在page范围中:<%
Vector colorCollection=new Vector();
colorCollection.add(new org.apache.struts.util.LabelValueBean ("Pink","a.pink")); colorCollection.add(new org.apache.struts.util.LabelValueBean ("Brown","a.brown"));
pageContext.setAttribute("colorCollection",colorCollection);
%> 4.<html:optionCollection>标签在<html:select>元素中可包含多个<html:optionCollection>元素:如下是包含一个<html:optionCollection>标签:<html:select property="custId">
<html:optionsCollection property="customers" label="name" value="custId"/> </html:select> 以下为Form类中定义customers属性的代码:private CustomerBean customers[];
public CustomerBean[] getCustomers() {
return customers;
}
public void setCustomers(CustomerBean[] customers) {
this.customers = customers;
} 以下为CustomerBean中定义name和custId属性的代码:private int custId;
private String name;
private String[] favColors=new String[0];
public CustomerBean(){
}
public int getCustId() {
return custId;
}
public void setCustId(int custId) {
this.custId = custId;
}
public String[] getFavColors() {
return favColors;
}
public void setFavColors(String[] favColors) {
this.favColors = favColors;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} 在表单中上传文件标签:看一下下面这个例子我想你就会用了,非常easy:
要想实现上面的结果,请看下面的代码,HtmlFile.jsp的代码:<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %><html:html locale="true">
<body>
<html:form action="htmlFile.do" enctype="multipart/form-data">
Please select the file that you would lile to upload:<br/>
<html:file property="file"/><br/><br/>
<html:submit></html:submit>
</html:form>
<logic:notEmpty name="htmlFileForm" property="fname">
The file just uploaded was:<p>
<ul>
<li>Name:<bean:write name="htmlFileForm" property="fname"/></li>
<li>Size:<bean:write name="htmlFileForm" property="size"/></li>
</ul>
</logic:notEmpty>
</body>
</html:html>与HtmlFile.jsp网页上对应的ActionForm为HtmlFileForm bean,如下为HtmlFileForm.java的源程序:
package com.lcf.struts.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;public class HtmlFileForm extends ActionForm {
private String fname;
private String size;
private FormFile file;
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
return null;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
}
具体的文件上传操作由HtmlFileAction来完成,如下为源代码:
package com.lcf.struts.action;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import org.omg.CORBA_2_3.portable.OutputStream;import com.lcf.struts.form.HtmlFileForm;
public class HtmlFileAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String dir=servlet.getServletContext().getRealPath("/upload");
HtmlFileForm htmlFileForm = (HtmlFileForm) form;
FormFile ff=htmlFileForm.getFile();
if(ff==null){
return mapping.findForward("ok");
}
String fname=ff.getFileName();
String size=Integer.toString(ff.getFileSize())+"bytes";
try {
InputStream streanIn=ff.getInputStream();
FileOutputStream streamOut=new FileOutputStream(dir+"/"+fname);
int bytesRead=0;
byte[] buffer=new byte[8192];
while((bytesRead=streanIn.read(buffer,0,8192))!=-1){
streamOut.write(buffer,0,bytesRead);
}
streanIn.close();
streamOut.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
htmlFileForm.setFname(fname);
htmlFileForm.setSize(size);
ff.destroy();
return mapping.findForward("ok");
}
}
当然了在做的同时还要注意以下几点,否则就会出问题了:
1.<html:file>标签必须嵌套在<html:form>标签中。
2.<html:from>标签的method属性必须设置为"POST".
3.<html:from>标签的编码类型enctype属性必须为"multipart/form-data".
4.<html:file>标签必须设置为property属性,这个属性和Bean中FormFile类型的属性对应。
- Struts Html标签库
- struts-html标签库
- Struts HTML 标签库
- Struts HTML 标签库
- Struts HTML 标签库
- Struts HTML 标签库
- Struts--HTML标签库(-)(转)
- struts的html标签库
- Struts标签-html标签
- Struts HTML标签库(上)
- 使用Struts提供的HTML标签库
- 使用Struts提供的HTML标签库
- Struts之HTML标签库详解 (中文版)
- Struts之HTML标签库详解 (中文版)
- JSP Struts之HTML标签库详解
- JSP Struts之HTML标签库详解
- JSP Struts之HTML标签库详解
- struts系列学习(html标签库)
- 以前一些有趣的作品-附带源码
- (转)在Linux下开发多语言软件: Hello GetText!
- 今天有点冲动
- CSDN开博
- 第一章 关于Symbian OS开发
- Struts Html标签库
- 今天很黄很暴力的干掉了Windows Genuine Advantage Notification
- Sync & ASync
- oracle反序索引导致出现“ORA-03113: 通信通道的文件结束”错误
- DataGridView 列宽和行高自动调整的设定
- 写给初学JAVA的人
- 轻松掌握SQL Server数据库文件恢复技术
- Struts国际化开发
- SQL SERVER 2005转换为SQL2000