spring mvc bemutat ása

23
SPRING MVC bemutatása Szmetankó Gábor Greencode Kft. [email protected]

Upload: brad

Post on 23-Feb-2016

57 views

Category:

Documents


1 download

DESCRIPTION

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(); - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SPRING MVC  bemutat ása

SPRING MVC bemutatása

Szmetankó GáborGreencode Kft.

[email protected]

Page 2: SPRING MVC  bemutat ása

Egy kis ismétlés - Dependency Injection

Car

Engine

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);

Page 3: SPRING MVC  bemutat ása

Egy kis ismétlés - Dependency Injection

DI Framework

Car

Engine

Wheel

Window

MyService service = new MyService(Car car);

Page 4: SPRING MVC  bemutat ása

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

Page 5: SPRING MVC  bemutat ása

Egy kis ismétlés – Spring Framework

Page 6: SPRING MVC  bemutat ása

Egy kis ismétlés – legfontosabb Spring annotációk

Singleton komponensek létrehozása:@Component@Component(“myComponent”)@Service@Repository

Dependency Injection:@Autowired@Qualifier(“myComponent”)@Required

http://refcardz.dzone.com/refcardz/spring-annotations

Page 7: SPRING MVC  bemutat ása

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

Page 8: SPRING MVC  bemutat ása

Hagyományos Servlet alapú alkalmazáspublic class HelloWorldServlet extends HttpServlet { private String message;

public void init() throws ServletException { message = "Hello World"; }

public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { } }

Page 9: SPRING MVC  bemutat ása

Model-View-Controller

Modelaz alkalmazás állapotát tárolja

értesíti a view-t az állapot megváltozásáról

Controlleraz alkalmazás logikáért

felelősa felhaszálói interakciókat

model változtatásokra képezi le

kiválasztja a megfelelő view-t

Viewa model vizuális

megjelenítéséért felelősfelhasználói interakciók

továbbítása a controllerhez

Page 10: SPRING MVC  bemutat ása

Front Controller

Front Controller

Controller 1

Controller 2

Controller 3

View 1

View 2

View 3

Kontroller kiválasztásaAutorizáció

AutentikációLogging

Request Request

Model

Egy konkrét üzleti funkció Megjelenítés

Page 11: SPRING MVC  bemutat ása

Spring MVC architektúra

Page 12: SPRING MVC  bemutat ása

Spring MVC architektúra

Page 13: SPRING MVC  bemutat ása

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)

Page 14: SPRING MVC  bemutat ása

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...

Page 15: SPRING MVC  bemutat ása

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

@Controller annotációval Egy-egy metódus a különféle kérések

lekezelésére

Page 16: SPRING MVC  bemutat ása

Controller példa

@Controllerpublic 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)

Page 17: SPRING MVC  bemutat ása

Handler metódus leggyakoribb paraméterei

@PathVariable@RequestMapping(value="/owners/{ownerId}") public String findOwner(@PathVariable String ownerId, Model model) {}

HttpServletRequest, HttpServletResponse, HttpSession

@RequestParam@RequestHeader@RequestBodyModel, ModelMap@ModelAttributeBindingResult@CookieValue@Valid

Page 18: SPRING MVC  bemutat ása

Handler metódus leggyakoribb visszatérési értékei

ModelModelAndViewMapStringvoid@ResponseBody

Page 19: SPRING MVC  bemutat ása

ModelAndView

Controllerek visszaté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

return new ModelAndView(”myView”, ”myModelKey”, ”myModelValue”);

Page 20: SPRING MVC  bemutat ása

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

Page 21: SPRING MVC  bemutat ása

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

Page 22: SPRING MVC  bemutat ása

Egyéb hasznos dolgok

Lokalizáció Többnyelvűség Témák AJAX, REST Fájl feltöltés Exception kezelés Caching

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/index.html

Page 23: SPRING MVC  bemutat ása

Köszönöm a figyelmet!

Forráskód: github.com/szmeti/spring-mvc-demo