mvc 4.0.0.0
更新: 自撰写本文之日起,转让已经完成。
从那时起,Christian Kaltepoth被邀请与Ivar Grimstad共同领导该规范。 其他重要的新闻是, 规范,JavaDoc,API,RI和TCK将使用Apache License 2.0进行许可,并且时间表已更新。 我们的目标是在2017年第四季度之前准备好公众审查,在2018年第一季度之前准备最终草案,并在2018年第二季度最终发布。
按照JSR 371的规定,MVC 1.0最初计划成为即将发布的Java EE 8版本的一部分。 但是,在JavaOne 2016上提出的修订的Java EE计划中,MVC 1.0被排除在发行版之外。
社区做出了React,在Oracle和Java Community Process(JCP)的几个社区成员之间进行讨论之后,该规范真正从Oracle转移到了您的规范中,可以作为独立的规范继续进行。 [在撰写本文时,仍有一些法律文件需要草拟并签名才能完成转让。]
MVC 1.0 API建立在JAX-RS之上,并与现有的EE技术(例如CDI和Bean验证)集成。 支持现有的视图引擎(JSP和Facelets),以及提供自己的视图引擎的灵活性。
一个简单的hello world示例如下所示:
@Path("hello")
public class HelloController {
@Inject
private User user;
@GET
@Controller
public String hello(@QueryParam("name") String name) {
user.setName(name);
return "hello.jsp";
}
}
验证方式
MVC 1.0中的异常处理基于JAX-RS提供的基础支持。 除此之外,MVC 1.0还提供了额外的支持来处理绑定错误和验证错误。
@Controller
@Path("form")
public class FormController {
@Inject private BindingResult br;
@POST
public Response formPost(@Valid @BeanParam FormDataBean f) {
if (br.isFailed()) {
return Response.status(BAD_REQUEST)
.entity(“error.jsp”).build();
}
return Response.status(OK).entity(“data.jsp”).build();
}
}
安全
MVC 1.0指定了针对跨站点请求伪造(CSRF)的保护。 这可以通过在处理时验证的表单中添加以下隐藏字段来完成。
...
<input type="hidden" name="${mvc.csrf.name}" value="${mvc.csrf.token}"/>
...
通过使用@CsrfValid
注释控制器来启用CSRF保护。
...
@POST
@CsrfValid
public void postForm(@FormParam("greeting") String greeting) {
// Process greeting
}
...
您也可以将应用程序配置为进行隐式验证,因此在所有后期请求中都需要CSRF令牌,而没有@CsrfValid
注释。
MVC 1.0规范指定了必须由实现触发的五个不同事件。 该机制基于CDI事件,可以通过使用标准CDI进行观察和采取措施。
五个必需的事件是:
- 。 BeforeControllerEvent
- 。 AfterControllerEvent
- 。 ControllerRedirectEvent
- 。 BeforeProcessViewEvent
- 。 AfterProcessViewEvent
有时需要在返回重定向指令的请求与该重定向触发的新请求之间共享数据。 为此,MVC 1.0定义了一个新的CDI范围,该范围由注释@RedirectScoped
。 在实现POST-redirect-GET模式时,这特别有用。
MVC 1.0将术语_request locale_定义为在请求生命周期内用于任何与语言环境相关的操作的语言环境。 可从MvcContext
获得请求区域设置。
@Controller
@Path(“hello”)
public class HelloController {
@Inject
private MvcContext mvc;
@GET
public String get() {
Locale locale = mvc.getLocale();
}
}
当前状态
在Java EE 7环境中已经可以使用该技术,并且随着Java EE 8和9的发展,MVC 1.0将保持一致以利用平台提供的功能。
当前,该规范由两个应用程序服务器(GlassFish和Payara)支持。 您将需要在项目的pom.xml中添加以下两个依赖项。
<dependency>
<groupId>javax.mvc</groupId>
<artifactId>javax.mvc-api</artifactId>
<version>1.0-edr2</version>
</dependency>
<dependency>
<groupId>org.glassfish.ozark</groupId>
<artifactId>ozark</artifactId>
<version>1.0.0-m03-SNAPSHOT</version>
<scope>runtime</scope>
</dependency>
资源资源
mvc 4.0.0.0