Tomcat4.1.12在处理自定义tag时的一个缺陷
来源:互联网 发布:二分搜索算法 编辑:程序博客网 时间:2024/05/16 12:21
Tomcat4.1.12在处理自定义tag时的一个缺陷
1. 前言
刚才在练习写一个tag时,在Tomcat4.1.12环境下运行时发现了一些奇怪的现象,经过分析和测试,发现Tomcat4.1.12在处理自定义tag时有些问题。
2. 现象
问题一
我在tag中有一个属性设定成不可以接受请求时变量,也就是说只能接受静态值,可是我在JSP中使用时发现Tomcat4.1.12处理这种情况时跟JSP规范(我参考的是JSP1.2)的规定不符,它没有在编译时扔出错误,运行时也没有扔异常,反而是忽略掉这个不合法的参数,并且在执行tag实现类时对于该属性以空串视之。
问题二
这个问题是在实验问题一时偶然发现的,当你修改tld文件后,即使重启了tomcat,如果你的JSP没有修改过,那么在请求该JSP时,你对tld文件的修改不会起作用。(我分析是JSP没有被修改,就不会被重新编译,就不会重新参考tld文件,也就不会重新分析tld文件,那么对tld文件的修改就不会起作用。)但我认为这种处理对JSP程序员修改tld文件极为不利,这种处理方式是不合理的。
3. Tomcat5.0的对比
通过在Tomcat5.0的环境下做实验,Tomcat5.0下没有上述的两个问题。如果对不接受请求时变量的属性赋请求时变量,将会在请求该JSP时扔出异常。Tomcat5.0也能对tld文件的修改即时反应,甚至连tomcat都不必重启。
4. 我的测试程序源码
index.jsp
<%@ taglib uri="/WEB-INF/tlds/mylib.tld" prefix="test0" %>
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<%
String theValue = "maojb";
%>
<html>
<body bgcolor="white">
<test0:hello name="<%=("111"+theValue)%>"/>
<p> <%=new Date()%>
</body>
</html>
HelloTag.java
package com.mycompany;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class HelloTag extends TagSupport {
private String name = "World";
public void setName(String name) {
this.name = name;
}
public int doEndTag() {
try {
pageContext.getOut().println("Hello xiaocx " + name);
} catch(IOException e) {
}
return EVAL_PAGE;
}
}
mylib.tld
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>test</shortname>
<tag>
<name>hello</name>
<tagclass>com.mycompany.HelloTag</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>nam</name>
<required>yes</required>
<rtexprvalue>no</rtexprvalue>
</attribute>
</tag>
</taglib>
目录机构如下
index.jsp
WEB-INF
casses
com
mycompany
HelloTag.class
tds
mylib.tld
- Tomcat4.1.12在处理自定义tag时的一个缺陷
- 关于tomcat4并发处理的思考
- 一个简单的带Body的自定义Tag开发过程
- 一个简单的带Body的自定义Tag开发过程
- 缺陷管理专讲一:如何处理一个复杂的项目
- jquery的each遍历在ie下的一个缺陷
- 使Tomcat4.x作为Windows NT/2000的一个服务
- 配置在Tomcat4.1.X以上版本的缓存问题
- 自定义Tag标签的编写
- Apache2+Tomcat4的配置
- stl::set 的一个缺陷
- openfire LDAP的一个缺陷
- ucgui的一个小缺陷
- 分享一个帮助你自定义标签并且兼容现代浏览器的javascript类库 : X-tag
- Android 自定义一个简单而又实用的流式Tag标签布局
- 爪哇(Java)自定义的二个字符串高效处理方法,在静寂一个半月之后
- 自定义Tag
- 自定义View中onMeasure在wrap_content时的处理
- postgresql有了windows版本,不用再使用cygwin了
- PHP中的Mcrypt函数库应用
- 随时保持 Longhorn 最新动态~
- 崔永元逗老外逗出的震撼
- 简单工厂模式(Simple Factory Pattern)
- Tomcat4.1.12在处理自定义tag时的一个缺陷
- 想称自己是黑客的人,就进来看看再说
- 论坛上看到面试题
- Apache2 + PHP 5.0.1 for Win32的安装
- NET類(成員)特征
- 在jsp中使用upload组件
- 开发J2ME低级联网应用
- DLL(Dynamic Link Libraries)专题
- 使用 JSSE 和 NIO 实现非阻塞通信的一种快速方法