簡體   English   中英

Java EE 7中的Servlet,JSP和JSTL需要哪些maven依賴項?

[英]What maven dependencies needs for Servlet, JSP and JSTL in Java EE 7?

我想使用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>

2.沒有標准標簽且沒有JSTL的JSP:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jsp-api</artifactId>
  <version>2.0</version>
</dependency>

3.對於帶有標准標簽的JSP“c:”

<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

4.對於帶有JSTL的JSP

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

您知道此信息包含的規范嗎?

有多種選擇。 正如問題中所建議的,一種方法是導入整個Java EE API。 但你也可以更有選擇性。 您可以只包含servlet API(這適用於servlet API 3.0.1;更新的版本可用於相同的工件數據,但舊版本使用工件ID servlet-api代替):

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>

問題意味着JSTL包還引入了相關的JSP依賴關系; 情況並非如此:如果您需要使用JSP API,則需要依賴它(但值得注意的是, 您不一定需要它,如本問題所述 )。 您應該使用與您正在使用的Servlet API版本匹配的正確版本的JSP API ,因此對於上面顯示的servlet API 3.0.1,您應該使用2.2:

    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>

與Servlet API一樣,JSP API的依賴數據也發生了變化。 在這種情況下,對於早於2.0的版本,組ID只是javax.servlet ,而對於比2.2更新的版本,工件id已更改為javax.servlet.jsp-api

對於JSTL,您幾乎肯定會使用1.2版本。 此版本的新標准位置為:

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

雖然問題中顯示的舊位置繼續正常工作。 據推測,如果將來對此庫進行任何更新,它們將包含在此組/工件ID中,因為它似乎旨在適合所有其他最新工件。 與其他工件不同,容器不提供JSTL,因此范圍不應設置為“提供”,而不是其他工件。

您不應該將這些依賴項添加到項目中。 J2EE規范的實例化(例如servlet)應由應用程序服務器的運行時提供。

在Eclipse中,為應用程序服務器添加服務器運行時。 右鍵單擊項目,然后選擇“屬性”。 然后構建路徑>添加庫>服務器運行時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM