gpt4 book ai didi

java - javax.servlet.jsp-api 的用途是什么

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:05 24 4
gpt4 key购买 nike

我正在学习如何制作一个 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>

我已经进行了一些谷歌搜索,并希望验证或完成以下信息:

  • servlet api由servlet容器提供,所以我可以添加<scope>provided</scope>在 maven 。但是,为什么我需要包括这个 jar ?删除时哪些类或文件会出错?
  • 我不确定 javax.servlet.jsp-api 的作用。如果我不包含它,我的 hello world 示例似乎运行得很好。这是做什么的?我需要添加 <scope>provided</scope> 吗?还是不是?
  • JSTL 不是由任何 servlet 容器提供的,因此必须显式添加。这个 jar 确保 <c:xxx>和其他基本标记在我的 jsp 中得到了正确处理。

最佳答案

将依赖项标记为已提供将使它可用于编译时和测试类路径,但不可用于运行时类路径 - 正如您所说,容器将在运行时提供这些 API 的实现。

  1. 如果您正在开发 Web 应用程序,则不太可能不使用来自 Servlet API 的类(HttpServletRequest、HttpServletResponse、Filter 等)。虽然许多框架抽象出大部分 Servlet API,但您仍然可能需要使用这些底层 API。

  2. 是的,添加提供的范围。但是,如果例如您通过扩展 javax.servlet.jsp.tagext.TagSupport 创建自定义 JSP 标记(尽管标记文件提供了一种更现代的创建自定义标记的方法),则您只需要在编译时类路径中使用它.

  3. 是的,是的。

关于java - javax.servlet.jsp-api 的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36917254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com