240 likes | 415 Views
SPRING MVC bemutat ása. Szmetankó Gábor Greencode Kft. gabor.szmetanko @greencode.hu. Egy kis ismétlés - Dependency Injection. Engine. Car. Wheel. Window. Window window1 = n ew Window() ; Window window2 = n ew Window() ; Wheel wheel1 = new Wheel(); Wheel wheel2 = new Wheel();
E N D
SPRING MVC bemutatása Szmetankó Gábor Greencode Kft. gabor.szmetanko@greencode.hu
Egy kis ismétlés - Dependency Injection Engine Car Wheel Window Window window1 = new Window(); Window window2 = new Window(); Wheel wheel1 = new Wheel(); Wheel wheel2 = new Wheel(); Wheel wheel3 = new Wheel(); Wheel wheel4 = new Wheel(); Engine engine= new Engine(); Car car= new Car(window1, window2, wheel1, wheel2, wheel3, wheel4, engine);
Egy kis ismétlés - Dependency Injection DI Framework Engine Car Wheel Window MyService service = new MyService(Car car);
Egy kis ismétlés – Spring Framework A Spring Framework egy Java platform Java alapú alkalmazások fejlesztésére A Spring Framework adja az infrastruktúrát, így a fejlesztőknek csak a tényleges üzleti logikára kell koncentrálniuk
Egykis ismétlés – legfontosabb Spring annotációk http://refcardz.dzone.com/refcardz/spring-annotations • Singleton komponensek létrehozása: • @Component • @Component(“myComponent”) • @Service • @Repository • Dependency Injection: • @Autowired • @Qualifier(“myComponent”) • @Required
Spring MVC A Spring Framework model-view-controller modulja Web alkalmazások fejlesztésére Könnyen konfigurálható (convention over configuration) Robosztus Rugalmas Könnyű tesztelhetőség JSP tag library Egyszerű validáció, lokalizáció, i18n
Hagyományos Servlet alapú alkalmazás public class HelloWorldServletextends HttpServlet { private String message; public void init() throws ServletException { message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponseresponse) throws Exception { response.setContentType("text/html"); PrintWriterout = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { } }
Front Controller Controller 1 View 1 Model Front Controller Request Request Controller 2 View 2 Controller 3 View 3
DispatcherServlet A Front Controller szerepét tölti be Bármely kérés a klienstől először a DispatcherServlethez érkezik Tartozik hozzá egy Spring Context Framework specifikus feladatokat lát el Hagyományos Servletként kell regisztrálni (web.xml)
HandlerMapping • Feladata a kliens URL-ből meghatározni a kontrollert • Interfész: tetszőleges implementáció konfigurálható • Számos implementációt nyújt a Spring: • SimpleUrlHandlerMapping: hagyományos Map • ControllerClassNameHandlerMapping • BeanNameHandlerMapping • és még sok más...
Controller • Üzleti logika egy részét implementálják • DispatcherServlet hívja meg • Feladata a model módosítása és a megfelelő view kiválasztása • Hagyományos Java osztályok@Controllerannotációval • Egy-egy metódus a különféle kérések lekezelésére
Controller példa @Controller public class HelloWorldController { @RequestMapping("/helloWorld") public String helloWorld(Model model) { model.addAttribute("message", "Hello World!"); return "helloWorld"; } } • @RequestMapping • Megadja, hogy milyen URL-re érkező kéréseket szolgál ki a metódus • Megadható a HTTP metódus is (pl. GET, POST) • Az osztályon is elhelyezhető (globális hatás)
Handler metódus leggyakoribb paraméterei @RequestMapping(value="/owners/{ownerId}") public String findOwner(@PathVariable String ownerId, Model model) {} • HttpServletRequest,HttpServletResponse, HttpSession • @RequestParam • @RequestHeader • @RequestBody • Model, ModelMap • @ModelAttribute • BindingResult • @CookieValue • @Valid • @PathVariable
Handler metódus leggyakoribb visszatérési értékei • Model • ModelAndView • Map • String • void • @ResponseBody
ModelAndView return new ModelAndView(”myView”, ”myModelKey”, ”myModelValue”); • Controllerekvisszatérési értéke • Egyszerű konténer osztály, amely a model és a view adatait tartalmazza • Model: a controller tölti fel adatokkal • View • Logikai név • Implicit vagy a controller adja meg
ViewResolver • A logikai view névhez rendel tényleges view-t • Ugyancsak egy interfész • Tetszőleges implementáció konfigurálható • Számos gyári implementáció közül választhatunk: • InternalResourceViewResolver • BeanNameViewResolver • VelocityViewResolver • XmlViewResolver
View • A tényleges vizuális megjelenítésért felelős • Számos technológiát támogat: • JSP & JSTL (Spring tag library) • Tiles • Velocity • FreeMarker • PDF, Excel, JSON, RSS, XML
Egyéb hasznos dolgok http://docs.spring.io/spring/docs/current/spring-framework-reference/html/index.html Lokalizáció Többnyelvűség Témák AJAX, REST Fájl feltöltés Exception kezelés Caching
Köszönöm a figyelmet! Forráskód: github.com/szmeti/spring-mvc-demo