JSTL 与 TOMCAT5.5

问题:今天遇到一个奇怪的问题。新写的在spring 上跑的application使用了JSP2.0支持的EL表达式获取java bean的值,即${bean.value}。这个应用在tomcat 7上跑得好好的,但在tomcat 5上却不能被解释。页面依然显示${bean.value}。

原因:查了好久,最后终于明白问题所在了。对于不同版本的tomcat,其web.xml的头声明是不同的,在tomcat 7上,为支持JSP 2.1和servlet 3.0,web.xml头声明应该如下:

 

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

 

 

但在tomcat 5.5上,其头声明应该是:

 

<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">

 

 

我写的application采用了前者头声明,所以在tomcat 5.5上不能解释(为什么不能做到向下兼容呢?) 。将其头声明改成后者后即解决问题。

参考:http://www.coderanch.com/how-to/java/ServletsWebXml

posted @ 2013-05-03 12:36 眉间尺之魂 阅读(...) 评论(...) 编辑 收藏