最近在练手一个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错误,所以这个问题的两种解决方式,大家根据自己情况自行选择:

  1. 第一种:在项目的WEB-INF下添加jstl中所有tld文件,这样会导致项目结构看起来很乱,好处是不使用JSP作为视图层时,tomcat启动速度增加。
  2. 第二种:就是修改tomcat中catalina.properties文件配置为tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\,优缺点与第一种相反。

如果有更好的解决方式,可以评论交流。

文章参考:

https://blog.csdn.net/sinat_34104446/article/details/82846585?utm_medium=distribute.wap_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.wap_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

SSM框架练习之Jsp页面使用taglib标签报错500的问题的更多相关文章

  1. 关于SSM框架项目中jsp页面EL表达式使用的一些疑问(一)

    问题 ssm框架整合中,jsp页面中EL表达式所引用的对象“page”可以在controller中使用mav.addObject(“page”,pag )进行添加,如果省略mav.addObject( ...

  2. js 和 css 中 不能使用 jsp 页面中一些 标签 和 java 代码等,应注意

    js  和 css 中 不能使用 jsp  页面中一些 标签 和 java 代码等,应注意 如 ${ }  <%%>  等

  3. Eclipse 新建.jsp页面后,页面头部标签报错的解决方法

    Eclipse 新建.jsp页面后,页面头部标签报错的解决方法 1.报错地方: 2.解决方法: .jsp页面右键==>BUild Path ==>Configure Build Path. ...

  4. 页面白屏并且报错PHP Parse error: syntax error, unexpected end of file in 试了很久总算解决了

    页面白屏并且报错PHP Parse error:  syntax error, unexpected end of file in 试了很久 啥短标记,打开,都试了 最简单的办法 是重新建立一个文件, ...

  5. 【js监听报错】页面监听js报错问题

    <html> <head> <script type="text/javascript"> // 页面监听js报错问题 onerror=hand ...

  6. laravel框架手动删除迁移文件后再次创建报错

    手动删除laravel框架数据表迁移文件后再次创建报错 如下图: 执行创建操作之后会在autoload_static.php及autoload_classmap.php这两个文件中添加迁移文件的目录. ...

  7. JSP页面中taglib的uri设置

    今天遇到这样一个问题,使用JAVA做了个WEB应用,其中用到一个自定义标签.该标签的class文件与tld(tld文件中,uri定义为:http://wallimn.iteye.com/myfuncs ...

  8. SSM项目无法解析JSP页面

    JSP页面显示标头<%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  9. jsp页面中jstl标签详解

    JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL ...

随机推荐

  1. JavaScript基础-自己定义自己的函数(016)

    把一个函数对象赋值给变量后,就可以通过这个变量再次定义函数,甚至可以在一个函数内部再次定义它自己: var scareMe = function () { alert("Boo!" ...

  2. tomcat配置项目虚拟路径

    tomcat版本:apache-tomcat-7.0.42 参考:http://blog.csdn.net/pangdingshan/article/details/7214786 一.虚拟根目录 1 ...

  3. BZOJ3242 快餐店

    原题传送门 题意 给定一个n条边n个点的连通图,求该图的某一点在该图距离最远的点距离它的距离的最小值. 题解 显然,答案是\(\frac {原图直径}{2}\). 本体的图有 \(n\) 个点 \(n ...

  4. rhel7 rpmbuild 制作二进制程序安装包(.rpm) 简单示例

    下载rpm-build: # yum install rpm-build 如果上述方式无法安装(没配置网络源,虚拟机下是安装媒介源) 可以用下列方式下载后再安装(实践结果可能版本问题引起的缺少太多的* ...

  5. 一周学会linux实战笔记

    山篇 思考------实践-------再思考-------再实践 1.高效愉快地学习 2.先建立一个整体框架,然后细节 3.用的什么再学习什么 4.先know how,再know why 5.计算机 ...

  6. springMVC中的HttpSession与Model

    目录 1.1 spring的@MODELATTRIBUTE 2.1 session的概念 3.1 示例 4.1 为什么springmvc框架要使用model这个对象呢? 突然发问:相信很多人在做WEB ...

  7. OldTrafford after 102 days

    THE RED GO MARCHING ON   One Team One Love Through the highs and the lows   One hundred and two long ...

  8. 【第五空间智能安全大赛】hate_php WriteUp

    环境:https://www.ctfhub.com/#/challenge 打开题目可以看到源码: 阅读源码发现过滤掉了f l a g . p h / ; " ' ` | [ ] _ =这些 ...

  9. Chive CTF 2020 - Tiki

    题目状态: OPEN - 正在试图解这道题CLOSED - 这道题还没有打开SOLVED - 解决了!鼓掌撒花! 赛事信息: 起止时间:2020-04-09 01:00 ~ 2020-04-12 01 ...

  10. 脱壳实践之寻找OEP——堆栈平衡法

     0x00 前言 上一篇介绍了壳程序的加载过程以及通过两次内存断点法寻找OEP,这篇我们将利用新的的方法——堆栈平衡法来寻找OEP. 0x01 堆栈平衡法原理 堆栈平衡原理就是利用壳程序在运行前后需要 ...