Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.servlet.jsp-api的用途是什么_Java_Maven_Jsp_Servlets_Wildfly - Fatal编程技术网

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

javax.servlet.jsp-api的用途是什么,java,maven,jsp,servlets,wildfly,Java,Maven,Jsp,Servlets,Wildfly,我正在学习如何制作一个兼容servlet 3.1的webapp,它将在JBoss wildfly 10上运行。我使用maven作为依赖项,我不确定以下依赖项到底做了什么,以及它们是否包含在servlet容器中: <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifact

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

javax.servlet
javax.servlet-api
${servlet.version}
假如
javax.servlet.jsp
javax.servlet.jsp-api
2.3.1
jstl
jstl
${jstl.version}
我已经做了一些谷歌搜索,希望验证或完成以下信息:

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

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

  • 如果您正在开发一个web应用程序,那么您不可能不使用ServletAPI中的类(HttpServletRequest、HttpServletResponse、Filter等)。虽然许多框架抽象掉了ServletAPI的大部分内容,但仍然可能需要您使用这些底层API

  • 是,添加提供的范围。但是,仅当您通过扩展javax.servlet.JSP.tagext.TagSupport来创建自定义JSP标记时(尽管标记文件提供了创建自定义标记的更现代的方法),您才需要在编译时类路径中使用它

  • 是的,是的


  • 在依赖项中使用JSP API的另一个原因是如果您使用的是Eclipse;Eclipse喜欢它出现在那里,因为它对JSP文件执行测试编译,以扫描它们是否存在错误,因此您会得到有关标识符(如
    PageContext
    )的错误,以及其他基本JSP类型(如果不存在)的错误。