Spring MVC Final Best
Spring MVC Final Best
Spring MVC Final Best
0 MVC
Aaron Schram
Me
University of Colorado PhD Student Software Engineering Previously employment Mocapay, Inc (mobile payments) Rally Software (agile tooling) BEA (Weblogic Portal) Lockheed Martin
Project Goals
J2EE should be easier to use It is best to program to interfaces, rather than classes. Spring reduces the complexity cost of using interfaces to zero. JavaBeans offer a great way of configuring applications. OO design is more important than any implementation technology, such as J2EE. Checked exceptions are overused in Java. A platform shouldn't force you to catch exceptions you're unlikely to be able to recover from. Testability is essential, and a platform such as Spring should help make your code easier to test.
Dispatcher Servlet
Used to handle all incoming requests and route them through Spring Uses customizable logic to determine which controllers should handle which requests Forwards all responses to through view handlers to determine the correct views to route responses to Exposes all beans defined in Spring to controllers for dependency injection
Defining a Dispatcher Servlet named "spring" that will intercept all urls to this web application
Spring Configuration
By default Spring looks for a servletname servlet.xml file in /WEB-INF For the previous example we would need to create a file in /WEB-INF named spring-servlet. xml
spring-servlet.xml
spring-servlet.xml cont.
<mvc:annotation-driven /> tells Spring to support annotations like @Controller, @RequestMapping and others that simplify the writing and configuration of controllers
spring-servlet.xml cont.
Define a simple view resolver that looks for JSPs that match a given view name in the director /WEB-INF/jsp
spring-servlet.xml cont.
Configuration Done!
Woo Hoo!
Autowiring allows Spring to do the instantiation of the class you want to make use of for you. At run time you will be able to access all methods of the class without worrying about how you got the class. This is known as Dependency Injection.
This method is the default method called when /classroom or / is hit from a client. It simply forwards to a jsp named classroom.jsp located in /WEB-INF/jsp
The highlighted section above demonstrates how to accomplish RESTful URLs in the Spring MVC Framework. Using the @PathVariable annotation you can gain access to the variable passed in on the URI. This is commonly referred to as URI Templating.
What's a Model?
A Model is used in Spring MVC to pass objects from the controller tier up into the view A Model is really just a java.util.Map You can add attributes to a Model and they will be put on the request as attributes and available in the applications PageContext . In Spring you can simply pass back a Map or one of two Spring specific classes; ModelMap or Model
ModelMap Example
In the above example we use a service method to read and return a Classroom object. We make that Classroom object available to the view under the key "classroom " by calling addAttribute() on the ModelMap
Above you can see that how to get all the students in a given classroom by requesting the URL /classroom/ {id} /students. A Java List<Student> will be available to the classroom.jsp view for display
Aaron Schram
aaron.schram@colorado.edu