Workflow of a SpringMVC Application:-
...............................................................
1.Whenever client make a request that will be traped by the DispatcherServlet.
2.DispathcerServlet reads the bean configuration file then it takes the support of HandlerMappings to idetify the Controller classes.
**HandlerMappings are predefined java classes those were given by the Spring..
**We generally configure HandlerMappings within a bean configuration file....
**HandlerMappings containes a information about the controller classes..
**Inorder to process each and every client request we generally maintain seperate controller classes.....
3.Finally DispatcherServlet invokes the Controller class based on the client request with the help of a HandlerMapping..
4.Controller class contains a complete information about a client in the form a CommandObject.....
5.Controller class will interacts with the model calsses ......
6&7.Based on the results those were return by the ModelClasses,Controller class returns a ModelAndView object to the DispatherServelet..
ModelAndView object cotnains a information about model class returned infomation and the presentation page....
8.DispatherServlet takes the support of a ViewResolver to identify the presentation page....
Actually a ModelAndView object may contain a logical inforamtion about the presentation page or It may cotain exact information about a presentaion page....
If the ModelAndView object contains a LogicalInforamation about the presentation page then DispatherServlet takes the support of a ViewResolver ....
If the ModelAndView object contains a ExactInforamation about the presentation page then DispatherServlet directly invokes the presentaion page without taking the support of a ViewResolver ......
=>Generaly we can return ModelAndView by specifiying the "LogicalName" of the jsp page
or
By Specifiying the exact name of the JspPage.....
................***................***................***........................***.............
Understanding the HandlerMapping's:-
..............................................................
=>HandlerMapping's are predefined javaclasses those were given by the Spring...
=>We can configure them as a SpringBean within a bean configuration file....
=> HandlerMapping's containes a information about the Controler classes.....
=>HandlerMapping's can able to idetifie the Controller classes based on the client request....
The predefined HandlerMapping's those were given by the Spring are.......
=>BeanNameUrlHandlerMapping
=>SimpleUrlHandlerMapping
=>CommonsPathMapUrlHandlerMapping
=>ControllerClassNameUrlHandlerMapping
------------------------------------------------------------------------------------------------------------------
Understanding a "ModelAndView" Object:-
....................................................................
=>The org.springframework.web.servlet.ModelAndView object is a predefined java class that was given by the Spring....
=>The ModelAndView object contains a information about the response page and the module class generated result....
=>The ModelAndView object can be created in two ways
**By Specifying the exactname of a ResponsePage...
or
**By Specifying the logicalname of a ResponsePage...
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response)
{
.........
.......
return new ModelAndView("Success.jsp");
}
Case 2:-
public ModelAndView handleRequest(....)
{
.........
.......
List<String> list=new ArrayList<String>();
list.add("Ashok");
list.add("Mahesh");
........
......
return new ModelAndView("Success","listOfNames",list);
}
=>Here the "list" object is internally stored within a Request scope with keyname "listOfNames".....
=>Here we are returning ModelAndView object by specifieng the logical name of the response page....
----------------------------------------------------------------------------------
Understanding ViewResolver:-
.................................................
=>ViewResolver is used to invoke the response page....
=>Whenever a ModelAndView object return's a logical name to the DispatcherServlet,the DispatcherServlet takes the support of ViewResolver to identify the response page.....
=>ViewResolver is an interfce one of the implemetation class of a ViewResolver is InternalResourceViewResolver...
=>We generally configure the InternalResourceViewResolver into a bean configuration file......
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
=>The InternalResourceViewResolver adds "/" as a prefix and ".jsp" as suffix to logicalname..
Note:-
..........
=>If we are returning a ModelAndView object with a logical name we must and should configure a ViewResolver within a bean configuration file......
return new ModelAndView("Success");
=>If we are returning a ModelAndView object with a Exact jsp name we should not configure a ViewResolver within a bean configuration file......
return new ModelAndView("Success.jsp");
=>If save the bean configurationfile name otherthan dispatcherservletname-servlet.xml we should configure within a web.xml using <context-param> but if we take the support of a <context-param> we should configure the "ContextLoadListner" class.....
So that we can make this as easy by configuring the bean configuration file as <init-param>(Initialization parameter)...
If we configure as a initialization parameter we no need to configure any explicit listener classes.....
ForEx:-
......
Bean configuration file: login-servlet.xml
<web-app>
<servlet>
<servlet-name>ds</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/login-servlet.xml</param-value>
</init-param>
</servlet>
.....
.....
If there are miltiple bean configuration file we can seperate with them using ","
Here the "contextConfigLocation" is a predefined initialization parameter.....
To compile the Above Application
we need to set
=>web.jar
=>web.servlet.jar file as a class path..
=>servlet-api.jar
-----------------------------------------------------------------------------------------------------------------
...............................................................
1.Whenever client make a request that will be traped by the DispatcherServlet.
2.DispathcerServlet reads the bean configuration file then it takes the support of HandlerMappings to idetify the Controller classes.
**HandlerMappings are predefined java classes those were given by the Spring..
**We generally configure HandlerMappings within a bean configuration file....
**HandlerMappings containes a information about the controller classes..
**Inorder to process each and every client request we generally maintain seperate controller classes.....
3.Finally DispatcherServlet invokes the Controller class based on the client request with the help of a HandlerMapping..
4.Controller class contains a complete information about a client in the form a CommandObject.....
5.Controller class will interacts with the model calsses ......
6&7.Based on the results those were return by the ModelClasses,Controller class returns a ModelAndView object to the DispatherServelet..
ModelAndView object cotnains a information about model class returned infomation and the presentation page....
8.DispatherServlet takes the support of a ViewResolver to identify the presentation page....
Actually a ModelAndView object may contain a logical inforamtion about the presentation page or It may cotain exact information about a presentaion page....
If the ModelAndView object contains a LogicalInforamation about the presentation page then DispatherServlet takes the support of a ViewResolver ....
If the ModelAndView object contains a ExactInforamation about the presentation page then DispatherServlet directly invokes the presentaion page without taking the support of a ViewResolver ......
=>Generaly we can return ModelAndView by specifiying the "LogicalName" of the jsp page
or
By Specifiying the exact name of the JspPage.....
................***................***................***........................***.............
Understanding the HandlerMapping's:-
..............................................................
=>HandlerMapping's are predefined javaclasses those were given by the Spring...
=>We can configure them as a SpringBean within a bean configuration file....
=> HandlerMapping's containes a information about the Controler classes.....
=>HandlerMapping's can able to idetifie the Controller classes based on the client request....
The predefined HandlerMapping's those were given by the Spring are.......
=>BeanNameUrlHandlerMapping
=>SimpleUrlHandlerMapping
=>CommonsPathMapUrlHandlerMapping
=>ControllerClassNameUrlHandlerMapping
------------------------------------------------------------------------------------------------------------------
Understanding a "ModelAndView" Object:-
....................................................................
=>The org.springframework.web.servlet.ModelAndView object is a predefined java class that was given by the Spring....
=>The ModelAndView object contains a information about the response page and the module class generated result....
=>The ModelAndView object can be created in two ways
**By Specifying the exactname of a ResponsePage...
or
**By Specifying the logicalname of a ResponsePage...
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response)
{
.........
.......
return new ModelAndView("Success.jsp");
}
Case 2:-
public ModelAndView handleRequest(....)
{
.........
.......
List<String> list=new ArrayList<String>();
list.add("Ashok");
list.add("Mahesh");
........
......
return new ModelAndView("Success","listOfNames",list);
}
=>Here the "list" object is internally stored within a Request scope with keyname "listOfNames".....
=>Here we are returning ModelAndView object by specifieng the logical name of the response page....
----------------------------------------------------------------------------------
Understanding ViewResolver:-
.................................................
=>ViewResolver is used to invoke the response page....
=>Whenever a ModelAndView object return's a logical name to the DispatcherServlet,the DispatcherServlet takes the support of ViewResolver to identify the response page.....
=>ViewResolver is an interfce one of the implemetation class of a ViewResolver is InternalResourceViewResolver...
=>We generally configure the InternalResourceViewResolver into a bean configuration file......
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
=>The InternalResourceViewResolver adds "/" as a prefix and ".jsp" as suffix to logicalname..
Note:-
..........
=>If we are returning a ModelAndView object with a logical name we must and should configure a ViewResolver within a bean configuration file......
return new ModelAndView("Success");
=>If we are returning a ModelAndView object with a Exact jsp name we should not configure a ViewResolver within a bean configuration file......
return new ModelAndView("Success.jsp");
=>If save the bean configurationfile name otherthan dispatcherservletname-servlet.xml we should configure within a web.xml using <context-param> but if we take the support of a <context-param> we should configure the "ContextLoadListner" class.....
So that we can make this as easy by configuring the bean configuration file as <init-param>(Initialization parameter)...
If we configure as a initialization parameter we no need to configure any explicit listener classes.....
ForEx:-
......
Bean configuration file: login-servlet.xml
<web-app>
<servlet>
<servlet-name>ds</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/login-servlet.xml</param-value>
</init-param>
</servlet>
.....
.....
If there are miltiple bean configuration file we can seperate with them using ","
Here the "contextConfigLocation" is a predefined initialization parameter.....
To compile the Above Application
we need to set
=>web.jar
=>web.servlet.jar file as a class path..
=>servlet-api.jar
-----------------------------------------------------------------------------------------------------------------