Introduction to Spring MVC

The Spring MVC framework provides model-view-controller architecture and also provides many components that can be used to develop web applications. 

 

Model-view-controller (MVC)

  • Model-view-controller (MVC) is a software architectural pattern for implementing web applications with user interfaces.

  • MVC decouples business logic from UIs.

  • MVC divides a given software application into three interconnected parts called Model, View and Controller, so as to separate internal representations of information from the ways that information is presented to or accepted from the user.

  • MVC design defines the interactions between Model, View and Controller as:

    • Controller 

      • receives requests from users

      • send commands to the model to update the model's state.

      • send commands to its associated view to change the view's presentation of the model.

    • Model

      • encapsulates and stores application data that will be shown in the UI

      • data stored in model is retrieved according to commands from the controller and displayed in the view.

    • View

      • generates an output presentation to the user based on changes in the model.

      • should not have any business logic.

 

Overview of Spring MVC Request Handling

  • In Spring MVC, models usually consist of domain objects.

    • These domain objects are processed by the service layer and persisted by the persistence layer.

  • Views can be a JSP template written with Java Standard Tag Library (JSTL) or even PDF files, Excel files, RESTful web services or a Rich Internet Application (RIA) framework such as Adobe Flex.

    • One of the application I had worked with had Spring, Adobe Flex and Hibernate, used together.

  • Controller is the most important component and is usually configured in the application deployment descriptor web.xml or through annotations.

    • The controller implements the front controller design pattern and often called as Dispatcher Servlet.

    • Every web request must go through the controller. 

    • A controller map requests to a handler method by one or more handler mappings. 

      • When a controller receives a request, it uses the handler mappings to find the right handler method.

    • After a handler method processes the request, it return a logical view name.

      • If the return type of the handler method is void, a default logical view name based on a handler method’s or controller’s name may be used.

    • A view resolver resolves a logical view name into a specific view implementation.

      • The view implementation renders the objects passed by controller's handler method.

 

Spring MVC general request handling diagram

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)