问题背景
自从有了jsp,实现了java代码同html代码的协作,写起界面来也得心应手了不少,但是,在jsp页面内嵌入大量的java代码总不是一件雅观的事情,这不,就有了jstl表达式。但是,前几天使用的时候却遇到了一个问题,那就是放好了jstl标签但就是没有效果。
解决思路
遇到这种问题还是比较棘手的,因为没有任何的报错信息和提示,那只能按照最笨的方法一步步来,当然首先排查有没有低级错误,结果发现配置的完全没有问题,而且类库的引入也都十分正常。
那么,我们就应该考虑下程序的版本问题了,果不其然,的确是版本坑了我。这还的从maven说起。我在创建项目的时候,使用的是maven的web-app那个模板,那个模板创建的项目的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" >
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_3.xsd"
id="WebApp_ID" version="2.5">
</web-app>
问题就出在这里,maven的模板为我们生成的项目模板的web.xml文件中配置的web容器版本是2.3,而2.5及2.5以上的版本才开始支持jstl表达式,你懂得,所以被坑到了!
结论
今天其实发现版本问题还是很重要的,版本问题其实也常常出现在我们再整合框架的时候,经常时会遇到这样的问题,比如整合spring-mybatis的时候,整合redis到wpring中的时候,你知道的,其实这样的问题完全是可以避免的,这些坑一般都有人踩过,那我们就要在开始之前就去查一查,防患于未然。
再者就是,你若不幸运,还是遇到了,那排查的时候也要有个先后顺序,从最低级的问题开始排查一定是一个明智的选择。
这一次收获蛮大的。爱笨媳妇。