前言:写这篇博客的原因是,我在使用Maven构建一个web模块的时候,其使用的JavaSE1.5环境,在build path配置中改变后,更新Maven项目又变成了1.5,而且EL表达式在JSP中无法解析,这也就是我弄清楚这些问题的初衷。
我们使用Maven的maven-archetype-webapp创建Web模块,其默认使用的是J2SE-1.5环境,而且Dynamic Web的版本为2.3,我们可以通过如下方式进行查看:项目右击 → 最下面的Properties → Project Facets,如下:
我们可以查看到<1>的版本为2.3,<2>的版本为1.5,更让人郁闷的是在Java上右击可以Change Version,而Dynamic Web Module却无法更改,并且Java的版本是改了,可是你是用Maven进行update Project,Java的版本又变成了1.5。
在我们针对这个问题讲述解决方法之前,先对各个版本关系进行整理。
1. Servlet API
Web项目开发离不开Servlet,Servlet的各版本如下:
Servlet APIversion | Platform | Important Changes |
---|---|---|
Servlet 3.1 | Java EE 7 | Non-blocking I/O, HTTP protocol upgrade mechanism (WebSocket) |
Servlet 3.0 | Java EE 6, Java SE 6 | Pluggability, Ease of development, Async Servlet, Security, File Uploading |
Servlet 2.5 | Java EE 5, Java SE 5 | Requires Java SE 5, supports annotation |
Servlet 2.4 | J2EE 1.4, J2SE 1.3 | web.xml uses XML Schema |
Servlet 2.3 | J2EE 1.3, J2SE 1.2 | Addition of Filter |
Servlet 2.2 | J2EE 1.2, J2SE 1.2 | Becomes part of J2EE, |