Thursday, November 24, 2011

What is Spring MVC Architecture

As I mentioned earlier, Spring has a MVC architecture which make the Spring a high performance framework comparing to others. in the MVC architecture of Spring, there are important parts to be noted as dispatcher Servlet, handler mapping, view resolver & views. The abstract communication between these components is as follows. the communication steps are as follows.

 1. The user request is received by the dispatcher servlet. This dispatcher servlet is the key for mapping the resources to the correct requests. It contains xml mapping codes defining each resource with the path to the resource. 
2. Then the dispatcher servlet will invoke the controller for the request. 
3. The Controller process the request by calling the appropriate service methods and returns a ModeAndView object to the DispatcherServlet. The ModeAndView object contains the model data and the view name.
 4. The DispatcherServlet sends the view name to a ViewResolver to find the actual View to invoke. 
5. Now the DispatcherServlet will pass the model object to the View to render the result & the View with the help of the model data will render the result back to the user.

What is a Controller in Spring Framework

In Spring framework, all the requests sent by the dispatcher servlet normally directed to a controller class. This controller class is mapping those requests to each process & execute the requested inputs. In a project there can be multiple controllers defined for different purposes. All these controllers refers to the same dispatcher servlet. As I mentioned in the previous post, @RequestMapping keyword is used to map the dispatcher servlet with the controller class. 
In a Controller mapping there are two types of mapping as GET & POST. Normally there can be many GET methods in a controller while one POST method is employed. GET request method is used to get the requests from the user do the desired work & output results into a view( jsp pages). A GET request is shown below.


A POST request is used to post the results in to a page as usual. A POST request is shown below.


So this is about the basic concept of the Spring controller. Hope the post is useful for you & feel free to make a comment.

What is Dispatcher-Servlet in Spring

When you work with Spring framework, you will find an xml file called dispatcher-servlet is created when we create a new project. If we use Maven to build the project we can define the name for this servlet instead of the default name "dispatcher-servlet.xml". Normally we give the project name as the prefix & keep the servlet part as it is. For example, if the project name is Navigator, then dispatcher servlet can be "navigater-servlet.xml". 
the purpose of the dispatcher is to receive the requests & map those requests to the correct resources such as models & views. that means when a request is received it should be handled to meet with the correct resources & output the results. therefore we define all the request mapping codes within the dispatcher servlet. It is an xml file which contains java beans. 
when we define the beans tag, we must include all relevant bean URLs within it in order to map the resources. A sample beans tag definition is as follows.
After defining the beans, we can define the resource mapping tags. For example, we can define view resolvers, annotation URLs or any other DAO resource URLs within the xml.
In order to map the requests the request mapping code must be included within the java controller pages. such mapping code can be shown as follows.
@RequestMapping("/enterdetails")
This @RequestMapping denotes that the current page is mapped with the dispatcher servlet. so if the mapping is correct, the request will be directed to this controller & controller will do the rest if the things.
Now you may have a clear idea on the dispatcher servlet. Stay tuned for the next post.