Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

TO Spring MVC: A Report On Industrial Training at

Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

INTRODUCTION

TO
SPRING MVC

A Report on Industrial Training


At
S.N.T.I.
(TATA STEEL INDIA LTD.)
Jamshedpur

by

RISHABH SINGH,
1509010166

Submitted To:

Department of Compter Science Engineering

IEC COLLEGE OF ENGINEERING AND TECHNOLOGY,


GREATER NOIDA (UP) INDIA 201310

AUGUST,2018
CHAPTER 1: INTRODUCTION

The Spring Web model-view-controller (MVC) framework is designed around


a DispatcherServlet that dispatches requests to handlers, with configurable handler
mappings, view resolution, locale and theme resolution as well as support for uploading
files. The default handler is based on the @Controller and @RequestMapping annotations,
offering a wide range of flexible handling methods. With the introduction of Spring 3.0,
the @Controller mechanism also allows you to create Restful Web sites and applications,
through the @PathVariable annotation and other features.

The Spring Web MVC framework provides Model-View-Controller (MVC) architecture and
ready components that can be used to develop flexible and loosely coupled web applications.
The MVC pattern results in separating the different aspects of the application (input logic,
business logic, and UI logic), while providing a loose coupling between these elements.

 The Model encapsulates the application data and in general they will consist of POJO.

 The View is responsible for rendering the model data and in general it generates
HTML output that the client's browser can interpret.

 The Controller is responsible for processing user requests and building an
appropriate model and passes it to the view for rendering.

The Spring Web model-view-controller (MVC) framework is designed around a


DispatcherServlet that dispatches requests to handlers, with configurable handler mappings,
view resolution, locale and theme resolution as well as support for uploading files. The
default handler is based on the @Controller and @RequestMapping annotations, offering a
wide range of flexible handling methods. With the introduction of Spring 3.0, the
@Controller mechanism also allows you to create RESTful Web sites and applications,
through the @PathVariable annotation and other features.

In Spring Web MVC you can use any object as a command or form-backing object; you do not
need to implement a framework-specific interface or base class. Spring's data binding is highly
flexible: for example, it treats type mismatches as validation errors that can be evaluated by the
application, not as system errors. Thus you need not duplicate your business objects' properties
as simple, untyped strings in your form objects simply to handle invalid submissions, or to
convert the
Strings properly. Instead, it is often preferable to bind directly to your business objects.

Spring's view resolution is extremely flexible. A Controller implementation can even write
directly to the response stream. Typically, a ModelAndView instance consists of a view name
and a model Map, which contains bean names and corresponding objects such as a command
or form, which contain reference data. View name resolution is highly configurable, through
bean names, a properties file, or your own ViewResolver implementation. The model (the M
in MVC) is based on the Map interface, which allows for the complete abstraction of the
view technology. You can integrate directly JSP, Velocity, or any other rendering
technology. The model Map is simply transformed into an appropriate format, such as JSP
request attributes or a Velocity template model.
CHAPTER 2: ADVANTAGES OF SPRING
FRAMEOWRK:

The Spring framework addresses most of the infrastructure functionalities of the Enterprise
applications. Following are the few major advantages of Spring Framework.

1. Spring enables the developers to develop enterprise applications using POJOs (Plain
Old Java Object). The benefit of developing the applications using POJO is, that we
do not need to have an enterprise container such as an application server but we have
the option of using a robust servlet container.
2. Spring provides an abstraction layer on existing technologies like servlets, jsps, jdbc,
jndi, rmi, jms and Java mail etc., to simplify the develpment process.
3. Spring comes with some of the existing technologies like ORM framework, logging
framework, J2EE and JDK Timers etc, Hence we don’t need to integrate explicitly
those technologies.
4. Spring WEB framework has a well-designed web MVC framework, which provides a
great alternate to lagacy web framework.
5. Spring can eliminate the creation of the singleton and factory classes.
6. Spring provides a consistent transaction management interface that can scale down to
a local transaction and scale up to global transactions (using JTA).
7. Spring framework includes support for managing business objects and exposing their
services to the presentation tier components, so that the web and desktop applications
can access the same objects.
8. Spring framework has taken the best practice that have been proven over the years in
several applications and formalized as design patterns.
9. Spring application can be used for the development of different kind of applications,
like standalone applications, standalone GUI applications, Web applications and
applets as well.
10. Spring supports both xml and anotation configurations.
11. Spring Framework allows to develop standalone, desktop, 2 tire – n-tire architecture
and distributed applications.
12. Spring gives built in middleware services like Connection pooling, Transaction
management and etc.,
13. Spring provides a light weight container which can be activaed without using
webserver or application server.
CHAPTER 3: OVERVIEW OF SPRING MVC
PROCESSING SEQUENCE

The processing flow o f Spring MVC from receiving the request till the response is
returned is shown in the following diagram.

1. DispatcherServlet receeives the request.

2. DispatcherServlet disppatches the task of selecting an


appropriate controller to HandlerMapping. HandlerMapping selects the controller
which is mapped to the incoming request URL and returns
the (selected Handler) and Controller to DispatcherServlet.

3. DispatcherServlet disppatches the task of executing of business


logic of Controller to HandllerAdapter.

4. HandlerAdapter calls the business logic process of Controller.


5. Controller executes the business logic, sets the processing result in Model and returns
the logical name of vieew to HandlerAdapter.

6. DispatcherServlet disppatches the task of resolving the View corresponding to the


View name to ViewReesolver. ViewResolver returns the View mapped to View
name.

7. DispatcherServlet disppatches the rendering process to returned View.

8. View renders Model data and returns the response.


CHAPTER 4: THE DISPATCHER SERVLET

The Spring Web model-view-controller (MVC) framework is designed around


a DispatcherServlet that handles all the HTTP requests and responses. The request
processing workflow of the Spring Web MVC DispatcherServlet is illustrated in the
following diagram –

Following is the sequence of events corresponding to an incoming HTTP request to


DispatcherServlet −

 After receiving an HTTP request, DispatcherServlet consults the HandlerMapping to


call the appropriate Controller.

 The Controller takes the request and calls the appropriate service methods based on
used GET or POST method. The service method will set model data based on
defined business logic and returns view name to the DispatcherServlet.

 The DispatcherServlet will take help from ViewResolver to pickup the defined view
for the request.

 Once view is finalized, The DispatcherServlet passes the model data to the view
which is finally rendered on the browser.


All the above mentioned components, ie. HandlerMapping, Contoller, and ViewResolver are
part of WebApplicationContext which is an extension of the plain ApplicationContext with
some extra features necessary for web Application.
CHAPTER 5: REQUIRED CONFIGURATION

You need to map requests that you want the DispatcherServlet to handle, by using a URL
mapping in the web.xml file. The following is an example to show declaration and mapping
for HelloWeb DispatcherServlet example –

<web-app id = "WebApp_ID" version = "2.4"

xmlns = "http://java.sun.com/xml/ns/j2ee"

xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Spring MVC Application</display-name>

<servlet>

<servlet-name>HelloWeb</servlet-name>

<servlet-class>

org.springframework.web.servlet.DispatcherServlet

</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>HelloWeb</servlet-name>

<url-pattern>*.jsp</url-pattern>

</servlet-mapping>

</web-app>

10
The web.xml file will be kept in the WebContent/WEB-INF directory of your web
application. Upon initialization of HelloWeb DispatcherServlet, the framework will try to
load the application context from a file named [servlet-name]-servlet.xml located in the
application's WebContent/WEB-INFdirectory. In this case, our file will be
HelloWebservlet.xml.

Next, <servlet-mapping> tag indicates what URLs will be handled by which


