用maven命令行创建的java web项目,结果发现不支持EL表达式,查了一下资料说是servlet的版本问题,需要在jsp中加上<%@page isELIgnored="false" %>或者修改web-app
的servlet版本,在jsp中加上标签后确实可以用了,但是关于修改web-app的版本没有尝试成功,并且还有几个疑问想请大神帮着解答一下:
关于servlet版本,查资料说看servlet版本是把tomcat/lib中的jsp-api和servlet-api解压看版本
【1】tomcat中的这个servlet和jsp的版本跟我的项目的servlet版本有关系吗,是什么关系
项目中时要有servlet的依赖,,题主时maven项目,,pom.xml得有如下配置:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
在项目中的web.xml中文件头的版本跟servlet版本有什么直接关系吗
这个时声明当前项目的版本,不是servlet的版本,,比如web2.5,,web3.0之类的。
servlet的版本时上面配置依赖的版本
版本对应关系,网上有张图
有问题还可以追问
Tomcat中配置都是全局配置,包括对Serverlet以及jsp
我也遇上过类似的问题,就是导入jsp依赖跟servlet依赖之后,jsp页面一直报错。上网查了之后说是包冲突了,排除版本问题,serclet依赖包跟jstl包导入的时候有一个包会自动依赖,造成依赖包重复。最后好像是设置只加载一个依赖,解决了。
大致是因为依赖重复 重复编译
设置重复的依赖不编译
用以下替换对应的依赖:pom.xml文件中
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>