繁体   English   中英

javax.servlet.jsp-api的目的是什么?

[英]What is the purpose of javax.servlet.jsp-api

我正在学习如何制作一个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容器提供,因此我可以在Maven中添加<scope>provided</scope> 但是,为什么我需要包含这个罐子? 删除后哪些类或文件会出错?
  • 我不确定javax.servlet.jsp-api是做什么的。 如果我不包含它,我的hello world示例似乎运行得很好。 这是做什么的? 我是否需要添加<scope>provided</scope>
  • 任何servlet容器都不提供JSTL,因此必须明确添加它。 这个jar确保在我的jsp中正确处理<c:xxx>和其他基本标记。

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

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

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

  3. 是的,是的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM