天天看点

Resin/Tomcat下使用jstl

[b]Resin下使用jstl[/b]

[b]在Resin2.x下使用jstl[/b]

Resin从2.1.2版本开始自己实现了JSTL的core和fmt两个TAGLIB。

使用Resin2.x自带的JSTL不需要拷贝JAR和TLD文件,也不需要配置web.xml。

只要在页面引用就可以了,注意与标准JSTL1.1的区别。

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
           

需要注意的是:

<c:out value="${myvar}"/> 是 JSTL 语法 , resin2.1.x版本支持,

而 ${myvar} 是 JSP 2.0 语法 resin 3.0 之后支持

在resin2.1.x中使用会产生java.lang.NoClassDefFoundError: javax/servlet/jsp/el/VariableResolver错误

[b]在Resin3.x下使用jstl(未经验证)[/b]

将resin.conf文件的:

<servlet servlet-name="directory" servlet-class="com.caucho.servlets.DirectoryServlet"/>
           

改成:

<servlet servlet-name="directory" servlet-class="com.caucho.servlets.DirectoryServlet">
    <init enable="false"/>
</servlet>
           

在resin.conf文件中添加你的webapp的配置,注意要加上

<jsp fast-jstl="false"/>
<web-app id="/jstltest" document-directory="jstltest"><jsp fast-jstl="false"/></web-app>
           

在jsp引用中

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
           

[color=darkblue]使用标准的JSTL1.1[/color]

需要将JAR包(jstl.jar和standard.jar)拷贝到WEB-INF/lib目录下,不需要拷贝TLD文件,不需要配置web.xml。

在页面这样引用

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
           

[color=darkblue]使用标准的JSTL1.0[/color]

需要将JAR包(jstl.jar和standard.jar)拷贝到WEB-INF/lib目录下,拷贝需要的TLD文件。

配置web.xml

<taglib>
<taglib-uri>/tags/jstl-c</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/jstl-fmt</taglib-uri>
<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
</taglib>
           

在jsp引用

<%@ taglib uri="/tags/jstl-c" prefix="c" %>
<%@ taglib uri="/tags/jstl-fmt" prefix="fmt" %>
           

[b]Tomcat下使用JSTL1.0[/b]

需要将JAR包(jstl.jar和standard.jar)拷贝到WEB-INF/lib目录下,拷贝需要的TLD文件。

配置web.xml

<taglib>
<taglib-uri>/tags/jstl-c</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/jstl-fmt</taglib-uri>
<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
</taglib>
           

在jsp引用

<%@ taglib uri="/tags/jstl-c" prefix="c" %>
<%@ taglib uri="/tags/jstl-fmt" prefix="fmt" %>
           

[b]Tomcat下使用JSTL1.1[/b]

需要将JAR包(jstl.jar和standard.jar)拷贝到WEB-INF/lib目录下,不需要拷贝TLD文件,不需要配置web.xml。

在页面这样引用

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
           

需要注意的是:

[color=red]JSTL1.0是需要Servlet2.3和JSP1.2的。

JSTL1.1是需要Servlet2.4和JSP2.0的。[/color]

${myvar} 是JSP 2.0 语法,tomcat5以后的版本都支持JSP2.0也就是都支持EL语言。

但是为什么我们的应用程序发布到tomcat5服务器上后还是不支持EL语言呢,而且甚至不能发布成功。

这里涉及到web.xml文件的迁移问题

使用

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
           

是JSP1.2的语法,不支持EL语言。

需要把文件头换成

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
           

或者在每个jsp页面添加

<%@ page isELIgnored="false" %>
           

[b]转自: [/b][url]http://xying.spaces.live.com/Blog/cns!C20F968B904CD5D6!130.entry[/url]