Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
JavaEE7中Servlet、JSP和JSTL需要哪些maven依赖项?_Java_Jsp_Maven_Jakarta Ee_Jstl - Fatal编程技术网

JavaEE7中Servlet、JSP和JSTL需要哪些maven依赖项?

JavaEE7中Servlet、JSP和JSTL需要哪些maven依赖项?,java,jsp,maven,jakarta-ee,jstl,Java,Jsp,Maven,Jakarta Ee,Jstl,我想使用SDK Java EE 7、Glassfish 4和Maven。 对吗?请注意范围 1。对于servlet: <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope>

我想使用SDK Java EE 7、Glassfish 4和Maven。
对吗?请注意范围

1。对于servlet:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jsp-api</artifactId>
  <version>2.0</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

爪哇
JavaEEAPI
7
假如
2。不带标准标记和JSTL的JSP:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jsp-api</artifactId>
  <version>2.0</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

javax.servlet
jsp api
2
3。对于带有标准标记“c:”


塔格利布
标准
1.1.2
4。对于使用JSTL的JSP

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    <scope>runtime</scope>
</dependency>

javax.servlet
jstl
1.2
运行时

您知道此信息包含的规范吗?

您不应该将这些依赖项添加到项目中。J2EE规范(如servlet)的实例化应由应用服务器的运行时提供


在Eclipse中,为应用程序服务器添加服务器运行时。在项目上单击鼠标右键,然后选择“属性”。然后构建路径>添加库>服务器运行时。

有多种选项。正如问题中所建议的,一种方法是导入整个JavaEEAPI。但你也可以更具选择性。您可以只包含servlet API(这适用于servlet API 3.0.1;较新版本可用于相同的工件数据,但较旧版本使用工件id
servlet API
):


尽管问题中显示的旧位置仍能正常工作。据推测,如果将来对此库进行任何更新,它们将包含在此组/工件ID中,因为这似乎是为了与所有其他最新工件相匹配而设计的。与其他工件不同,JSTL不是由容器提供的,因此不应该像其他工件那样将范围设置为“提供的”。

除了JSTL?到底为什么?Glassfish作为一个成熟的JavaEE容器,已经随JSTL一起出厂了。你不觉得Tomcat只是一个简单的JSP/Servlet容器,它确实没有捆绑所有其他JavaEE工件吗?@BalusC你完全正确!当我说要从列表中排除JSTL时,我想到了Tomcat。除了JSTL错误之外,我只是想指出,这些库应该依赖于服务器,特别是考虑到可能会产生版本冲突,这个答案是完全错误的。Maven构建web应用程序时不参考服务器运行时,因此确实需要关于哪些API可用的信息,无论您运行的是哪台服务器。我使用Maven构建应用程序,并将它们打包成
war
,以便Tomcat服务器运行。那么在这种情况下我该怎么办?你误解了“标准”标记库的含义。这并不意味着它只包含c标记。它基本上是Apache的整个JSTL 1.1.2实现。然后,您将看到另一个JSTL1.2实现,它是参考实现(通常是来自Sun/Oracle的实现)。他们显然只会相互冲突。基本上,最终会得到两个不同的JSTL实现。您应该只声明其中一个。请注意,Glassfish已经随附了开箱即用的功能,因此显然应该将范围设置为“提供”。