- 浏览: 515541 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (136)
- SOS经典收藏 (9)
- 好文收藏 (3)
- 技术杂烩 (6)
- SQL常用操作 (8)
- J2EE开发错误 (11)
- Java开发点滴_SSH (20)
- 数据库维护 (11)
- 网络相关 (1)
- WEB JS_CSS_DIV (10)
- 加密解密 (1)
- Swing (2)
- C&C++ (8)
- Linux (2)
- 软件工程 (5)
- Util (3)
- 我的实例 (3)
- Office办公常用 (3)
- JSP_Servlet (3)
- 开发手记 (4)
- Java基础 (3)
- Oracle技术 (6)
- 基础文档库 (9)
- 设计模式 (1)
- weblogic8.1启动的时候,项目报错,找不到Class (0)
- Office应用 (1)
- VM虚拟机技术 (1)
- PHP开发日记 (0)
最新评论
-
MoonLord:
其实不需要删文件,修改一个值就好了,参考:https://gi ...
Beyond Compare报应用程序发生错误 不能打开解决办法 -
别拿土豆不当马铃薯:
${pageContext.request.contextPath} JSP取得绝对路径 -
hysunny0923:
不需要DBUtilis.java啦学到很多~感谢分享~~
第一个JSP+Servlet+JavaBean+JDBC示例程序 -
zsxy168:
少了DBUtils.java文件
第一个JSP+Servlet+JavaBean+JDBC示例程序 -
little_demonye:
写得好详细,清楚了很多,太感谢啦
第一个JSP+Servlet+JavaBean+JDBC示例程序
Struts中的html:link标签是一个很常用的标签,其功能也比较明显:生成<a href="yoururl"></a>这样的HTML代码
在刚开始接触这个标签的时候,我知道这个标签可以这样用:
=========================================================
<html:link page="/html-link.do" paramId="stringProperty" paramName="newValue">
String via paramId and paramName
</html:link>
=========================================================
这个newValue一般就是一个String类型的变量,上述的代码将生成这样的HTML代码:
<a href="http://serverip:portno/projectcontextname/html-link.do?stringProperty=$newValue">String via paramId and paramName</a>
其中$newValue表示的是newValue这个变量的值
也可以这样用:
=========================================================
<html:link page="/html-link.do"
paramId="booleanProperty"
paramName="testbean" paramProperty="booleanProperty">
Boolean via paramId, paramName, and paramValue
</html:link>
=========================================================
这里多了一个paramProperty属性,这里的name属性和property属性和bean:write标签一样,一般来说name的值是一个被绑定在
request、session、application或page范围内的对象的绑定key值,Property属性的值则是这个对象的一个成员变量的名称
使用了name和Property之后,struts将在上述四种范围内,以name变量值为key查找对象,并将对象读出后,取出Property定义的
成员变量的值。
所以以上的标签被转化成HTML代码之后如下:
<a href="http://serverip:portno/projectcontextname/html-link.do?booleanProperty=$testbean.booleanProperty"> Boolean via paramId, paramName, and paramValue</a>
OK,了解到这里之后,感觉到一丝遗憾,因为如果只有paramId,paramName,paramProperty这三个属性的话,那么对于html:link标签来说,就永远只能
自定义一个参数,如果需要定义多个参数,如http://serverip:portno/projectcontextname/html-link.do?a=3&b=5&y=9这样的链接URL来说,就无能为力了
如果要定义多个参数,就需要手动拼URL,定义在page属性里面,这就失去了使用标签的意义了。
在此情况下,怀着失望的心情,打开了Struts的源码,开始查看这个标签的源码,忽然发现,这个标签完全是可以自定义多个参数的,关键就在name属性上
首先来看一段如何自定义多个参数的代码,如下:
=========================================================
<%
java.util.HashMap newValues = new java.util.HashMap();
newValues.put("floatProperty", new Float(444.0));
newValues.put("intProperty", new Integer(555));
newValues.put("stringArray", new String[]
{ "Value1", "Value2", "Value3" });
pageContext.setAttribute("newValues", newValues);
%>
<html:link page="/html-link.do" name="newValues">
Float, int, and stringArray via name (Map)
</html:link>
=========================================================
原来使用name属性就可以将一个Map类型的变量放入request、session、application、page四种范围的容器内,然后取个key值,填在name属性里就可以了
Struts将自动读取这个Map类型对象的所有key和key所定义的对象,然后自动生成HTML代码
好比上述的例子,将生成如下的HTML代码:
<a href="http://serverip:portno/projectcontextname/html-link.do?stringArray=Value1&stringArray=Value2&stringArray=Value3&floatProperty=444.0&intProperty=555">
Float, int, and stringArray via name (Map)</a>
愿望终于达到了,也充分证明了Struts的实力,但在这段实现中,查找name定义的对象这点在前面几次的源码剖析中已经很明确了(使用的是TagUtils.java中的lookup方法)
但得到这个对象后,Struts是如何读出key值集合和key值对应的对象的呢?代码在此:
=========================================================
// Add the required request parameters
boolean question = temp.indexOf('?') >= 0;
//这里的params变量就是我们输入的Map类型的对象
//就是这句代码可以得到key值集合
Iterator keys = params.keySet().iterator();
while (keys.hasNext()) {
String key = (String) keys.next();
Object value = params.get(key);
if (value == null) {
if (!question) {
url.append('?');
question = true;
} else {
url.append(separator);
}
url.append(this.encodeURL(key));
url.append('='); // Interpret null as "no value"
} else if (value instanceof String) {
if (!question) {
url.append('?');
question = true;
} else {
url.append(separator);
}
url.append(this.encodeURL(key));
url.append('=');
url.append(this.encodeURL((String) value));
} else if (value instanceof String[]) {
String values[] = (String[]) value;
for (int i = 0; i < values.length; i++) {
if (!question) {
url.append('?');
question = true;
} else {
url.append(separator);
}
url.append(this.encodeURL(key));
url.append('=');
url.append(this.encodeURL(values[i]));
}
} else /* Convert other objects to a string */ {
if (!question) {
url.append('?');
question = true;
} else {
url.append(separator);
}
url.append(this.encodeURL(key));
url.append('=');
url.append(this.encodeURL(value.toString()));
}
}
=========================================================
已经不用再做多余的解释了,代码已经说明一切。
其实在PropertyMessageResource.java中,也有类似的代码,就是将property文件读出的一段代码,在ActionServlet初始化时被调用
在bean:message标签研究一文中可以找到这段代码
最后想说的是,Struts的源码写的相当的优秀,不停的学习对提高自身的水平是很有裨益的
在刚开始接触这个标签的时候,我知道这个标签可以这样用:
=========================================================
<html:link page="/html-link.do" paramId="stringProperty" paramName="newValue">
String via paramId and paramName
</html:link>
=========================================================
这个newValue一般就是一个String类型的变量,上述的代码将生成这样的HTML代码:
<a href="http://serverip:portno/projectcontextname/html-link.do?stringProperty=$newValue">String via paramId and paramName</a>
其中$newValue表示的是newValue这个变量的值
也可以这样用:
=========================================================
<html:link page="/html-link.do"
paramId="booleanProperty"
paramName="testbean" paramProperty="booleanProperty">
Boolean via paramId, paramName, and paramValue
</html:link>
=========================================================
这里多了一个paramProperty属性,这里的name属性和property属性和bean:write标签一样,一般来说name的值是一个被绑定在
request、session、application或page范围内的对象的绑定key值,Property属性的值则是这个对象的一个成员变量的名称
使用了name和Property之后,struts将在上述四种范围内,以name变量值为key查找对象,并将对象读出后,取出Property定义的
成员变量的值。
所以以上的标签被转化成HTML代码之后如下:
<a href="http://serverip:portno/projectcontextname/html-link.do?booleanProperty=$testbean.booleanProperty"> Boolean via paramId, paramName, and paramValue</a>
OK,了解到这里之后,感觉到一丝遗憾,因为如果只有paramId,paramName,paramProperty这三个属性的话,那么对于html:link标签来说,就永远只能
自定义一个参数,如果需要定义多个参数,如http://serverip:portno/projectcontextname/html-link.do?a=3&b=5&y=9这样的链接URL来说,就无能为力了
如果要定义多个参数,就需要手动拼URL,定义在page属性里面,这就失去了使用标签的意义了。
在此情况下,怀着失望的心情,打开了Struts的源码,开始查看这个标签的源码,忽然发现,这个标签完全是可以自定义多个参数的,关键就在name属性上
首先来看一段如何自定义多个参数的代码,如下:
=========================================================
<%
java.util.HashMap newValues = new java.util.HashMap();
newValues.put("floatProperty", new Float(444.0));
newValues.put("intProperty", new Integer(555));
newValues.put("stringArray", new String[]
{ "Value1", "Value2", "Value3" });
pageContext.setAttribute("newValues", newValues);
%>
<html:link page="/html-link.do" name="newValues">
Float, int, and stringArray via name (Map)
</html:link>
=========================================================
原来使用name属性就可以将一个Map类型的变量放入request、session、application、page四种范围的容器内,然后取个key值,填在name属性里就可以了
Struts将自动读取这个Map类型对象的所有key和key所定义的对象,然后自动生成HTML代码
好比上述的例子,将生成如下的HTML代码:
<a href="http://serverip:portno/projectcontextname/html-link.do?stringArray=Value1&stringArray=Value2&stringArray=Value3&floatProperty=444.0&intProperty=555">
Float, int, and stringArray via name (Map)</a>
愿望终于达到了,也充分证明了Struts的实力,但在这段实现中,查找name定义的对象这点在前面几次的源码剖析中已经很明确了(使用的是TagUtils.java中的lookup方法)
但得到这个对象后,Struts是如何读出key值集合和key值对应的对象的呢?代码在此:
=========================================================
// Add the required request parameters
boolean question = temp.indexOf('?') >= 0;
//这里的params变量就是我们输入的Map类型的对象
//就是这句代码可以得到key值集合
Iterator keys = params.keySet().iterator();
while (keys.hasNext()) {
String key = (String) keys.next();
Object value = params.get(key);
if (value == null) {
if (!question) {
url.append('?');
question = true;
} else {
url.append(separator);
}
url.append(this.encodeURL(key));
url.append('='); // Interpret null as "no value"
} else if (value instanceof String) {
if (!question) {
url.append('?');
question = true;
} else {
url.append(separator);
}
url.append(this.encodeURL(key));
url.append('=');
url.append(this.encodeURL((String) value));
} else if (value instanceof String[]) {
String values[] = (String[]) value;
for (int i = 0; i < values.length; i++) {
if (!question) {
url.append('?');
question = true;
} else {
url.append(separator);
}
url.append(this.encodeURL(key));
url.append('=');
url.append(this.encodeURL(values[i]));
}
} else /* Convert other objects to a string */ {
if (!question) {
url.append('?');
question = true;
} else {
url.append(separator);
}
url.append(this.encodeURL(key));
url.append('=');
url.append(this.encodeURL(value.toString()));
}
}
=========================================================
已经不用再做多余的解释了,代码已经说明一切。
其实在PropertyMessageResource.java中,也有类似的代码,就是将property文件读出的一段代码,在ActionServlet初始化时被调用
在bean:message标签研究一文中可以找到这段代码
最后想说的是,Struts的源码写的相当的优秀,不停的学习对提高自身的水平是很有裨益的
发表评论
-
获得运行jar包存放路径的方法
2011-04-18 00:03 1389获得运行jar包存放路径 ... -
java读取配置文件的方法
2011-04-17 10:59 1148大家可能经常会遇到在Java程序中存取程序配置文件的需求,比如 ... -
<logic:iterate>使用
2010-05-21 13:55 1608<logic:iterate> 是Logic ... -
第一个hibernate项目
2010-01-03 13:56 1660什么是POJO? POJO是最纯粹的Java对象,也 ... -
Struts标签-bean:write几个属性举例
2009-12-31 17:10 8516Struts标签-bean:write几个属性举例2009-0 ... -
属性配置文件的使用方法_灵活使用配置文件来配置类
2009-12-21 19:26 764属性配置文件的使用方法 我们常常使用配置文件来进行工程属性的配 ... -
Java调用Windows命令
2009-10-09 12:08 1626Java调用Windows命令 Java调用Windows ... -
Java操作Windows注册表实例
2009-10-09 11:54 1438Microsoft Windows 9x、Windows ... -
关于Java装载库文件
2009-09-21 01:33 1685System.load 和 System.loadLibrar ... -
jar文件的打包方法
2009-09-21 01:04 1406针对:双击jar文件,即可运行相关程序 首先列表一下环境: ... -
Java代码混淆器最佳推荐
2009-09-20 23:12 6600引用从事Java编程的人都知道,可以通过逆向工程反编译得到Ja ... -
Java基础知识小结
2009-07-24 11:22 1300引用小结Java学习中的一 ... -
建立规范的项目开发程序
2009-05-21 01:18 963引用规范的开发,使得项目看起来更为清晰,更为规范: 比如在开发 ... -
ApplicationResources.properties
2009-05-19 01:18 3501引用ApplicationResources.properti ... -
Properties Editor for Eclipse3[1].0-3.2安装使用
2009-05-14 00:42 9405采用Link方式安装Propertie ... -
Log4j在开发中的使用
2009-05-11 00:27 988Log4j: Log4j的使用分为 ... -
Jsp页面传值的方法
2009-04-22 11:13 11223一.通过Form表单提交传值 客户端通过Form表单提交到服 ... -
java反编译 jar jad
2009-04-21 18:11 5019引用将CLASS文件打包成JAR文件? 一:简单的打包: ... -
Eclips 使用点滴
2009-03-30 16:29 10161.)eclipse过滤jar文件 每次看到老长的竖列jar文 ...
相关推荐
`<html:link>` 标签是Struts框架中用于创建HTML `<a>` 元素的一个组件,它提供了处理请求参数和Session跟踪的功能,尤其在处理动态生成的链接时非常有用。下面我们将深入探讨该标签的特性、用法以及相关的知识点。 ...
5. **Nested标签库**:这个库增强了其他Struts标签的嵌套能力,使得在复杂表单和布局中使用Struts标签更加方便。 Struts标签库的一个重要特性是它们支持属性的嵌套引用,这意味着可以使用`.`来访问对象的深层属性,...
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的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标签时,有几个共同的特性需要注意,比如`...
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`用于指定自定义标签的脚本变量名...
在JSP页面中使用Struts标签之前,需要在页面头部引入Struts标签库。这通常通过`<%@ taglib %>`指令完成,例如: ```jsp <%@ taglib prefix="html" uri="/tags/html" %> ``` 这里,`prefix`定义了标签的前缀...