SlideShare uma empresa Scribd logo
1 de 44
Spring Web
MVC
By: Zeeshan Hanif
Sr. Software Engineer
Etilize Pvt. Ltd.
A GfK Product data company
Agenda
 What is spring MVC
 Features
 Spring MVC Workflow
 Important Components of Spring MVC
 Demo – External configuration
 Demo – Annotation
 Convention over Configuration
 World without Rules
 Demo – Form Submission
 Demo – Session Storage
 Demo – REST based URL
 Demo – Ajax
Prerequisite
 Spring Core
 IOC & Dependency Injection
Source: www.springsource.org
Spring MVC
 The Spring Web MVC Framework is a
robust, flexible, and well-designed
framework for rapidly developing web
applications using the MVC design
pattern.
Features
 Clear separation of roles. Each role —
controller, validator, command object,
form object, model object, handler
mapping, view resolver and so on.
 Powerful and straightforward
configuration of both framework and
application classes as JavaBeans
 Adaptability and flexibility. Define any
controller method signature you need for
a given scenario
Features (cont.)
 Use existing business objects as command
or form objects instead of mirroring them
to extend a particular framework base
class
 Flexible model transfer. Model transfer
with a name/value Map supports easy
integration with any view technology
 A simple yet powerful JSP tag library
 Easier testing
 REST based URL support
Spring MVC Workflow
Source: www.springsource.org
Important Components
 DispatcherServlet
 Controller
 HandlerMapping/@RequestMapping
 ModelAndView
 Model & @ModelAttribute
 ViewResolver
DispatcherServlet
 The Dispatcher Servlet follows the Front
Controller Design Pattern for handling
Client Requests.
 It means that whatever Url comes from
the Client, this Servlet will intercept the
Client Request before passing the
Request Object to the Controller.
DispatcherServlet (cont.)
<web-app>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.gfk</url-pattern>
</servlet-mapping>
</web-app>
Controller
 Controllers are components that are
being called by the Dispatcher Servlet for
doing any kind of Business Logic
 Spring Distribution already comes with a
variety of Controller Components each
doing a specific purpose - spring 2.x
 SimpleFormController
 AbstractController
 MultiActionController
 Spring 3 Controller
 @Controller Annotation
Controller (Cont.)
 Old School of Spring MVC
public class MySimpleController extends AbstractController
{
public ModelAndView handleRequestInternal
(HttpServletRequest request,
HttpServletResponse response)
{
return new ModelAndView("myView");
}
}
Controller (Cont.)
 Spring MVC 3.0
@Controller
public class DemoSpring3Controller {
@RequestMapping("/demoSpring3")
public ModelAndView helloWorld() {
String msg = "Hello Spring 3 World! Etilize -- GfK";
return new ModelAndView("demosp",
"message", msg);
}
}
<context:component-scan base-package="com.gfk.etilize.controller" />
HandlerMapping
 A Handler Mapping provides an abstract
way that tell how the Client's Url has to be
mapped to the Handlers.
 Four concrete variation of Handler
Mapping are available
 BeanNameUrl HandlerMapping
 CommonsPathMap HandlerMapping
 ControllerClassName HandlerMapping
 SimpleUrl HandlerMapping
HandlerMapping (Cont.)
 BeanNameUrl HandlerMapping
 URL request
http://localhost:8080/spweb/showStudents
 Bean Mapping
<beans>
<bean id="beanNameUrl"
class="org.springframework.web.servlet.handler.
BeanNameUrlHandlerMapping"/>
<bean name="/showStudents.jsp"
class="com.gfk.etilize.ShowStudentsController">
</bean>
</beans>
HandlerMapping (Cont.)
 SimpleUrlHandlerMapping
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHan
dlerMapping">
<property name="urlMap">
<map>
<entry key="/demoSpring.gfk">
<ref bean="demoSpringController"/>
</entry>
</map>
</property>
</bean>
<bean id="demoSpringController"
class="com.gfk.etilize.controller.DemoSpringController" />
HandlerMapping (Cont.)
 Spring 3.0 uses @RequestMapping for
Mapping
@Controller
public class DemoSpring3Controller {
@RequestMapping("/demoSpring3")
public ModelAndView helloWorld() {
String msg = "Hello Spring 3 World";
return new ModelAndView("demosp",
"message", msg);
}
}
ModelAndView
 ModelandView is returned by the
Controller object back to the Dispatcher
Servlet.
 This class is just a Container class for
holding the Model and the View
information.
 This way of specifying a View is called a
Logical View. It means that demosp either
can point to something called demosp.jsp
or demosp.pdf or demosp.xml
ModelAndView(viewName, “Key”, object);
return new ModelAndView("demosp", "message", msg);
Model & @ModelAttribute
 Model object Automatically created on
every request
@RequestMapping
public void showList(Model model){
model.addAttribute("studentList",
studentService.getAllStudents());
}
Implicitly added to Model and can be accessed with key
“student”
@RequestMapping
public Student showList(){
return studentService.getStudent();
}
Model & @ModelAttribute
@ModelAttribute – customized name
@RequestMapping
public @ModelAttribute(“stu”) Student showList(){
return studentService.getStudent();
}
@ModelAttribute – Form values
@RequestMapping("/new")
public ModelAndView getStudentForm(){
return new ModelAndView("studentForm","student",new Student());
}
<form:form action="add.gfk" method="POST" commandName=" student " >
Name:<form:input path="name" size="60" /><br>
<input type="submit" value="Register" /></td>
</form:form>
@RequestMapping
public void saveStudent(@ModelAttribute Student stu){
studentService.saveStudent(stu);
}
View Resolver
 The mapping between the Logical name
and the Physical View Location is taken
care by the View Resolver object.
 Spring comes with a set of Built-In Spring
Resolvers.
 We can write Custom View Resolvers by
implementing the
org.springframework.web.servlet.ViewResolver
interface
View Resolver (Cont.)
 BeanNameViewResolver
 FreeMarkerViewResolver
 InternalResourceViewResolver
 JasperReportsViewResolver
 ResourceBundleViewResolver
 UrlBasedViewResolver
 VelocityLayoutViewResolver
 VelocityViewResolver
 XmlViewResolver
 XsltViewResolver
View Resolver (Cont.)
 InternalResourceViewResolver
Controller returns - new ModelAndView("myView1")
<bean id="viewResolver“
class="org.springframework.web.servlet.view.InternalResourceVie
wResolver">
<property name="prefix">
<value>/WEB-INF/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
the prefix + the logical View Name + the suffix
/WEB-INF/myView.jsp
View Resolver (Cont.)
 BeanNameViewResolver
 One of the dis-advantage of
using InternalResourceViewResolver is that
the name of the View file (jsp or pdf) must
be present in the Web Application Context.
 Dynamically generated View files may not
be possible.
 In such a case, we may use the BeanName
