SSM框架练习之Jsp页面使用taglib标签报错500的问题
最近在练手一个SSM的基于AdminLET框架模板的后台管理系统,使用的环境是tomcat9,使用Maven构建并通过添加Web模板框架的项目,在添加完所有的配置文件后启动tomcat运行,出现了一个错误:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]。如果想直接看此问题的解决方式,可以直接翻阅文章最后的总结。
花了大量时间查阅大量资料后解决了,下面我说一下我解决问题的整个经过。
出现问题后我查阅资料,大部分给出的原因是没有添加avax.servlet.jstl的依赖,或者是项目打包输出的构建文件lib中不包含这个包的依赖,我仔细检查后发现,我本地项目确实存在。
继续查阅资料说,少一个standard包的依赖,我继续尝试,在项目中添加standard包的依赖,并在tomcat的lib目录里也添加了jstl及standard包,继续运行,发现还是报错。
然后继续查阅资料,原因因为项目jsp页面引用的taglib标签所使用的tld文件没有从jstl包中加载出来,导致报错,解决方式是在项目的WEB-INF下添加jstl中所有tld文件。于是乎,我在本地项目的WEB-INF下建立了一个taglib文件夹,把jstl包解压后,把里面jar包的META-INF\中 .tld全部拷贝出后放在新建的文件夹中。
解决方式是暴力了点,还是先解决问题再说,于是乎再次运行。
前一个问题解决了,但出现了一个新的:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://www.springframework.org/security/tags]。心想,这不同理嘛,找到对应包的 .tld文件,然后也添加到WEB-INF下的taglib文件夹中不就行了,于是,我解压spring-security-taglibs-5.1.2.RELEASE,取出security.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错误,所以这个问题的两种解决方式,大家根据自己情况自行选择:
- 第一种:在项目的WEB-INF下添加jstl中所有tld文件,这样会导致项目结构看起来很乱,好处是不使用JSP作为视图层时,tomcat启动速度增加。
- 第二种:就是修改tomcat中catalina.properties文件配置为
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
,优缺点与第一种相反。
如果有更好的解决方式,可以评论交流。
SSM框架练习之Jsp页面使用taglib标签报错500的问题的更多相关文章
- 关于SSM框架项目中jsp页面EL表达式使用的一些疑问(一)
问题 ssm框架整合中,jsp页面中EL表达式所引用的对象“page”可以在controller中使用mav.addObject(“page”,pag )进行添加,如果省略mav.addObject( ...
- js 和 css 中 不能使用 jsp 页面中一些 标签 和 java 代码等,应注意
js 和 css 中 不能使用 jsp 页面中一些 标签 和 java 代码等,应注意 如 ${ } <%%> 等
- Eclipse 新建.jsp页面后,页面头部标签报错的解决方法
Eclipse 新建.jsp页面后,页面头部标签报错的解决方法 1.报错地方: 2.解决方法: .jsp页面右键==>BUild Path ==>Configure Build Path. ...
- 页面白屏并且报错PHP Parse error: syntax error, unexpected end of file in 试了很久总算解决了
页面白屏并且报错PHP Parse error: syntax error, unexpected end of file in 试了很久 啥短标记,打开,都试了 最简单的办法 是重新建立一个文件, ...
- 【js监听报错】页面监听js报错问题
<html> <head> <script type="text/javascript"> // 页面监听js报错问题 onerror=hand ...
- laravel框架手动删除迁移文件后再次创建报错
手动删除laravel框架数据表迁移文件后再次创建报错 如下图: 执行创建操作之后会在autoload_static.php及autoload_classmap.php这两个文件中添加迁移文件的目录. ...
- JSP页面中taglib的uri设置
今天遇到这样一个问题,使用JAVA做了个WEB应用,其中用到一个自定义标签.该标签的class文件与tld(tld文件中,uri定义为:http://wallimn.iteye.com/myfuncs ...
- SSM项目无法解析JSP页面
JSP页面显示标头<%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- jsp页面中jstl标签详解
JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL ...
随机推荐
- 异常重试框架Spring Retry实践
前期准备在Maven项目中添加Spring Retry和切面的依赖 POM: <!-- Spring Retry --> <dependency> <groupId> ...
- 最快安装AndroidStudio的方法(小歪整理)
最快安装AndroidStudio的方法(小歪整理)-干货,加速加载和解决无法预览布局文件的等问题 最快安装AndroidStudio的方法(小歪整理) 1.使用解压压缩包的方式安装:android- ...
- beautiful numbers树形dp or 数位dp
题目找链接 题意: 如果数a能被a中的每一位数整除(0除掉),则称a是一个beautiful number,求一个区间内的beautiful numbers的个数. 分析: 首先,很显然,l到r的所有 ...
- Django---drf第一天
目录 1 序列化组件介绍 2 简单使用 3 序列化类的字段类型 4 序列化字段选项 5 序列化组件修改数据 6 read_only和write_only 7查询所有 8 新增数据 9 删除一个数据 1 ...
- 蜂鸟E203系列——Linux开发工具
欲观原文,请君移步 Vivado安装 vivado是运行工程的工具,所以必须安装 后台回复[vivado2017]可获取vivado 2017.4 | 后台回复[vivado2020]可获取vitis ...
- Mysql常用sql语句(23)- update 修改数据
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 update 也是DML语句哦(数据操作语言) ...
- 【题解】p2388阶乘之乘
原题传送门 题解一堆\(O(n)\)算法真给我看傻了. 考虑\(10=2*5\),因子2肯定更多,所以计算因子5的个数即可. 从5到n这\(n-5+1\)个数的阶乘里面,都各自含有一个因子\(5=1* ...
- sqlilabs 1-20关 payload
1.联合查询注入:http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,user(),3 --+http://127.0.0.1/sqli/Less- ...
- LintCode笔记 - 82.落单的数
这一题相对简单,但是代码质量可能不是很好,我分享一下我的做题笔记以及做题过程给各位欣赏,有什么不足望各位大佬指出来 原题目,各位小伙伴也可以试着做一下 . 落单的数 中文English 给出 * n ...
- MYSQL 之 JDBC(十一): JDBC获取插入记录的主键值
取得数据库自动生成的主键值 package com.litian.jdbc; import javax.swing.plaf.nimbus.State; import java.sql.*; /** ...