这个问题其实跟项目搭建有关,但是由于第一次遇到这个问题,网络上也比较少看到这个问题,所以记录下来分享下。
问题出现的项目为struts+jdbc项目,后台数据方面,电脑端页面由action处理,手机端页面由servlet处理,页面中所有的js,css引用使用的是<c:url>标签处理。
本项目运行已经有好几年的时间,调整过几个服务器后,在centos上使用nginx+tomcat,由于流量一般,所以相当稳定。由于近期系统定制上线需要,在新的tomcat服务器上搭建了一个几乎一模一样的项目。服务器跑起来后,神奇的事情就这么发生了,jsp页面中所有的文件引用正常,到了servlet中,跳转后的页面所有<c:url>失效,没有指向正确的路劲,全部丢失项目所在的路径。
本来以为是nginx,或者是tomcat出现问题了,结果同一个tomcat下另外一个项目运行是正常的。实践否定了自己的判断可是相当郁闷的事,后来思考了一番,项目几乎一模一样的情况,有可能出现问题的无非是tomcat那几个配置文件,毕竟那一块改动的东西不小。最后问题出现在tomcat最基本的配置上server.xml:
修改前的配置:
<Context docBase="/site/xxx/project" path="/" />
修改后的配置:
<Context docBase="/site/xxx/project" path="" />
问题便是这个斜杠出现的问题,去掉之后一切正常,后面有时间会去探寻下这个斜杠对jsp页面直接访问和servlet跳转的影响。