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