MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model...
-
Upload
hoanghuong -
Category
Documents
-
view
216 -
download
0
Transcript of MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model...
![Page 1: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/1.jpg)
MVC on the WEB
![Page 2: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/2.jpg)
~$> whoami
Ioan Marius Curelariu
SDE at Website Analytics
Amazon Development Center Romania
![Page 3: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/3.jpg)
![Page 4: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/4.jpg)
The Server Side Story
![Page 5: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/5.jpg)
The Server Side Story
Elastic Beanstalk
![Page 6: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/6.jpg)
The Spring Framework
• First described in 2002, in “Expert One-on-One J2EE Design and Development” book, by Rod Johnson.
Spring Container
Spring Container
Spring Container
![Page 7: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/7.jpg)
Spring Modules
Core
AOP
Data Access Objects
Object Relational Mapping
Context
Web
MVC
![Page 8: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/8.jpg)
Model View Controller
Controller
View
Model User
Uses
Manipulates
Updates Sees
![Page 9: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/9.jpg)
Spring MVC Architecture
Controller
Handler Mapping
View Resolver
View
Dispatcher Servlet
1. Request
Model and View
Application Logic
Application Data
2
3
4
5 6
![Page 10: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/10.jpg)
TodoMVC Data Model
Todo Todos
![Page 11: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/11.jpg)
TodoSpringMVC Data Model
Todo Todos
User Users
![Page 12: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/12.jpg)
TodoSpringMVC Data Model
TodosManager Todos
User UsersManager
![Page 13: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/13.jpg)
Spring MVC Architecture
Controller
Handler Mapping
View Resolver
View
Dispatcher Servlet
1. Request
Model and View
Application Logic
Application Data
2
3
4
5 6
![Page 14: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/14.jpg)
DispatcherServlet
In /WEB-INF/web.xml <servlet> <servlet-name>appServlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name> appServlet </servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
![Page 15: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/15.jpg)
ContextLoaderListener
In /WEB-INF/web.xml <context-param> <param-name> contextConfigLocation </param-name> <param-value> /WEB-INF/spring/root-context.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
![Page 16: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/16.jpg)
Essential Configuration Declare the controllers and other components (appServlet-context.xml)
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>classpath:todospringmvc.properties</value> </property> </bean> <context:component-scan base-package=“com.amazon.todo.web”/>
![Page 17: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/17.jpg)
Essential Configuration Resolve JSP Views
<bean name=“viewResolver” class=“org.springframework.web.servlet.view.InternalResourceView Resolver”> <property name=“prefix” value=“/WEB-INF/views”/> <property name=“suffix” value=“.jsp”/> </bean>
![Page 18: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/18.jpg)
Essential Configuration Handle annotation-driven request mappings <mvc:annotation-driven/>
![Page 19: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/19.jpg)
Spring MVC Architecture
Controller
Handler Mapping
View Resolver
View
Dispatcher Servlet
1. Request
Model and View
Application Logic
Application Data
2
3
4
5 6
![Page 20: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/20.jpg)
SpringMVC Controller
• Configured using java annotations
– @Controller
– @RequestMapping
• Simple JavaBeans
• Multiple handler mappings
![Page 21: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/21.jpg)
@Controller public class HomeController { … @ModelAttribute(value = "userName") public String getUserName(Principal user) { return user.getName(); } @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Locale locale, Model model) { DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); String formattedDate = dateFormat.format(new Date()); model.addAttribute("serverTime", formattedDate ); return "home"; } }
![Page 22: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/22.jpg)
@Controller @RequestMapping(“/register”)
public class RegistrationController {
@RequestMapping(method = RequestMethod.POST)
public String registerUser(TodoUser todoUser) {
return “redirect:/”;
}
@RequestMapping(method = RequestMethod.POST)
public String register(TodoUser todoUser) {
return “register”;
}
@RequestMapping(value = “/validateUsername")
public @ResponseBody String suggestUsername(@RequestParam String username) {
return username;
}
}
![Page 23: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/23.jpg)
@Controller @RequestMapping(value = "/todos", produces = "application/json") public class TodosController { … @RequestMapping( value = "/{todoItemId}", method = RequestMethod.PUT, consumes = "application/json" ) @ResponseBody public TodoItem alterTodo(@PathVariable String todoItemId, @RequestBody TodoItem todoItem) { … } }
![Page 24: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/24.jpg)
Spring MVC Parameters & Return types • Parameters can be
– HttpServletRequest / HttpServletResponse / HttpSession
– WebRequest
– InputStream / OutputStream
– @RequestParam / @PathVariable / @RequestBody / @CookieValue
• Return types can be
– ModelAndView / Model / Map
– View Object
– String (logical view name)
– Void
![Page 25: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/25.jpg)
SpringMVC Views
• Integrates with many existing technologies
• Out of the box support for JSP & JSTL
![Page 26: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/26.jpg)
Spring MVC Views
JSON
![Page 27: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/27.jpg)
Negotiating Content
Request
ContentNegociatingViewResolver
![Page 28: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/28.jpg)
Other Spring MVC Features
• Exception Handling
• Localization Support
• Theme Handling
• Multipart (file upload) support
• Asynchronous Request Processing
• Testability
![Page 29: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/29.jpg)
What we have done …
![Page 30: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/30.jpg)
Hosting ...
![Page 31: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/31.jpg)
First Beanstalk Application
![Page 32: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/32.jpg)
Basic Application Informations
![Page 33: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/33.jpg)
Application Environment Details
![Page 34: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/34.jpg)
Application Configuration Details
![Page 35: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/35.jpg)
Amazon RDS Instance Configuration
![Page 36: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/36.jpg)
Configuration Summary
![Page 37: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/37.jpg)
Application Console
![Page 38: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/38.jpg)
Deploying a New Version
![Page 39: MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model View Controller Controller View User Model ... org.springframework.web.servlet.DispatcherServlet](https://reader031.fdocuments.us/reader031/viewer/2022021802/5b8579b87f8b9ae5498e7337/html5/thumbnails/39.jpg)
Thank you!...
http://amazonacademytodos.elasticbeanstalk.com