本文主要是介绍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的使用方法为:
<%@ 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各版本支持的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!