博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java MVC 1.0规范开始进入公开评审阶段
阅读量:6001 次
发布时间:2019-06-20

本文共 3987 字,大约阅读时间需要 13 分钟。

\

看新闻很累?看技术新闻更累?试试,每天上下班路上听新闻,有趣还有料!

\
\\

规范1.0(Model-View-Controller,MVC)开始进入公开评审阶段。这是在2017年4月份Oracle将其所有权移交给之后发布的第一个主要版本。在移交之后不久,来自Ingenit GmbH的高级开发工程师与一起领导该规范的制定。后来,JSR-371将许可协议改为Apache License 2.0。2017年10月,Grimstad表示,在MVC 1.0最终版发布之后,他想要将它移交给Eclipse基金会。

\\

自以来的新特性包括:

\\
  • 国际化——支持。\\t
  • 改进了数据绑定——可通过@MvcBinding注解和BindingResult类来定义数据绑定和数据验证规则。\

规范文档列出了MVC 1.0的目标:

\\
  • 基于现有的Java EE技术。\\t
  • 集成CDI()和Bean Validation()。\\t
  • 定义用于构建MVC应用程序的方法,但在第一版本中不需要支持所有特性。\\t
  • 尝试在JAX-RS之上构建其他层,并重用已有的匹配和绑定层。\\t
  • 提供内置的JSP和Facelet视图语言。\

Eclipse的项目完整地实现了JSR-371,支持、和。Ozark 1.0版本有望在2018年第二季度发布,与JSR-371的最终版接轨。

\\

入门

\\

下面的例子使用@Controller注解定义了一个MVC 1.0的控制器,该控制器会生成一个JSP页面。