DispatcherServlet. Here all the HTTP requests ending with .jsp will be handled by the
HelloWeb DispatcherServlet.

If you do not want to go with default filename as [servlet-name]-servlet.xmland default


location as WebContent/WEB-INF, you can customize this file name and location by adding
the servlet listener ContextLoaderListener in your web.xml file as follows –

<web-app...>

<!-------- DispatcherServlet definition goes here----->

....

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/HelloWeb-servlet.xml</param-value>

</context-param>

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

</web-app>

Now, let us check the required configuration for HelloWeb-servlet.xml file, placed in your
web application's WebContent/WEB-INF directory –
<beans xmlns = "http://www.springframework.org/schema/beans"

xmlns:context = "http://www.springframework.org/schema/context" xmlns:xsi

= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation =

"http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package = "com.tutorialspoint" />

=
<bean class
"org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value = "/WEB-INF/jsp/" /> <property name =
"suffix" value = ".jsp" /> </bean>

</beans>

Following are the important points about HelloWeb-servlet.xml file −

 The [servlet-name]-servlet.xml file will be used to create the beans defined,


overriding the definitions of any beans defined with the same name in the global
scope.

 The <context:component-scan...> tag will be use to activate Spring MVC annotation
scanning capability which allows to make use of annotations like @Controller and
@RequestMapping etc.

 The InternalResourceViewResolver will have rules defined to resolve the view
names. As per the above defined rule, a logical view named hello is delegated to a
view implementation located at /WEB-INF/jsp/hello.jsp .
The following section will show you how to create your actual components, i.e., Controller,
Model, and View.
CHAPTER 6: DEFINING A CONTROLLER:

The DispatcherServlet delegates the request to the controllers to execute the functionality
specific to it. The @Controllerannotation indicates that a particular class serves the role of a
controller. The @RequestMappingannotation is used to map a URL to either an entire class
or a particular handler method.

@Controller

@RequestMapping("/hello")

public class HelloController {

@RequestMapping(method = RequestMethod.GET)

public String printHello(ModelMap model) {

model.addAttribute("message", "Hello Spring MVC

Framework!"); return "hello";

The @Controller annotation defines the class as a Spring MVC controller. Here, the first
usage of @RequestMapping indicates that all handling methods on this controller are
relative to the /hello path. Next annotation@RequestMapping(method =
RequestMethod.GET) is used to declare theprintHello() method as the controller's default
service method to handle HTTP GET request. You can define another method to handle any
POST request at the same URL.
You can write the above controller in another form where you can add additional attributes
in @RequestMapping as follows –

@Controller

public class HelloController {

@RequestMapping(value = "/hello", method = RequestMethod.GET)

public String printHello(ModelMap model) {


model.addAttribute("message", "Hello Spring MVC Framework!");

return "hello";

The value attribute indicates the URL to which the handler method is mapped and the
method attribute defines the service method to handle HTTP GET request. The following
important points are to be noted about the controller defined above −

You will define required business logic inside a service method. You can call another
method inside this method as per requirement.

Based on the business logic defined, you will create a model within this method. You
can use setter different model attributes and these attributes will be accessed by the
view to present the final result. This example creates a model with its attribute
"message".

A defined service method can return a String, which contains the name of the view to
be used to render the model. This example returns "hello" as logical view name.
CHAPTER 7: CREATING JSP VIEWS:

Spring MVC supports many types of views for different presentation technologies. These
include - JSPs, HTML, PDF, Excel worksheets, XML, Velocity templates, XSLT, JSON,
Atom and RSS feeds, JasperReports, etc. But most commonly we use JSP templates written
with JSTL.

Let us write a simple hello view in /WEB-INF/hello/hello.jsp –

<html>

<head>

<title>Hello Spring MVC</title>

</head>

<body>

<h2>${message}</h2>

</body>

</html>

Here ${message} is the attribute which we have set up inside the Controller. You can have
multiple attributes to be displayed inside your view.

You might also like