我正在学习如何制作符合servlet 3.1的webapp,它将在JBoss wildfly 10上运行。我使用maven作为依赖项,我不确定以下依赖项的确切做法,以及它们是否包含/不包括在内在servlet容器中:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
我已经进行了一些谷歌搜索,希望验证或完成以下信息:
<scope>provided</scope>
。但是,为什么我需要包含这个罐子?删除后哪些类或文件会出错? <scope>provided</scope>
?<c:xxx>
和其他基本标记。答案 0 :(得分:3)
标记提供的依赖项将使其可用于编译时和测试类路径,但不能用于运行时类路径 - 正如您所说,容器将在运行时提供这些API的实现。
如果您正在开发Web应用程序,则不可能不使用Servlet API(HttpServletRequest,HttpServletResponse,Filter等)中的类。虽然许多框架抽象掉了大部分Servlet API,但仍然可能需要使用这些底层API。
是的,添加范围。但是,如果您通过扩展say,javax.servlet.jsp.tagext.TagSupport创建自定义JSP标记,那么您只需要在编译时类路径中使用它(尽管标记文件提供了一种更现代的方法来创建自定义标记)
是的,是的。