\\
\@Path(\"hello\")\@Controller\public class HelloController {\\  @GET\  public String view() {\    return \"hello.jsp\";\    }\  }\
\\

这个方法可以返回各种各样MVC 1.0能够处理的类型,如:

\\
  • void——必须与@View一起使用(请看下面的例子)。\\t
  • String——返回视图的路径(请看下面的例子)。\\t
  • JAX-RS Response——返回HTTP响应消息,包括头部信息(请看下面的例子)。\

下面是一个典型的MVC 1.0控制器的例子(来自Grimstad GitHub里的hello-cli示例):

\\
\@Path(\"hello\")\@Controller\public class HelloController {\\  @Inject\  private BindingResult br;\\  @Inject\  private Messages messages;\\  @Inject\  private HelloBean helloBean;\\  @GET\  @View(\"form.jsp\")\  public void form() {\    }\\  @POST\  public Response formPost(@Valid @BeanParam HelloForm form) {\\    if (br.isFailed()) {\      messages.setErrors(\          br.getAllValidationErrors().stream()\          .collect(toList()));\\      return Response.status(BAD_REQUEST).entity(\"form.jsp\").build();\      }\\    helloBean.setFirstName(form.getFirstName());\    helloBean.setLastName(form.getLastName());\\    return Response.status(OK).entity(\"hello.jsp\").build();\    }\  }\
\\

示例中使用@Inject将BindingResult的实例(用于进行验证)和Model、Message和HelloBean自动注入到控制器中。被@View注解的form()方法指定了要渲染的页面form.jsp。formPost()方法里会做一些验证,并返回Response类型。HelloForm类定义了用户输入字符串的长度:

\\
\public class HelloForm {\  @MvcBinding\  @NotNull\  @Size(min = 1, max = 16)\  @FormParam(\"firstName\")\  private String firstName;\\  @MvcBinding\  @NotNull\  @Size(min = 2, max = 24)\  @FormParam(\"lastName\")\  private String lastName;\\  public String getFirstName() {\    return firstName;\    }\\  public void setFirstName(String firstName) {\    this.firstName = firstName;\    }\\  public String getLastName() {\    return lastName;\    }\\  public void setLastName(String lastName) {\    this.lastName = lastName;\    }\  }\
\\

规范文档对绑定和验证的过程进行了描述:

\\
可以通过给@FormParam和@QueryParam添加@MvcBinding注解来定义绑定规则。在进行MVC绑定时,出现验证错误并不会抛出ConstraintViolationException异常。相反,ConstraintViolation会被保存到具有Request作用域的BindingResult实例中,该实例可以被注入到控制器当中。这样,控制器就可以处理错误,而不是使用全局的异常处理机制来处理错误,比如使用ExceptionMapper。
\\

运行hello-cli示例,form.jsp经过渲染后就会呈现成下面的样子:

\\

\\

用户输入如下的信息,只要长度符合要求,就会渲染出hello.jsp页面:

\\

\\

\\

下面是出现验证错误的例子,输入框会被清空,并显示错误消息:

\\

\\

来自Cybercom Group的首席顾问Grimstad向InfoQ透露了MVC 1.0的最新进展情况。

\\

InfoQ:为什么Oracle不想再为MVC 1.0提供支持?

\\
Ivar Grimstad:这个问题应该让Oracle来回答。不过我认为,Oracle之所以将MVC 1.0从Java EE 8中剥离出来,是因为他们认为MVC与他们的云应用不相干,因为他们的大部分应用是headless的。
\\

InfoQ:你对将MVC 1.0集成到EE4J中做何期待?在这之前,需要做些什么吗?

\\
\

Grimstad:我们已经创建了一个提案项目Ozark,也就是MVC 1.0的一个参考实现。具体信息可参看:https://projects.eclipse.org/proposals/eclipse-ozark。

\\

我们希望在MVC 1.0最终版发布之后,尽快将其剩余部分集成到EE4J中。我们计划在今年的第二个季度完成这项工作。我们之所以要这么做,是因为我们希望MVC能够在发布最终版之后再将其移交给Eclipse基金会。

\
\\

InfoQ:Rest Client 1.0和JAX-RS 2.0已经被集成到MicroProfile 1.3中,那么MVC 1.0 API也适合被集成进MicroProfile吗?

\\
Grimstad:从技术方面来看,MVC 1.0应用程序可以运行在MicroProfile上。不过,MicroProfile的目标是为微服务优化企业版Java,所以我不确定MVC被集成到MicroProfile中是否是一个明智之举。它只是一项额外的补充技术,因为是运行在相同的技术栈上,所以在这方面没有什么问题。不过,MVC更适合被放在EE4J中。
\\

InfoQ:MVC 1.0接下来会有哪些动作?

\\
\

Grimstad:MVC 1.0的下一件大事就是它的公开评审,评审开放时间为2月6号至2月12号。在完成评审之后,我们会继续完成剩下的工作。目前计划在2018年第二季度发布最终版。

\\

可以查看如下信息来了解我们的进度,或者加入到我们的工作中: https://github.com/mvc-spec https://www.mvc-spec.org/ https://twitter.com/mvc_spec

\
\\

InfoQ:你的本职工作是什么?或者说,你日常都做些什么?

\\
\

Grimstad:我的本职工作是瑞士Cybercom Group的首席顾问。我们每天都会写代码,并通过参与开源项目和参加技术大会保持技术上的与时俱进。我是JCP执行委员会成员,也是EE4J的项目管理委员会成员。

\
\\

其他资源

\\
  • by Ivar Grimstad (May 22, 2017)\\t
  • mvc-samples GitHub by Ivar Grimstad\

查看英文原文

转载地址:http://dldmx.baihongyu.com/

你可能感兴趣的文章
JavaSe: 不要小看了 Serializable
查看>>
Node.js 抓取电影天堂新上电影节目单及ftp链接
查看>>
linux popen函数
查看>>
[游戏开发]关于手游客户端网络带宽压力的一点思考
查看>>
如何成为强大的程序员?
查看>>
How To: 用 SharePoint 计算列做出你自己的KPI列表
查看>>
Visual Studio下使用jQuery的10个技巧
查看>>
web服务器工作原理及http协议通信
查看>>
数据库查询某个字段值的位数 语法
查看>>
java file 文件操作 operate file of java
查看>>
WPF获取路径解读
查看>>
【实战HTML5与CSS3】用HTML5和CSS3制作页面(上)
查看>>
Android : 如何在WebView显示的页面中查找内容
查看>>
数字信号处理 基础知识 对比回顾
查看>>
分享个人Vim型材
查看>>
配置算法(第4版)的Java编译环境
查看>>
本学习笔记TCP/IP传输协议
查看>>
荣耀10GT升级EMUI 9.0体验分享:这可能是最好用的手机操作系统
查看>>
ZStack基于华芯通打造ARM国产云平台 助力云上贵州多项应用
查看>>
200本“保护日记”记录黄山迎客松生长变化
查看>>