Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
MVC – Back to the Server
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Florian Hirsch
November 17, 2016
Programming
50
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MVC – Back to the Server
DOAG Nürnberg – 2016-11-17
Florian Hirsch
November 17, 2016
More Decks by Florian Hirsch
See All by Florian Hirsch
MVC – Back to the Server
lefloh
0
44
MVC – Back to the Server
lefloh
0
38
JavaScript Development Tools
lefloh
0
68
MVC – Nachwuchs im Hause Java EE
lefloh
0
29
Real World Web Security
lefloh
0
63
MVC – Back to the Server
lefloh
0
44
Bullseye! – Let's play Dart
lefloh
0
63
Bullseye! – Ein Blick auf Dart
lefloh
0
46
Zur Hölle mit Responsive!
lefloh
0
36
Other Decks in Programming
See All in Programming
AmebaブログはKMPから卒業します
kmars0605
0
190
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
610
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
300
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
200
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
880
すこし踏み込む CancellationToken
htkym
2
1.7k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
330
The World Runs on Bad Software
bkeepers
PRO
72
12k
Building Applications with DynamoDB
mza
96
7.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Faster Mobile Websites
deanohume
310
32k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
The browser strikes back
jonoalderson
0
1.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Transcript
None
The reports of my death are greatly exaggerated — MVC
Java EE 8 Update – Linda DeMichiel – JavaOne 2016
None
Results from the Java EE 8 Community Survey
David Delabassee, Java EE Evangelist - Oracle, Devoxx Belgium 2016
Single Page Apps FTW!
None
Progressive Enhancement
SEO?
None
None
Performance?
53% of mobile site visits are abandoned if pages take
longer than 3 seconds to load. Need for mobile speed (DoubleClick)
time to first tweet matters! — twitter, 2012
Isomorphic JavaScript Ember.js React React MVC
The future of JSR-371?
Option 1 … to be continued
Option 2 MVC 2014 – ✝ 2016
Option 3 MVC © ORACLE THE COMMUNITY
Hands on! Thanks to Libor Kramoliš
A controller @Controller @Path("todo") public class TodoController { @Inject Models
models; @Inject BindingResult br; @Inject TodoService todoService; @POST public String post(@Valid @BeanParam Todo todo) { if (br.isFailed()) { models.put("errors", br.getAllMessages()); return "todo-form.mustache"; } todoService.add(todo); return "redirect:todos"; }
Redirects @RedirectScoped public class Messages implements Serializable { ... }
public String get() { return "redirect:/todos/" + id; }
Events @ApplicationScoped public class EventObserver { private static final Logger
LOG = LoggerFactory.getLogger(EventObserver.class); public void beforeCtrl(@Observes BeforeControllerEvent e) { LOG.info("Resource {} will be handled by {}#{}", e.getUriInfo().getRequestUri(), e.getResourceInfo().getResourceClass().getName(), e.getResourceInfo().getResourceMethod().getName()); } }
CSRF Protection @POST @CsrfValid public String post(@BeanParam Todo todo) {
... } <input type="hidden" name="{{mvc.csrf.name}}" value="{{mvc.csrf.token}}" />
i18n / l10n public interface LocaleResolver { Locale resolveLocale(LocaleResolverContext context);
}
i18n / l10n @FormParam("dob") @ConvertWith(DateConverter.class) private LocaleDate dob;
MvcUriBuilder @Controller public class TodoController { @GET @Path("todo/{id}") @UriRef("todo") public
String getOne(@PathParam("id") long id) { ... } } {{ mvc.uri('todo', [4711] }} {{ mvc.uri('todo', {id: 4711} }} {{ mvc.uri('TodoController#getOne', {id: 4711} }}
Thanks
Fallback
Current Java EE Options?
Servlets & JSPs?
JSF?
Portlets?
ROCA Resource-oriented client architecture roca-style.org
JAX-RS?