SSM框架练习之Jsp页⾯使⽤taglib标签报错500的问题
花了⼤量时间查阅⼤量资料后解决了,下⾯我说⼀下我解决问题的整个经过。
出现问题后我查阅资料,⼤部分给出的原因是没有添加avax.servlet.jstl的依赖,或者是项⽬打包输出的构建⽂件lib中不包含这个包的依赖,我仔细检查后发现,我本地项⽬确实存在。
继续查阅资料说,少⼀个standard包的依赖,我继续尝试,在项⽬中添加standard包的依赖,并在tomcat的lib⽬录⾥也添加了jstl及standard 包,继续运⾏,发现还是报错。
ssm框架主要代码在哪里然后继续查阅资料,原因因为项⽬jsp页⾯引⽤的taglib标签所使⽤的tld⽂件没有从jstl包中加载出来,导致报错,解决⽅式是在项⽬的WEB-INF下添加jstl中所有tld⽂件。于是乎,我在本地项⽬的WEB-INF下建⽴了⼀个taglib⽂件夹,把jstl包解压后,把⾥⾯jar包的META-INF\中.tld全部拷贝出后放在新建的⽂件夹中。
解决⽅式是暴⼒了点,还是先解决问题再说,于是乎再次运⾏。
原本这⾥就结束了,但是我不⽢⼼,这么解决太暴⼒了,⽽且影响项⽬结构,看起来很乱,于是乎继续翻阅资料。偶然发现了⼀篇博客,说是tomcat的配置⽂件⾥如果配置了跳过tld扫描会导致项⽬⽆法加载.tld⽂件的问题,我恍然⼤悟!
原来是昨天运⾏项⽬的时候,tomcat出现了⼀个警告。
解决⽅式是:Tomcat安装⽬录下apache-tomcat\conf\catalina.properties⽂件中看到有以下⼀串代码,代表的是在启动Tomcat需要跳过检查的jar包。
修改为tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar就不会出现警告了。突然明⽩,原来修改后tomcat就不会加载jar包中的.tld⽂件,所以导致报500错误,于是我重新修改为原来的代码,然后去掉项⽬中META-INF\taglib⽂件夹,运⾏后,成功了!
这下,终于真相⼤⽩了。
总结:
我看⽹上很多说法,说是tomcat添加tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar后会提⾼tomcat的启动速度,也会解决因为扫描.tld⽂件⽽导致卡在启动项⽬⼗⼏分钟的问题,但是带来的弊端就是jsp页⾯taglib标签500错误,所以这个问题的两种解决⽅式,⼤家根据⾃⼰情况⾃⾏选择:
1. 第⼀种:在项⽬的WEB-INF下添加jstl中所有tld⽂件,这样会导致项⽬结构看起来很乱,好处是不使⽤JSP作为视图层时,tomcat启动
速度增加。
2. 第⼆种:就是修改tomcat中catalina.properties⽂件配置为tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\,优缺点与第⼀种相反。
如果有更好的解决⽅式,可以评论交流。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。