JSTL导包踩坑
期末考试,考了JSTL,我正常的用maven导了下面两个包,用的JDK1.8,tomcat9.0.68。
我明明导了包,可是却给我报了个错。还在考试呢,就给我搞这种【悲伤】。
<!--JSTL表达式-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--standard标签库-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
后来我换了tomcat8.5.78程序正常运行。
还好我还有一个tomcat8,不然考试直接吃零蛋。
后来考完试,我保持这好奇心,为什么我的tomcat9就运行不了。然后去网上搜,一搜一堆破烂玩意儿。
再后来我下了个tomcat10.0.27试了一下,不试不知道,一试吓一跳。
我用tomcat10,通过注解@WebServlet访问我的Servlet却找不到,报404,然后就去百度,发现原来是包不对。
在创建javaWeb项目时,会给你导一个Servlet的包。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
这个包在tomcat10之前都好使,但tomcat10以后就要导这两个包。
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>3.0.0</version>
<scope>provided</scope>
</dependency>
导了正确的包以后,Servlet可以正常的访问到了,但是JSTL又不行了。
后面再百度,tomcat10原来用的JSTL包又是不一样的。
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-spec</artifactId>
<version>1.2.5</version>
</dependency>
tomcat10要用JSTL,还得导这两个包。
导完包后再去使用标签,直接就正常运行了。
至于我的tomcat9,还是用不了JSTL,所以我还是决定走在前头,接触新技术,用tomcat10吧,毕竟几年后,总得用高版本的东西。
评论