html:link> 标签用于生成HTML <a> 元素。<html:link> 在创建超链接时,有两个优点:
(1) 允许在URL 中以多种方式包含请求参数。
(2) 当用户浏览器关闭Cookie 时,会自动重写URL,把SessionID 作为请求参数包含在URL 中,用于跟踪用户的Session 状态。
<html:link> 标签有以下重要属性:
(1) forward:指定全局转发链接。
(2) href:指定完整的URL 键接。
(3) page:指定相对于当前网页的URL。
<html:rewrite> 用于输出超链接中的URI部分,但它并不生成HTML <a> 元素。URI指的是URL 中协议、主机和端口以后的内容。URI 用于指定具体的请求资源。例如,对于URL:HTTP://localhost:8080/HtmlBasic.do,它的URI为/HtmlBasic.do
示例:
1、创建全局转发链接
首先,在Struts-config.xml 中<global-forwards> 元素中定义一个<forward> 元素:
<global-forwards>
<forward name = "index" path="/index.jsp"/>
</global-forwards>
接着,在JSP 文件中创建<html:link> 标签:
<html:link forward="index">
Link to Global ActionForward
</html:link>
<html:link> 标签的forward 属性和<global-forwards> 元素中的<forward> 子元素匹配。以上代码生成如下HTML 内容:
<a href="/index.jsp">Link to Global ActionFoward</a>
值得注意的是,<html:link> 的forward 属性只引用Struts-config.xml 配置文件中<global-forwards>内的<forward> 子元素,如果引用<action> 内的<forward> 子元素,在运行时将会抛出异常:
Cannot create rewrite URL: Java.Net.MalfomedURlException: Cannot retrieve ActionForward
2、创建具有完整URL 的链接
如果Web 应用需要链接到其他站点,应该给出其他站点完整URL,例如:
<html:link href="http://jakarta.apache.org/struts/index.html">
Generate an "href" directly
</html:link>
生成HTML 代码如下:
<a href="http://jakarta.apache.org/struts/index.html">Generate an "href" directly</a>
值得注意的是,如果指定了<html:link> 标签的href 属性,即使用户浏览器的Cookie 关闭,<html:link> 标签也不会把用户SessionID 作为请求参数加和到URL 中。
3、从当前网页中创建相对URL
如果从一个网页链接到同一个应用中的另一网页,可以采用以下方式:
<html:link page="/HtmlBasic.do">
A relative link from this page
</html:link>
<html:link> 标签的 page 属性用于指定相对于当前应用的URI。以上代码生成如下HTML 内容:
<a href="/lib/HtmlBasic.do">......</a>
4、在URL 或 URI 中包含请求参数
如果要在URL或URI 中包含请求参数,只要把请求参数加在URL 或 URI的末尾就可以了。例如:
<html:link page="/HtmlBasic.do?prop1=abc&prop2=123">
Hard-code the url parameters
</html:link>
<!-- or -->
<html:rewrite page="/HtmlBasic.do?prop1=abc&prop2=123"/>
以上代码生成如下HTML 内容:
<a href=/lib/HtmlBasic.do?prop1=abc&prop2=123">......</a>
rewrite: /HtmlBasic.do?prop1=abc&prop2=123
提示:在HTML 中& 代表特殊字符 "&"
5、在URL 或 URI 中包含单个请求变量
如果要在URL 中包含一个请求参数,而这人参数的值存在于当前网页可访问的一个变量中,可以按以下方法来实现。
为了演示这一功能,首先创建一个当前网页可访问的变量。例如,本例中创建了两个变量,一个是字符类型,一个是CustomerBean , 它们存存于一个 page 范围内:
<%
/*
* Create a string object to store as a bean in
* the page content and embed in this link
*/
String stringBean = "Value to Pass ont URL";
pageContext.setAttribute("stringBean", stringBean);
%>
<jsp:useBean id = "customerBean" scope="page" class="htmltaglibs.beans.CurstomerBean"/>
<jsp:setProperty name="customerBean" property="name" value="weiqin"/>
接着,把这两个变量作为请求参数,加入到URL或URI 中:
<html:link page="/HtmlBasic.do"
paramId="urlParamName"
paramName="stringBean">
URL encode a parameter based on a string bean value
</html:link>
<html:link page="/HtmlBasic.do"
paramId="urlParamName"
paramName="customerBean"
paramProperty="name">
URL encode a parameter based on a customer bean value
</html:link>
rewrite: <html:rewrite page="/HtmlBasic.do"
paramId="urlParamName" paramName="stringBean"/>
rewrite: <html:rewrite page="/HtmlBasic.do"
paramId="urlParamName" paramName="customerBean"
paramProperty="name"/>
<html:link> 标签的 paramId 属性指定请求参数名,paramName 属性指定变量的名字。如果变量为JavaBean ,用paramProperty 属性指定JavaBean 的属性。
对于本例的stringBean,请求参数值为stringBean 的字符串值。对于customerBean,指定了paramProperty 属性,请求参数值为customerBean 的 name 属性值。
以上代码生成如下HTML 内容:
<a href="/HtmlBasic.do?urlParamName=Value to Pass on Url">
Url encode a paramter based on a string bean value
</a>
<a href="/HtmlBasic.do?urlParamName=weiqin">
url encode a parameter based on a customer bean value
</a>
rewrite: /HtmlBasic.do?urlParamName=Value to Pass on Url
rewrite: /HtmlBasic.do?urlParamName=weiqin
6、在URL 或 URI 中包含多个请求变量
如果在URL 或 URI 中包含多个请求参数,而这些参数的值来自多个变量,需要先定义一个Map类型的java 类,如java.util.HashMap,用它来存放请求变量。例如:
<%
/*
* Strore values int a Map(HashMap in this case)
* and construct the URL based on the Map
* /
java.util.HashMap myMap = new java.util.HashMap();
myMap.put("myString", new String("myStringValue"));
myMap.put("myArray" , new String[]{"str1","str2","str3"} );
pageContext.setAttribute("map", myMap);
%>
在以上代码的HaspMap 中存放了两个对象,其中第二个对象是个字符串数组。HashMap 被存放在PageContext 中。 接下来就可以把这个HashMap 作为请求参数,加入到URL 或 URI 中:
<%-- For this version of the <html:link> tag: --%>
<%-- map = a map with name/value pairs to pass on the url --%>
<html:link page="/HtmlBasic.do" name="map">
URL encode a parameter based on value in a Map
</html:link>
<%-- Create the same rewrite string for the above link. --%>
rewrite:<html:rewrite page="/HtmlBasic.do" name="map"/>
<html:link> 标签的name 属性指定包含请求变量的HashMap 对象。HashMap 对象中的每一对"key/value" 代表一对或多对"请求参数名/请求参数值"。以上代码生成如下的Html 内容:
<a href="/HtmlBasic.do?myString=myStringValue&myArray=str1&myArray=str2&myArray=str3">
URL encode a parameter based on value in a Map
</a>
rewrite:/HtmlBasic.do?myString=myStringValue&myArray=str1&myArray=str2&myArray=str3
分享到:
相关推荐
`<html:link>` 标签是Struts框架中用于创建HTML `<a>` 元素的一个组件,它提供了处理请求参数和Session跟踪的功能,尤其在处理动态生成的链接时非常有用。下面我们将深入探讨该标签的特性、用法以及相关的知识点。 ...
使用Struts标签时,应注意避免在属性值中直接使用scriptlet表达式,而是应使用完整的表达式。例如,`<html:link>`标签的`href`属性应包含整个URL路径。 总结起来,JSP Struts的HTML标签库大大简化了开发者在JSP页面...
Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:Bean Tags、HTML Tags、Logic Tags、Nested Tags 和 Tiles Tags。下面将对前三个标签库中的标签进行详细的介绍。 Bean Tags Bean Tags...
* html:link 标签:生成超链接。 * html:multibox 标签:生成多选框。 * html:radio 标签:生成单选框。 * html:select 标签:生成下拉列表。 * html:write 标签:生成 HTML 输出。 Logic Tags Logic Tags 库包含...
Struts HTML标签是Java开发中使用Struts框架进行Web应用时的重要组成部分,它提供了一系列预定义的JSP标签,简化了HTML表单的处理和与控制器(Action)之间的交互。这些标签使得开发者能够更方便地处理用户输入、...
在Struts表单中使用Hibernate实体类作为ActionForm,可以直接通过HTML标签与数据库对象交互,简化数据操作。 7. **Struts 1与Struts 2的区别** 在Struts 2中,HTML标签被替换为更强大的Struts Tags,提供了更多的...
在使用Struts标签库时,首先要在`web.xml`配置文件中声明每个标签库,然后在JSP页面中通过`<%@taglib>`指令引用。通过这种方式,开发者可以利用Struts的标签库,简化页面代码,提高开发效率,并实现更清晰的MVC分离...
使用Struts的HTML标签库,开发者可以避免在JSP页面中过多地使用脚本语言,使得页面更易于阅读和维护,同时增强了代码的结构化。需要注意的是,虽然Struts标签库支持脚本表达式,但最佳实践是尽量减少脚本的使用,以...
7. **servlet标签**:这些标签可以直接调用Servlet,如`<servlet:forward>`和`servlet:include>`,但通常不推荐在现代的Struts应用中使用,因为它们破坏了MVC模式。 8. **html:link**和**html:button**:这两个标签...
在实际开发中,我们还需要注意Struts配置文件(struts-config.xml)中的设定,比如ActionMapping和FormBean定义,它们是Struts HTML标签能正常工作的基础。通过合理的配置,我们可以实现更复杂的功能,如验证、国际...
在使用Struts1的标签时,开发者还需要配置struts-config.xml文件,这个配置文件定义了ActionForm、Action、Forward等元素,它们与标签库紧密关联,确保标签能够正确地与应用程序的其他部分交互。例如,`<html:link>`...
在JSP页面中使用Struts标签之前,需要在页面头部引入Struts的TLD(Tag Library Descriptor)文件: ```jsp <%@ taglib prefix="html" uri="/tags/html" %> ``` 这里的`prefix`是标签前缀,`uri`是TLD文件的...
- `.strutshtml`:提供与用户界面交互的标签,如表单元素、链接等。例如,`<html:text>` 用于创建文本输入框,`<html:submit>` 创建提交按钮。 2. **logic 标签库**: - `logic:present` 和 `logic:notPresent`:...
- **运行时表达式**:所有Struts标签属性都支持运行时表达式,但应避免使用scriptlet,正确使用例如`<html:link href='<%= "/" + name +"/index.jsp"'>`。 3. **Bean标签库的功能**: - **创建脚本变量**:从HTTP...
Nested库增强了其他Struts标签的嵌套功能,使得在复杂结构的数据模型中使用标签更加方便。例如,可以嵌套`<nested:property>`来处理多层属性的访问。 在使用Struts1标签时,有几个共同的特性需要注意,比如`...
在本文中,我们将深入探讨Struts框架中的Bean标签、HTML标签和Logic标签的使用。 1. **Bean标签**: Bean标签库主要用于创建和操作JavaBeans。它们包括`<bean:cookie>`、`<bean:define>`、`<bean:header>`、`<bean...
1)**<html:link>**标签: `<html:link>`标签是Struts中用于创建超链接的标签,它可以等价于HTML的`<a>`标签。以下是一些主要的特性: A)**href**:用于指定链接的目标URL,可以直接链接到静态页面或动态Action。...
这个文件可能展示了如何使用HTML错误标签来显示ActionForm中验证失败的信息,帮助用户了解提交表单时出现的问题。 5. `html-file.jsp`: `<html:file>`标签用于创建文件上传输入字段,这对于处理用户上传文件的...
5. **Nested标签库**:增强其他Struts标签的嵌套能力,使得在复杂结构中使用标签更加方便。 Struts标签库中的标签有一些共性特征,比如`id`、`name`、`property`和`scope`属性。`id`用于指定自定义标签的脚本变量名...