ViewResolver which will dynamically
generate View in Pdf or Excel Formats.
View Resolver (Cont.)
Controller returns - new ModelAndView(“excel")
<bean id="beanNameResolver"
class="org.springframework.web.servlet.view.BeanNameViewReso
lver"/>
<bean id = “excel" class = "MyExcelGenerator"/>
Demo – External configuration
Demo – Annotation
Convention over Configuration
 Write less code, get consistency
 Conventions available for
 Request mapping
 View name selection
 Model population
Convention over Configuration
 Mapping By RequestMapping
@Controller
public class DemoSpring3Controller {
@RequestMapping("/demoSpring3")
public void helloWorld(){}
}
Convention over Configuration
@Controller
public class StudentController {
@RequestMapping
public void listAll(Model model){
model.addAttribute(new Student("Test",23));
}
}
GET /student/listAll
Mapping of class and
method name
View with method name
selected from request path
Model key generated from object type
Convention over Configuration
 Mapping By Convention
@Controller
public class StudentController {
URL  /student/showList , View  showList.jsp
@RequestMapping
public void showList(Model model){}
URL  /student/getStudent, View  getStudent.jsp
@RequestMapping
public Student getStudent(){
…
return stu;
}
}
World without Rules
 Return Type?
 Return Type Can be:
 ModelAndViewObject
 Model
 Map
 View
 String
 Void
 Any Custom or built-in datatype
 e.g. Student, Student[],ArrayList etc.
World without Rules (Cont.)
 Parameter Type?
 Parameter can be in any order:
 ServletRequest/HttpServletRequest
 ServletResponse/HttpServletResponse
 HttpSession
 InputStream/java.io.Reader
 OutputStream/java.io.Writer
 @RequestParam("product") int id or any type
 @PathVariable String name or any type
 @CookieValue("cookie_name") String or any type
 @RequestHeader("content") String or any type
 @ModelAttribute User us or any custom object
 Errors
 BindingResult
 SessionStatus
Demo – Form Submission
@RequestParam
 Type Conversion
@RequestMapping("/login")
public void login(@RequestParam String userName,
@RequestParam int age){
}
 Optional Request parameter -- must use
object for optional
@RequestMapping("/login")
public void login(@RequestParam(required=false) String
userName){
}
Demo – @RequestParam
@SessionAttribute
@Controller
@SessionAttributes("user")
public class LoginController {
@RequestMapping("/login")
public User login(@RequestParam int id){
return loginService.login(id);
}
}
User Object will be stored in session with key “user”
Demo – @SessionAttribute
@PathVariable – REST URLs
 GET /students/find/5
@RequestMapping(“/find/{id}")
public ModelAndView findStudent(@PathVariable int id ,
Model model){
model.addAttribute("stu", studentService.getStudent(id));
return new ModelAndView("searchStudent");
}
Demo – @PathVariable – REST URLs
Demo – Ajax
 @ResponseBody annotation instructs
Spring MVC to serialize the Student to the
client.
 Spring MVC automatically serializes to
JSON because the client accepts that
content type
@RequestMapping(value="/student")
public @ResponseBody Student getStudent(
@RequestParam int id) {
return studentService.getStudent(id);
}
Q & A
 Source Code
http://www.4shared.com/zip/sHRtnXXd/De
moSpringMVC.html
 You can find this presentation on
slideshare
http://www.slideshare.net/zeeshanhanif
Contact
zeeshanhanif@gmail.com
http://www.linkedin.com/in/zeeshanhanif
http://www.facebook.com/zeeshanhanif

Mais conteúdo relacionado

Mais procurados

Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - CoreDzmitry Naskou
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlArjun Thakur
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Hitesh-Java
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!Jakub Kubrynski
 
Spring 3.x - Spring MVC - Advanced topics
Spring 3.x - Spring MVC - Advanced topicsSpring 3.x - Spring MVC - Advanced topics
Spring 3.x - Spring MVC - Advanced topicsGuy Nir
 
Model view controller (mvc)
Model view controller (mvc)Model view controller (mvc)
Model view controller (mvc)M Ahsan Khan
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework Serhat Can
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with SpringJoshua Long
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootJosué Neis
 
MVC Architecture
MVC ArchitectureMVC Architecture
MVC ArchitecturePrem Sanil
 

Mais procurados (20)

Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
Java Spring Framework
Java Spring FrameworkJava Spring Framework
Java Spring Framework
 
Spring 3.x - Spring MVC - Advanced topics
Spring 3.x - Spring MVC - Advanced topicsSpring 3.x - Spring MVC - Advanced topics
Spring 3.x - Spring MVC - Advanced topics
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Introduction to spring boot
Introduction to spring bootIntroduction to spring boot
Introduction to spring boot
 
Model view controller (mvc)
Model view controller (mvc)Model view controller (mvc)
Model view controller (mvc)
 
Spring MVC 3.0 Framework
Spring MVC 3.0 FrameworkSpring MVC 3.0 Framework
Spring MVC 3.0 Framework
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBoot
 
MVC Architecture
MVC ArchitectureMVC Architecture
MVC Architecture
 
Spring boot
Spring bootSpring boot
Spring boot
 

Semelhante a Spring Web MVC

ASP.NET MVC Controllers & Actions
ASP.NET MVC Controllers & ActionsASP.NET MVC Controllers & Actions
ASP.NET MVC Controllers & Actionsonsela
 
Building Modern Websites with ASP.NET by Rachel Appel
Building Modern Websites with ASP.NET by Rachel AppelBuilding Modern Websites with ASP.NET by Rachel Appel
Building Modern Websites with ASP.NET by Rachel Appel.NET Conf UY
 
Build your website with angularjs and web apis
Build your website with angularjs and web apisBuild your website with angularjs and web apis
Build your website with angularjs and web apisChalermpon Areepong
 
angularJs Workshop
angularJs WorkshopangularJs Workshop
angularJs WorkshopRan Wahle
 
Controllers & actions
Controllers & actionsControllers & actions
Controllers & actionsEyal Vardi
 
Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Tuna Tore
 
springmvc-150923124312-lva1-app6892
springmvc-150923124312-lva1-app6892springmvc-150923124312-lva1-app6892
springmvc-150923124312-lva1-app6892Tuna Tore
 
Introduction to Spring MVC
Introduction to Spring MVCIntroduction to Spring MVC
Introduction to Spring MVCRichard Paul
 
Introduction to Struts 1.3
Introduction to Struts 1.3Introduction to Struts 1.3
Introduction to Struts 1.3Ilio Catallo
 
Retrofit Web Forms with MVC & T4
Retrofit Web Forms with MVC & T4Retrofit Web Forms with MVC & T4
Retrofit Web Forms with MVC & T4soelinn
 
Asp.Net Mvc
Asp.Net MvcAsp.Net Mvc
Asp.Net Mvcmicham
 
AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014Ran Wahle
 

Semelhante a Spring Web MVC (20)

ASP.NET MVC Controllers & Actions
ASP.NET MVC Controllers & ActionsASP.NET MVC Controllers & Actions
ASP.NET MVC Controllers & Actions
 
Spring MVC Basics
Spring MVC BasicsSpring MVC Basics
Spring MVC Basics
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Building Modern Websites with ASP.NET by Rachel Appel
Building Modern Websites with ASP.NET by Rachel AppelBuilding Modern Websites with ASP.NET by Rachel Appel
Building Modern Websites with ASP.NET by Rachel Appel
 
ASP .net MVC
ASP .net MVCASP .net MVC
ASP .net MVC
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Build your website with angularjs and web apis
Build your website with angularjs and web apisBuild your website with angularjs and web apis
Build your website with angularjs and web apis
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
angularJs Workshop
angularJs WorkshopangularJs Workshop
angularJs Workshop
 
Controllers & actions
Controllers & actionsControllers & actions
Controllers & actions
 
Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5
 
springmvc-150923124312-lva1-app6892
springmvc-150923124312-lva1-app6892springmvc-150923124312-lva1-app6892
springmvc-150923124312-lva1-app6892
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Asp.NET MVC
Asp.NET MVCAsp.NET MVC
Asp.NET MVC
 
Jsf intro
Jsf introJsf intro
Jsf intro
 
Introduction to Spring MVC
Introduction to Spring MVCIntroduction to Spring MVC
Introduction to Spring MVC
 
Introduction to Struts 1.3
Introduction to Struts 1.3Introduction to Struts 1.3
Introduction to Struts 1.3
 
Retrofit Web Forms with MVC & T4
Retrofit Web Forms with MVC & T4Retrofit Web Forms with MVC & T4
Retrofit Web Forms with MVC & T4
 
Asp.Net Mvc
Asp.Net MvcAsp.Net Mvc
Asp.Net Mvc
 
AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014
 

Último

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Último (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Spring Web MVC

  • 1. Spring Web MVC By: Zeeshan Hanif Sr. Software Engineer Etilize Pvt. Ltd. A GfK Product data company
  • 2. Agenda  What is spring MVC  Features  Spring MVC Workflow  Important Components of Spring MVC  Demo – External configuration  Demo – Annotation  Convention over Configuration  World without Rules  Demo – Form Submission  Demo – Session Storage  Demo – REST based URL  Demo – Ajax
  • 3. Prerequisite  Spring Core  IOC & Dependency Injection
  • 5. Spring MVC  The Spring Web MVC Framework is a robust, flexible, and well-designed framework for rapidly developing web applications using the MVC design pattern.
  • 6. Features  Clear separation of roles. Each role — controller, validator, command object, form object, model object, handler mapping, view resolver and so on.  Powerful and straightforward configuration of both framework and application classes as JavaBeans  Adaptability and flexibility. Define any controller method signature you need for a given scenario
  • 7. Features (cont.)  Use existing business objects as command or form objects instead of mirroring them to extend a particular framework base class  Flexible model transfer. Model transfer with a name/value Map supports easy integration with any view technology  A simple yet powerful JSP tag library  Easier testing  REST based URL support
  • 8. Spring MVC Workflow Source: www.springsource.org
  • 9. Important Components  DispatcherServlet  Controller  HandlerMapping/@RequestMapping  ModelAndView  Model & @ModelAttribute  ViewResolver
  • 10. DispatcherServlet  The Dispatcher Servlet follows the Front Controller Design Pattern for handling Client Requests.  It means that whatever Url comes from the Client, this Servlet will intercept the Client Request before passing the Request Object to the Controller.
  • 12. Controller  Controllers are components that are being called by the Dispatcher Servlet for doing any kind of Business Logic  Spring Distribution already comes with a variety of Controller Components each doing a specific purpose - spring 2.x  SimpleFormController  AbstractController  MultiActionController  Spring 3 Controller  @Controller Annotation
  • 13. Controller (Cont.)  Old School of Spring MVC public class MySimpleController extends AbstractController { public ModelAndView handleRequestInternal (HttpServletRequest request, HttpServletResponse response) { return new ModelAndView("myView"); } }
  • 14. Controller (Cont.)  Spring MVC 3.0 @Controller public class DemoSpring3Controller { @RequestMapping("/demoSpring3") public ModelAndView helloWorld() { String msg = "Hello Spring 3 World! Etilize -- GfK"; return new ModelAndView("demosp", "message", msg); } } <context:component-scan base-package="com.gfk.etilize.controller" />
  • 15. HandlerMapping  A Handler Mapping provides an abstract way that tell how the Client's Url has to be mapped to the Handlers.  Four concrete variation of Handler Mapping are available  BeanNameUrl HandlerMapping  CommonsPathMap HandlerMapping  ControllerClassName HandlerMapping  SimpleUrl HandlerMapping
  • 16. HandlerMapping (Cont.)  BeanNameUrl HandlerMapping  URL request http://localhost:8080/spweb/showStudents  Bean Mapping <beans> <bean id="beanNameUrl" class="org.springframework.web.servlet.handler. BeanNameUrlHandlerMapping"/> <bean name="/showStudents.jsp" class="com.gfk.etilize.ShowStudentsController"> </bean> </beans>
  • 17. HandlerMapping (Cont.)  SimpleUrlHandlerMapping <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHan dlerMapping"> <property name="urlMap"> <map> <entry key="/demoSpring.gfk"> <ref bean="demoSpringController"/> </entry> </map> </property> </bean> <bean id="demoSpringController" class="com.gfk.etilize.controller.DemoSpringController" />
  • 18. HandlerMapping (Cont.)  Spring 3.0 uses @RequestMapping for Mapping @Controller public class DemoSpring3Controller { @RequestMapping("/demoSpring3") public ModelAndView helloWorld() { String msg = "Hello Spring 3 World"; return new ModelAndView("demosp", "message", msg); } }
  • 19. ModelAndView  ModelandView is returned by the Controller object back to the Dispatcher Servlet.  This class is just a Container class for holding the Model and the View information.  This way of specifying a View is called a Logical View. It means that demosp either can point to something called demosp.jsp or demosp.pdf or demosp.xml ModelAndView(viewName, “Key”, object); return new ModelAndView("demosp", "message", msg);
  • 20. Model & @ModelAttribute  Model object Automatically created on every request @RequestMapping public void showList(Model model){ model.addAttribute("studentList", studentService.getAllStudents()); } Implicitly added to Model and can be accessed with key “student” @RequestMapping public Student showList(){ return studentService.getStudent(); }
  • 21. Model & @ModelAttribute @ModelAttribute – customized name @RequestMapping public @ModelAttribute(“stu”) Student showList(){ return studentService.getStudent(); } @ModelAttribute – Form values @RequestMapping("/new") public ModelAndView getStudentForm(){ return new ModelAndView("studentForm","student",new Student()); } <form:form action="add.gfk" method="POST" commandName=" student " > Name:<form:input path="name" size="60" /><br> <input type="submit" value="Register" /></td> </form:form> @RequestMapping public void saveStudent(@ModelAttribute Student stu){ studentService.saveStudent(stu); }
  • 22. View Resolver  The mapping between the Logical name and the Physical View Location is taken care by the View Resolver object.  Spring comes with a set of Built-In Spring Resolvers.  We can write Custom View Resolvers by implementing the org.springframework.web.servlet.ViewResolver interface
  • 23. View Resolver (Cont.)  BeanNameViewResolver  FreeMarkerViewResolver  InternalResourceViewResolver  JasperReportsViewResolver  ResourceBundleViewResolver  UrlBasedViewResolver  VelocityLayoutViewResolver  VelocityViewResolver  XmlViewResolver  XsltViewResolver
  • 24. View Resolver (Cont.)  InternalResourceViewResolver Controller returns - new ModelAndView("myView1") <bean id="viewResolver“ class="org.springframework.web.servlet.view.InternalResourceVie wResolver"> <property name="prefix"> <value>/WEB-INF/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> the prefix + the logical View Name + the suffix /WEB-INF/myView.jsp
  • 25. View Resolver (Cont.)  BeanNameViewResolver  One of the dis-advantage of using InternalResourceViewResolver is that the name of the View file (jsp or pdf) must be present in the Web Application Context.  Dynamically generated View files may not be possible.  In such a case, we may use the BeanName ViewResolver which will dynamically generate View in Pdf or Excel Formats.
  • 26. View Resolver (Cont.) Controller returns - new ModelAndView(“excel") <bean id="beanNameResolver" class="org.springframework.web.servlet.view.BeanNameViewReso lver"/> <bean id = “excel" class = "MyExcelGenerator"/>
  • 27. Demo – External configuration Demo – Annotation
  • 28. Convention over Configuration  Write less code, get consistency  Conventions available for  Request mapping  View name selection  Model population
  • 29. Convention over Configuration  Mapping By RequestMapping @Controller public class DemoSpring3Controller { @RequestMapping("/demoSpring3") public void helloWorld(){} }
  • 30. Convention over Configuration @Controller public class StudentController { @RequestMapping public void listAll(Model model){ model.addAttribute(new Student("Test",23)); } } GET /student/listAll Mapping of class and method name View with method name selected from request path Model key generated from object type
  • 31. Convention over Configuration  Mapping By Convention @Controller public class StudentController { URL  /student/showList , View  showList.jsp @RequestMapping public void showList(Model model){} URL  /student/getStudent, View  getStudent.jsp @RequestMapping public Student getStudent(){ … return stu; } }
  • 32. World without Rules  Return Type?  Return Type Can be:  ModelAndViewObject  Model  Map  View  String  Void  Any Custom or built-in datatype  e.g. Student, Student[],ArrayList etc.
  • 33. World without Rules (Cont.)  Parameter Type?  Parameter can be in any order:  ServletRequest/HttpServletRequest  ServletResponse/HttpServletResponse  HttpSession  InputStream/java.io.Reader  OutputStream/java.io.Writer  @RequestParam("product") int id or any type  @PathVariable String name or any type  @CookieValue("cookie_name") String or any type  @RequestHeader("content") String or any type  @ModelAttribute User us or any custom object  Errors  BindingResult  SessionStatus
  • 34. Demo – Form Submission
  • 35. @RequestParam  Type Conversion @RequestMapping("/login") public void login(@RequestParam String userName, @RequestParam int age){ }  Optional Request parameter -- must use object for optional @RequestMapping("/login") public void login(@RequestParam(required=false) String userName){ }
  • 37. @SessionAttribute @Controller @SessionAttributes("user") public class LoginController { @RequestMapping("/login") public User login(@RequestParam int id){ return loginService.login(id); } } User Object will be stored in session with key “user”
  • 39. @PathVariable – REST URLs  GET /students/find/5 @RequestMapping(“/find/{id}") public ModelAndView findStudent(@PathVariable int id , Model model){ model.addAttribute("stu", studentService.getStudent(id)); return new ModelAndView("searchStudent"); }
  • 40. Demo – @PathVariable – REST URLs
  • 41. Demo – Ajax  @ResponseBody annotation instructs Spring MVC to serialize the Student to the client.  Spring MVC automatically serializes to JSON because the client accepts that content type @RequestMapping(value="/student") public @ResponseBody Student getStudent( @RequestParam int id) { return studentService.getStudent(id); }
  • 42. Q & A
  • 43.  Source Code http://www.4shared.com/zip/sHRtnXXd/De moSpringMVC.html  You can find this presentation on slideshare http://www.slideshare.net/zeeshanhanif