facelets_Java EE 8中的MVC 1.0:使用Facelets入门
facelets
MVC 1.0是一個基于動作的Model-View-Controller Web框架,它將成為將來的Java EE 8的一部分。它將與基于組件的JSF框架并存,并提供了構建面向HTML + javascript的應用程序的替代方法完全控制網址。
這篇文章總結了使用Facelets代替默認的JSP作為MVC框架的視圖技術需要做什么。
介紹
盡管MVC是一個全新的框架,但大多數示例中使用的默認視圖技術(JSP)相當古老,有時會很麻煩。 另一方面,哥哥JSF已經建立在更現代,更靈活的Facelets上。
幸運的是,MVC框架旨在支持現成的許多替代視圖技術,包括Facelets。
入門
盡管Java EE 8尚未發布,但是可以在某些Java EE 7服務器中使用MVC框架,因為名為Ozark的MVC規范的參考實現已經幾乎完成。
據報道,Ozark與應用服務器Glassfish 4.1.1和Payara 4.1一起使用 。 我建議在其中一個應用程序上運行該應用程序,否則您可能會四處走動。
在發布Java EE 8之前,有必要使用Java EE 7 API之上的默認范圍compile功能來添加對ozark maven工件的依賴關系:
pom.xml中的依賴項
<dependency><groupId>javax</groupId><artifactId>javaee-web-api</artifactId><version>7.0</version><scope>provided</scope></dependency><dependency><groupId>org.glassfish.ozark</groupId><artifactId>ozark</artifactId><version>1.0.0-m02</version><scope>compile</scope></dependency>這就是設置項目所需要的。 現在,您可以將新的MVC框架與Java EE結合使用了!
控制者
MVC框架基于JAX-RS構建,并與CDI和Bean驗證集成。 因此,MVC Controller是一個JAX-RS資源,僅使用@javax.mvc.annotation.Controller了注釋:
HeloController.java
@Path("/hello") @Controller @RequestScoped public class HelloController {@Injectprivate Models model;@GETpublic String doGet() {model.put("hello", "Hello MVC 1.0");return "hello.xhtml";} }控制器包含業務邏輯,并將模型粘貼到視圖上。
該視圖僅由控制器操作返回的字符串標識。 要使用facelets,只需指定一個路徑即可,該路徑將被映射到Facelets servlet(按照慣例,我們使用xhtml后綴)。
該模型由注入的Models對象表示。
這里要注意幾件事。 首先,由于控制器是JAX-RS資源,因此還必須創建JAX-RS應用程序配置-擴展javax.ws.rs.core.Application的類。
其次,除非您將bean.xml包含在bean發現模式 all ,否則您需要使用范圍定義注釋(例如@RequestScoped標記控制器,以打開CDI注入Models模型。
模型
該模型由用String鍵標識的對象組成,這些對象在視圖頁面中被轉換為變量。
有兩種方法可以定義模型。 首先是將javax.mvc.Models注入到控制器中,該控制器實際上是一個映射。 然后,控制器動作將對象放入String鍵下的注入模型中。
JSP和Facelets還支持帶有@Named CDI限定符的任意CDI bean。 這樣,您只需將@Named注釋放在模型上,就可以將任何CDI bean變成模型。
視圖
現在到本文的核心–我們將使用facelets在模型中顯示數據。 實際上,使用Facelets作為視圖技術與使用JSP一樣容易。 它只需要正確設置Facelets servlet。
web.xml中的FacesServlet配置
<servlet><servlet-name>Faces Servlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Faces Servlet</servlet-name><url-pattern>*.xhtml</url-pattern></servlet-mapping>FacesServlet需要映射到*.xhtml 。 所有xhtml頁面都應位于Web應用程序內的WEB-INF/views文件夾內,MVC框架在其中搜索視圖文件。
就是這樣! 現在,您可以開始使用facelet編寫頁面,并按path引用它們,它們以xhtml結尾。
一個示例Hello facelet頁面:
hello.xhtml
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://xmlns.jcp.org/jsf/html"><h:head><title>Facelet Title</title></h:head><h:body><h1>#{hello}</h1></h:body> </html>為了顯示hello.xhtml,只需從控制器操作中返回"hello.xhtml" 。
摘要
一旦了解了JAX-RS和CDI的基礎知識,就可以輕松開始使用MVC框架。 唯一的要求是在支持Ozark參考實現的應用程序服務器之一上運行應用程序。 使用各種視圖技術作為默認JSP的替代方案也非常容易。
MVC框架包括對許多視圖技術的支持,并能夠在其之上插入其他技術。 配置Facelets僅需要在web.xml中配置Faces servlet –設置JSF時需要做的同樣的事情。
這篇文章的靈感來自Bennet Schulz的另一篇文章。 如果您想了解有關新MVC框架的更多信息,請訪問他的博客。
翻譯自: https://www.javacodegeeks.com/2016/02/mvc-1-0-java-ee-8-getting-started-using-facelets.html
facelets
總結
以上是生活随笔為你收集整理的facelets_Java EE 8中的MVC 1.0:使用Facelets入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 硅胶蒸笼垫有毒吗 硅胶蒸笼垫能吃吗
- 下一篇: storm apache_Apache