Java EE 8中的MVC 1.0:使用Facelets入门
MVC 1.0是一個(gè)基于動(dòng)作的Model-View-Controller Web框架,它將成為將來的Java EE 8的一部分。它將與基于組件的JSF框架并存,并提供構(gòu)建面向HTML + javascript的應(yīng)用程序的替代方法完全控制網(wǎng)址。
這篇文章總結(jié)了使用Facelets代替默認(rèn)的JSP作為MVC框架的視圖技術(shù)需要做什么。
介紹
盡管MVC是一個(gè)全新的框架,但大多數(shù)示例中使用的默認(rèn)視圖技術(shù)(JSP)相當(dāng)古老,有時(shí)會(huì)很麻煩。 另一方面,哥哥JSF已經(jīng)建立在更現(xiàn)代,更靈活的Facelets上。
幸運(yùn)的是,MVC框架旨在支持現(xiàn)成的許多替代視圖技術(shù),包括Facelets。
入門
盡管Java EE 8尚未發(fā)布,但是可以在某些Java EE 7服務(wù)器中使用MVC框架,因?yàn)槊麨镺zark的MVC規(guī)范的參考實(shí)現(xiàn)已經(jīng)幾乎完成。
據(jù)報(bào)道,Ozark與應(yīng)用服務(wù)器Glassfish 4.1.1和Payara 4.1一起使用 。 我建議在其中一個(gè)應(yīng)用程序上運(yùn)行該應(yīng)用程序,否則您可能會(huì)四處走動(dòng)。
在發(fā)布Java EE 8之前,有必要使用Java EE 7 API之上的默認(rèn)范圍compile功能來添加對(duì)ozark maven工件的依賴關(guān)系:
pom.xml中的依賴項(xiàng)
<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>這就是設(shè)置項(xiàng)目所需要的。 現(xiàn)在,您可以將新的MVC框架與Java EE結(jié)合使用了!
控制者
MVC框架基于JAX-RS構(gòu)建,并與CDI和Bean驗(yàn)證集成。 因此,MVC Controller是一個(gè)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";} }控制器包含業(yè)務(wù)邏輯,并將模型粘貼到視圖上。
該視圖僅由控制器操作返回的字符串標(biāo)識(shí)。 要使用facelets,只需指定一個(gè)路徑即可,該路徑將被映射到Facelets servlet(按照慣例,我們使用xhtml后綴)。
該模型由注入的Models對(duì)象表示。
這里要注意幾件事。 首先,由于控制器是JAX-RS資源,因此還必須創(chuàng)建JAX-RS應(yīng)用程序配置-擴(kuò)展javax.ws.rs.core.Application的類。
其次,除非您將bean.xml包含在bean發(fā)現(xiàn)模式 all ,否則您需要使用范圍定義注釋(例如@RequestScoped標(biāo)記控制器,以打開CDI注入Models模型。
模型
該模型包含由String鍵標(biāo)識(shí)的對(duì)象,這些對(duì)象在視圖頁面中被轉(zhuǎn)換為變量。
有兩種方法可以定義模型。 首先是將javax.mvc.Models注入到控制器中,該控制器實(shí)際上是一個(gè)映射。 然后,控制器動(dòng)作將對(duì)象放入String鍵下的注入模型中。
JSP和Facelets還支持帶有@Named CDI限定符的任意CDI bean。 這樣,您只需將@Named注釋放在模型上,就可以將任何CDI bean變成模型。
視圖
現(xiàn)在到本文的核心–我們將使用facelets在模型中顯示數(shù)據(jù)。 實(shí)際上,使用Facelets作為視圖技術(shù)與使用JSP一樣容易。 它只需要正確設(shè)置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頁面都應(yīng)位于Web應(yīng)用程序內(nèi)的WEB-INF/views文件夾內(nèi),MVC框架在其中搜索視圖文件。
就是這樣! 現(xiàn)在,您可以開始使用facelet編寫頁面,并按path引用它們,它們以xhtml結(jié)尾。
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的基礎(chǔ)知識(shí),就可以很容易地開始使用MVC框架。 唯一的要求是在支持Ozark參考實(shí)現(xiàn)的應(yīng)用程序服務(wù)器之一上運(yùn)行應(yīng)用程序。 使用各種視圖技術(shù)作為默認(rèn)JSP的替代品也非常容易。
MVC框架包括對(duì)許多視圖技術(shù)的支持,并能夠在其之上插入其他技術(shù)。 配置Facelets僅需要在web.xml中配置Faces servlet –設(shè)置JSF時(shí)需要做的相同的事情。
這篇文章的靈感來自Bennet Schulz的另一篇文章。 如果您想了解有關(guān)新MVC框架的更多信息,請(qǐng)?jiān)L問他的博客。
翻譯自: https://www.javacodegeeks.com/2016/02/mvc-1-0-java-ee-8-getting-started-using-facelets.html
總結(jié)
以上是生活随笔為你收集整理的Java EE 8中的MVC 1.0:使用Facelets入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux目录挂载目录(linux 目录
- 下一篇: 安卓开发语言 kotlin(安卓开发 语