spring mvc bemutat ása
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 PresentationTRANSCRIPT
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);
Egy kis ismétlés - Dependency Injection
DI Framework
Car
Engine
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á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() { } }
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
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
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
@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)
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
Handler metódus leggyakoribb visszatérési értékei
ModelModelAndViewMapStringvoid@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