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