Transcript Spring MVC

SPRING MVC
bemutatása
Szmetankó Gábor
Greencode Kft.
[email protected]
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
Egy kis ismétlés – Spring Framework
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
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 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() {
}
}
Model-View-Controller
Model
az alkalmazás állapotát tárolja
értesíti a view-t az állapot megváltozásáról
View
a model vizuális
megjelenítéséért felelős
felhasználói interakciók
továbbítása a controllerhez
Controller
az alkalmazás logikáért felelős
a felhaszálói interakciókat model
változtatásokra képezi le
kiválasztja a megfelelő view-t
Front Controller
Controller 1
View 1
Model
Request
Front Controller
Request
Controller 2
View 2
Controller 3
View 3
Kontroller kiválasztása
Autorizáció
Autentikáció
Logging
Egy konkrét üzleti funkció
Megjelenítés
Spring MVC architektúra
Spring MVC architektúra
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 @Controller
annotá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
 @PathVariable
@RequestMapping(value="/owners/{ownerId}")
public String findOwner(@PathVariable String ownerId, Model model) {}
 HttpServletRequest, HttpServletResponse, HttpSession
 @RequestParam
 @RequestHeader
 @RequestBody
 Model, ModelMap
 @ModelAttribute
 BindingResult
 @CookieValue
 @Valid
Handler metódus leggyakoribb visszatérési értékei
 Model
 ModelAndView
 Map
 String
 void
 @ResponseBody
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”);
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

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
Köszönöm a figyelmet!
Forráskód: github.com/szmeti/spring-mvc-demo