Tomcat,Jstl,Servlet-api,jsp-api,standard各版本支持

2024-06-17 05:32

本文主要是介绍Tomcat,Jstl,Servlet-api,jsp-api,standard各版本支持,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言


最近在整合SSM框架,然后引入了SiteMesh2.4布局框架,然后就引出了一系列问题,先是jstl版本报错,然后就是运行项目JSP页面报错等等这一些问题都是由于Tomcat,Jstl,Servlet-api,jsp-api,standard这几者之间的关系导致的。我在项目中引用了jstl1.2,servlet-api3.1.0,jsp-api2.2,standard1.1.2 mavne依赖如下:

<!-- Servlet api -->
<dependency><groupId>javax.servlet</groupId><artifactId>3.1.0</artifactId><version></version><scope>provided</scope>
</dependency>
<dependency>  <groupId>javax.servlet.jsp</groupId>  <artifactId>jsp-api</artifactId>  <version>2.2</version>  <scope>provided</scope>  
</dependency>
<dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><version>7.0</version>
</dependency>			
<!-- JSTL -->
<dependency>  <groupId>javax.servlet</groupId>  <artifactId>jstl</artifactId><type>jar</type><version>1.2</version>  
</dependency>
<!-- standard -->
<dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><type>jar</type><version>1.1.2</version>
</dependency>
<dependency>  <groupId>org.glassfish.web</groupId>  <artifactId>jstl-impl</artifactId>  <version>1.2</version>  <exclusions>  <exclusion>  <artifactId>servlet-api</artifactId>  <groupId>javax.servlet</groupId>  </exclusion>  <exclusion>  <artifactId>jsp-api</artifactId>  <groupId>javax.servlet.jsp</groupId>  </exclusion>  <exclusion>  <artifactId>jstl-api</artifactId>  <groupId>javax.servlet.jsp.jstl</groupId>  </exclusion>  </exclusions>  
</dependency>  


Servlet版本用的是3.0,web.xml中的scheme定义为:

<web-app   xmlns="http://java.sun.com/xml/ns/javaee"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">  


由于JSTL1.0和JSTL1.1的声明语句不一样:

JSTL1.0的使用方法为:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>JSTL1.1的使用方法为:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>JSTL1.2的使用方法为
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

我在JSP页面中引用的就是jstl1.1的语法,然后放到Tomcat8中去运行,一运行就报错:

org.apache.jasper.JasperException: /register.jsp (line: 10, column: 1) The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application


最后发现把语法改成1.0的就能运行,说明Tomcat8不支持1.1,然后发现Tomcat8/lib目录下并没有jstl1.1的jar包,复制一个到该目录下就行了。


如果说是报下面这种错的话,基本上就是由于版本不一致所导致的:

org.apache.jasper.JasperException:
java.lang.RuntimeException: org.apache.jasper.JasperException:


有时候要看EL表达式是否支持,默认开启支持EL表达式支持有:


1、servlet2.4
2、J2EE6


默认不支持EL表达式需要进行如下2种配置中的其一来开启EL:


1、在JSP中加入:

<%@ page isELIgnored="false"%>

2、在web.xm中加入:

<jsp-config>     <jsp-property-group>     <url-pattern>*.jsp</url-pattern>     <el-ignored>false</el-ignored>     </jsp-property-group>     
</jsp-config>


二、对应关系




Servlet - - Jsp - - EL表达式 - - Tomcat一览表




注:


1,来源自Tomcat官网:http://tomcat.apache.org/whichversion.html


JSTL各个版本与Jsp及Servlet版本之间的依赖关系:




注:


1,来源自百度百科:http://baike.baidu.com/view/73527.htm 

这篇关于Tomcat,Jstl,Servlet-api,jsp-api,standard各版本支持的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068597

相关文章

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Linux升级或者切换python版本实现方式

《Linux升级或者切换python版本实现方式》本文介绍在Ubuntu/Debian系统升级Python至3.11或更高版本的方法,通过查看版本列表并选择新版本进行全局修改,需注意自动与手动模式的选... 目录升级系统python版本 (适用于全局修改)对于Ubuntu/Debian系统安装后,验证Pyt

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

IDEA中配置Tomcat全过程

《IDEA中配置Tomcat全过程》文章介绍了在IDEA中配置Tomcat的六步流程,包括添加服务器、配置部署选项、设置应用服务器及启动,并提及Maven依赖可能因约定大于配置导致问题,需检查依赖版本... 目录第一步第二步第三步第四步第五步第六步总结第一步选择这个方框第二步选择+号,找到Tomca

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi