簡體   English   中英

使用.jsp或.xhtml或.jsf擴展名創建JSF頁面有什么區別

[英]What is the difference between creating JSF pages with .jsp or .xhtml or .jsf extension

我看到一些示例創建擴展名為.jsp的JSF頁面,其他示例使用.xhtml擴展創建它們,其他示例選擇.jsf 我只是想知道在使用JSF頁面時上述擴展之間的區別是什么,以及如何選擇適當的擴展名?

JSP是一種舊的視圖技術,並與JSF 1.x結合使用。 Facelets(由一些人過度概括為XHTML )是JSP的繼承者,並於2009年底作為JSF 2.x的默認視圖技術引入。當您看到JSP時,您可能正在閱讀過時的書籍,教程或針對JSF 1的資源。X。 在使用JSF 2.x進行開發時,通常應該忽略它們,然后轉向針對JSF 2.x的資源,否則您可能最終會感到困惑,因為Facelets上的JSF 2.x中的許多內容都有所不同。

*.jsf只是web.xml FacesServlet映射的廣泛使用的URL模式之一。 其他的是*.faces/faces/* ,但這些都來自JSF 1.0 / 1.1時代。 它們都不代表具體的文件擴展名/路徑,而只是一個虛擬文件擴展名/路徑,並且只能在URL中指定http://example.com/contextname/page.jsf 如果您熟悉基本Servlet ,那么您應該知道當請求URL與servlet的URL模式匹配時,servletcontainer將調用servlet。 因此,當請求URL與*.jsf匹配時,將以這種方式調用FacesServlet 使用JSP時,它實際上會執行page.jsp 使用Facelets時,實際上會編譯page.xhtml

從JSF 2.x開始,您還可以使用*.xhtml作為URL模式。 這樣,您在指定URL時就不必感到困惑。 在使用Facelets 1.x的JSF 1.x中使用*.xhtml作為URL模式是不可能的,因為FacesServlet將在每次調用自身的無限循環中運行。 使用的另外一個優點*.xhtml是,終端用戶將無法看到原始JSF的源代碼,只要最終用戶有意改變來自例如在瀏覽器地址欄中的URL擴展.jsf.xhtml 不可能使用*.jsp作為URL模式,因為這樣已經使用該URL模式的容器的內置JspServlet將被覆蓋,然后FacesServlet將無法再以JSP為基礎。

也可以看看:

.jsp文件通常用於使用JavaServer Pages定義的JSF視圖。 .xhtml文件通常用於使用Facelets定義的JSF視圖。

這可以通過配置更改(例如,請參閱javax.faces.DEFAULT_SUFFIXjavax.faces.FACELETS_SUFFIX配置參數。)

其他擴展映射( *.jsf*.faces )傾向於用於通過FacesServlet處理請求。 這是JSF運行時將處理的視圖的邏輯映射。 如何處理映射在web.xml定義(不必使用擴展來完成;經常使用/faces/*映射。

從規格:

Servlet映射

基於將URL模式(如Java Servlet規范中所定義)與選擇此Web應用程序的上下文路徑之后的請求URL部分進行匹配,對Web應用程序的所有請求都映射到特定的servlet。 JSF實現必須支持定義<servlet-mapping> Web應用程序,該應用程序將任何有效的url-pattern映射到FacesServlet。 可以使用前綴或擴展映射。 使用前綴映射時,建議使用以下映射,但不是必需的:

 <servlet-mapping> <servlet-name> faces-servlet-name </servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> 

使用擴展映射時,建議使用以下映射,但不是必需的:

 <servlet-mapping> <servlet-name> faces-servlet-name </servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> 

除了FacesServlet之外,JSF實現還可以支持其他方式來調用JavaServer Faces請求處理生命周期,但依賴這些機制的應用程序將無法移植。

暫無
暫無

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

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