美文网首页
jstl 使用踩坑

jstl 使用踩坑

作者: 阳光的小mi | 来源:发表于2020-05-09 16:22 被阅读0次

1.前言

近期接触到公司一个jsp项目,用到了jstl1.2,着实踩了一把坑,在这简单记录一下排雷经过。

2.jstl使用

2.1 简介

jstl是jsp标准标签库,支持SQL、XML标签,需要安装,与web.xml的设置有关系,不同版本安装不一样。可参见:stackoverflow关于jstl的介绍
jstl1.2 比之前版本的安装简化了很多,有关资料:jstl的maven依赖jstl教程standard jar包下载

2.2 环境

本机环境是:Mac,Idea,Tomcat 8.5.54,Maven 3.6.3,JDK8,jstl1.2
pom.xml

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.1.2</version>
    </dependency>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>

jsp中taglib使用如下

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

2.3 问题

如果你看过上文2.1 简介中提供的资料,那么关于jstl是怎么回事、各版本之间的差异,想必你已经心中有数了。下面介绍我碰到的问题。
我拿到的是公司线上运营的项目,帮忙改bug,代码肯定是没有问题的,项目中关于jstl的配置在上文2.2 环境中已经介绍到了,但当我在Idea中配置好Tomcat,尝试启动项目时,得到错误信息如下:

  • 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core];
  • java.lang.ClassNotFoundException: org.apache.jsp.views.login_jsp;
运行效果截图
idea错误信息截图

2.4 错误排查

在网上各种百度,基本上都是说jstl的jar包在Tomcat编译时没用用到。
通过「jstl教程」的介绍,可知,jstl各版本在安装时是不一样的,所以得按照自己的情况进行排查。

  1. 首先,确认项目中使用的jstl的配置没有问题,我这里使用的是jstl1.2,只需要添加依赖即可;
    • 根据你使用的项目构建工具,添加依赖到对应文件,我这里使用的是maven,添加依赖到pom.xml
    • 检查jsp中taglib
    • web.xml ,version的版本与jstl要对应

温馨提示,若使用jstl1.2之前版本,需要下载对应jstl版本的standard的压缩包,解压后将 jstl.jar 与 standard.jar 添加到项目 WEB-INF/lib下,启动项目即可

  1. 其次,file -> project struct -> artifacts -> output layout ,在 WEB-INF/lib 下看看有没有你使用的jstl的jar包,如果没有说明Tomcat在编译时没有把jar包加载进来,那么需要手动添加。


    image.png
  2. 上述检查都没有问题,而且因为我这个项目是公司线上项目,不存在是代码问题,只可能是环境问题。再三检查自己机器上的Tomcat、maven配置等,都没有问题。最后跟其他可以成功运行该项目的同事对比了本机使用环境的区别,发现是Tomcat版本的问题,切换成Tomcat 8.5.50即可正常启动,原因未知。Tomcat版本相差无几,这个结果也是我万万没有想到的!

相关文章

  • jstl 使用踩坑

    1.前言 近期接触到公司一个jsp项目,用到了jstl1.2,着实踩了一把坑,在这简单记录一下排雷经过。 2.js...

  • 【踩坑】jstl的使用

    这个坑好像是半个月才解决,因为过五一前许多作业和五一在家的躺尸,所以过了大半个月才又碰这个坑,上次花了半天还是没解...

  • JavaWeb之 JSTL

    JSTL jstl的概述 是apache的东西,依赖EL 使用jstl需要导入jstl1.2.jar【JSTL 1...

  • jstl 中c:if 使用 的坑

    如果要...

  • JavaWeb(第十二周)

    day13 一、JSTL标签库 1.什么是JSTL Apache的东西,依赖EL 使用JSTL需要导入jstl1....

  • JSTL

    JSTL标签的使用 Java Server Pages Standard Tag Libray(JSTL): JS...

  • jstl与standard有什么作用?

    JSP标准标签库(JSTL)是一个JSP标签集合。 在jsp中,我们使用jstl表达式时需要使用到jstl.jar...

  • JAVA分布式开发中遇到的哪些坑(一)

    一、Spring使用过程中的踩坑记录 Spring通过注解使用多数据源 坑:@Autowired 按 byType...

  • Genymotion使用踩坑

    Genymotion 1. 小坑一:ADB服务连接上不 1. 问题描述 最近在下载试用 Genymotion 时...

  • GridView使用踩坑

    GridView未设置margin、padding容器内出现空隙问题。gidview的listSelector中的...

网友评论

      本文标题:jstl 使用踩坑

      本文链接:https://www.haomeiwen.com/subject/pxvknhtx.html