关于servlet-api.jar和jsp-api.jar的选择和使用

选择哪个依赖

javax包下都是jdk提供接口规范,由第三方服务器厂商自己来实现。
jsp-api的依赖发生如下了2次迁移:
javax.servlet.jsp-api==>javax.servlet.jsp.jsp-api==>javax.servlet.jsp.javax.servlet.jsp-api
所以最新的jsp依赖包应该是javax.servlet.jsp.javax.servlet.jsp-api
同样,servlet-api依赖也发生了如下迁移:
javax.servlet.servlet-api==>javax.servlet.javax.servlet-api
如果再发生迁移或弃用,请到maven中央仓库查看变更。

Maven中这样引入两个依赖:

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <javax.servlet-api.version>4.0.1</javax.servlet-api.version> // 请自行选择最新版本号
    <javax.servlet.jsp-api.version>2.3.3</javax.servlet.jsp-api.version>
  </properties>
<dependencies>
  <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>${javax.servlet-api.version}</version>
      <scope>provided</scope>
    </dependency>
  <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>${javax.servlet.jsp-api.version}</version>
      <scope>provided</scope> 
  </dependency>
</dependencies>

<scope>provided</scope>表示作用域为provided,即只在编译、测试环境下使用,该依赖包再运行时(比如JDK或像Tomcat这样的容器)中提供,不需要再打包(jar/war)时加进去,不然会和运行时的包冲突。

其他阅读

https://www.cnblogs.com/douJiangYouTiao888/p/6473879.html

猜你喜欢

转载自www.cnblogs.com/xsjzhao/p/11024528.html