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入门相关推荐

  1. Java EE 8中的MVC 1.0:使用Facelets入门

    MVC 1.0是一个基于动作的Model-View-Controller Web框架,它将成为将来的Java EE 8的一部分.它将与基于组件的JSF框架并存,并提供构建面向HTML + javasc ...

  2. 《从零开始学习ASP.NET MVC 1.0》-开天辟地入门篇

    <从零开始学习ASP.NET MVC 1.0> 文章导航 (一) 开天辟地入门篇 (二) 识别URL的Routing组件 (三) Controller/Action 深入解析与应用实例 ( ...

  3. Asp.net MVC 1.0 RTM中实现文件上传

    Asp.net MVC 1.0 RTM中实现文件上传 在我们开始之前,你需要知道一个form以post方式上传文件的方式,你将要增加一个特别的enctype attribute到form标签上,为了这 ...

  4. MVC 1.0的可能方法

    如< Java EE 8积极路线图>中所述,Java EE 8计划中未包含MVC 1.0. 我的看法以及在JavaOne期间与我交谈过的几个人的指示,这样做的可能结果是: MVC已完全删除 ...

  5. Java MVC 1.0规范开始进入公开评审阶段

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ JSR-371规范1.0(Model-View-Controller,MVC)开始进入公开评 ...

  6. 我要学ASP.NET MVC 3.0(一): MVC 3.0 的新特性

    摘要 MVC经过其1.0和2.0版本的发展,现在已经到了3.0的领军时代,随着技术的不断改进,MVC也越来越成熟.使开发也变得简洁人性化艺术化. 园子里有很多大鸟都对MVC了如指掌,面对问题犹同孙悟空 ...

  7. MVC 4.0 Razor模板引擎 @Html.RenderPartial 与 @Html.RenderAction 区别

    近来在学习MVC 4.0,设置布局全局网页的页脚,使用了Razor语法 @{Html.RenderPartial("Footer", Model.FooterData);} 但是并 ...

  8. 一步一步学习ASP.NET MVC 1.0创建NerdDinner 范例程序 - 强烈推荐!!!

    一步一步学习ASP.NET MVC 1.0创建NerdDinner 范例程序 本文根据<Professional ASP.NET MVC 1.0>中微软牛人Scott Guthrie 提供 ...

  9. 从零开始学习 ASP.NET MVC 1.0 (三) Controller/Action 深入解析与应用实例 【转】

    一.摘要 一个Url请求经过了Routing处理后会调用Controller的Action方法. 中间的过程是怎样的? Action方法中返回ActionResult对象后,如何到达View的? 本文 ...

最新文章

  1. Linux内核之于红黑树and AVL树
  2. Python分布式爬虫-elasticsearch搭建搜索引擎
  3. spring 两次进入拦截器_Spring Boot+Redis 扛住,瞬间千次重复提交(实例)
  4. ES6 学习笔记(基础)
  5. 全局变量_Python函数中的全局变量与局部变量
  6. 前端开发 “性能”有多重要
  7. cmd上如何运行php文件,cmd - php文件在命令行可以顺利运行,在浏览器上无法正常运行...
  8. Collection 属性ArrayList.add方法内部调用过程
  9. vmware+player+12+linux,Vmware player 12
  10. 第十届蓝桥杯省赛Scratch编程真题解析
  11. 百事可乐AI人工智能生产过程破光
  12. 航空工业直升机与泰雷兹签订战略合作备忘录
  13. paramiko使用
  14. Pycharm 小技巧-- filewacher+black自动格式化
  15. 洗地机和扫地机器人哪个实用?值得入手的洗地机十大品牌推荐
  16. 利用html加css以及JavaScript写一个学生后台管理系统简单平台
  17. Python Unet网络结构pytorch简单实现+torchsummary可视化(可以直接运行)
  18. 汽车噪音检测要求有那些
  19. 集美大学单片机c语言,2018年集美大学单片机原理及其应用考研大纲
  20. 我的漫漫程序人生路(中)

热门文章

  1. YBTOJ洛谷P3231:消毒(二分图匹配)
  2. priority_queue+贪心:运输(题解)
  3. P3698-[CQOI2017]小Q的棋盘【树形dp】
  4. 【jzoj】2018.1.31 NOIP普及组——D组模拟赛
  5. ssl1202-滑雪【记忆化搜索法】
  6. 【做题记录】DP 杂题
  7. 【二分】【暴力】蛋糕(gmoj 3918)
  8. 12、oracle数据库下的存储过程和函数
  9. 15、sql编程基本语法介绍
  10. 汇编语言(二十)之分类统计字符个数