spring mvc basics

14
Spring-MVC Basics Spring-MVC Basics Bozhidar Bozhanov Bulgarian Association of Software Develope www.devbg.org http://techblog.bozho.net

Upload: bozhidar-bozhanov

Post on 08-May-2015

9.216 views

Category:

Documents


1 download

DESCRIPTION

A short presentation about the basics of spring

TRANSCRIPT

Page 1: Spring MVC Basics

Spring-MVC BasicsSpring-MVC Basics

Bozhidar Bozhanov

Bulgarian Association of Software Developers

www.devbg.org

http://techblog.bozho.net

Page 2: Spring MVC Basics

MVCMVC

Source: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html

Page 3: Spring MVC Basics

ModelModel

• Map<String, Object>

• Populated by controllers

• Contains all data needed by the „view“

• Not containing business logic

model.addAttribute("orders", model.addAttribute("orders", orderService.getDailyOrders(user));orderService.getDailyOrders(user));model.addAttribute("period", Period.DAILY); model.addAttribute("period", Period.DAILY);

Page 4: Spring MVC Basics

ViewView

• HTML, XML, RSS, PDF, etc...

• JSP, Freemarker, Velocity, etc

• Direct access to the model

<span><span>${latestOrder.date}${latestOrder.date}<span><span><input type="text" <input type="text" value="value="${order.name}${order.name}" />" />

Page 5: Spring MVC Basics

ControllerController

• Gathers input parameters and coordinates the back-end process

• Front controller vs controller

• @Controller

• RESTful URLs, request-process-forward, @RequestMapping

• Method=Action

• Unit-test friendly

• Pluggable mechanism for argument resolution

Page 6: Spring MVC Basics

ControllerController

• Gathers input parameters and coordinates the back-end process

• Front controller vs controller

• @Controller

• RESTful URLs, request-process-forward, @RequestMapping

• Method=Action

• Unit-test friendly

• Pluggable mechanism for argument resolution

Page 7: Spring MVC Basics

ControllerController

@Controller @RequestMapping("/users")@Controller @RequestMapping("/users")publicpublic classclass UserController { UserController { @Inject@Inject privateprivate UserService UserService serviceservice;; @RequestMapping("/login")@RequestMapping("/login") publicpublic String login(@RequestParam String username, String login(@RequestParam String username, @RequestParam String pass){@RequestParam String pass){ User u = service.login(username, pass);User u = service.login(username, pass); return "welcomePage";return "welcomePage"; }} @RequestMapping("/view/{username}")@RequestMapping("/view/{username}") publicpublic String view(@PathVariable String username){ String view(@PathVariable String username){ User u = service.find(username);User u = service.find(username); ...... return "userPage";return "userPage"; }}}}

Page 8: Spring MVC Basics

Controller argumentsController arguments

• @RequestParam, @PathVariable

• POJO – arbitrary java object that gets populated with request values

• @Valid – to enforce validation of the POJO

• BindingResult – to access the results of binding and validation

• Model, ModelMap, Map<String, ?> - acces to the model object

• Raw HttpServletRequest, response, session

• Locale, @RequestHeader, @RequestBody,....

Page 9: Spring MVC Basics

Controllers – return typesControllers – return types

• String, View, ModelAndView – use a “view“

• @ResponseBody – any object

@Controller @RequestMapping("/users")@Controller @RequestMapping("/users")publicpublic classclass UserController { UserController { @Inject@Inject privateprivate UserService UserService serviceservice;; @RequestMapping(value="/ajaxView" @RequestMapping(value="/ajaxView" consumes="application/json")consumes="application/json") @ResponseBody@ResponseBody publicpublic User view(@RequestParam String username){ User view(@RequestParam String username){ User u = service.find(username);User u = service.find(username); return user;return user; }}}}

Page 10: Spring MVC Basics

More...More...

• Interceptors

• Exception handling

• Binding and validation customization

• Static resource handling

• Caching configuration

• Locale and theme resolution

• Multipart handling

• Flash scope, conversation scope (web flow)

Page 11: Spring MVC Basics

The lifecycle once againThe lifecycle once again

Source: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html

Page 12: Spring MVC Basics

DemoDemo(spring mvc showcase)

Page 13: Spring MVC Basics

ResourcesResources

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.htmlhttp://static.springsource.org/docs/petclinic.htmlhttps://github.com/SpringSource/spring-mvc-showcase

Page 14: Spring MVC Basics

QuestionsQuestions??