Server-side Frontends mit MVC 1.0
Gregor Tudan - @cofinpro_greg
Sind Frontends vom Server nicht tot?
Aber wir haben doch JSF und JSP!
Dann nimm doch Play, Spring MVC oder Struts!
Ziele von MVC
- Aufsetzen auf existierende Java-EE Technologien
- Basisfunktionen zum Bauen von MVC-Applications
- JAX-RS als Matching- & Binding-Layer
- Support für JSP und Facelets als View-Languages
Die kurze Version der Geschichte
2014
- JSR 371 wird vorgestellt
- Referenzimplementierung "Ozark"
- Community Ballot: MVC auf Platz 5 der gewünschten Features für JavaEE8
2016
- JavaOne: Community-Umfrage zu JavaEE 8
- MVC: Platz 21
- wird aus JavaEE 8 gestrichen
Januar 2017
Die Community soll's richten
Java EE ohne MVC: Oracle überträgt JSR 371 an die Community
2017
- Oracle übergibt JavaEE an Eclipse
- aus JavaEE wird EE4J
- MVC-Spec und Ozark wechseln zur Eclipse Foundation
2018
- JSR 371 wird verabschiedet
- Ozark soll umbenannt werden
Schluss jetzt! Zeig mir Code!
Controller sind REST-Endpunkte
@Path("/")
@javax.mvc.Controller
public class Controller {
@GET
public String view(String name) {
return "hello.html";
}
}
Model Binding
@Path("/")
@javax.mvc.Controller
public class Controller {
@Inject
private Models model;
@GET
public String view(@QueryParam("name") String name) {
model.put("name", name);
return "hello.html";
}
}
Templates
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello ${name}</h1>
</body>
</html>
Template Engines
- Java-Server-Pages
- Facelets (hello JSF-Developers!)
- Thymeleaf
- Handlebars
- AsciiDoc
- ...
weitere Features
- Validation
- Internationalization
- Exception Mappers & Error Bindings
- Cross-site Request Forgery Protection
- XSS-Escaping
- Redirect-Handling
- Events
- URL-Resolving
Wo kann ich das benutzen?
- JAX-RS Extension
- Wildfly-Extension
- Thorntail/WF-Swarm-Fraction