MVC on the WEB - Amazon Development Center …romania.amazon.com/academy/pdf/day2_2.pdf · Model...

39
MVC on the WEB

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

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

~$> 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
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@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

@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

@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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Deploying a New Version