reset password

Spring MVC

Make the following changes to the Maven web application we created in the previous step:

1. Add the dependency org.springframework:spring-webmvc:3.2.8.RELEASE

At the time of writing the latest Spring Framework release is 4.1.4. The reason we use 3.2.8 instead is that later we'll add Spring Security which still depends on Spring 3.2.8. If you don't plan to use Spring Security, feel free to use the latest Spring Framework; otherwise be aware that Spring Security usually lags a little behind the main framework release.

2. Create a folder WEB-INF under /src/main/webapp, then create a file web.xml under WEB-INF with the following content:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0" id="springmvc">


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

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

</web-app>

This web.xml file specifies a Spring servlet DispatcherServlet which will be loaded when the web application is started (notice the <load-on-startup>), and this servlet is responsible for initializing the Spring servlet context, i.e. creating all the beans specified in a bean configuration file. The default name for the bean configuration file is <dispatcher-servlet-name>-servlet.xml under the WEB-INF folder. In our case, the name of the DispatcherServlet is springmvc (notice the <servlet-name>) so the bean configuration file is springmvc-servlet.xml. During operation DispatcherServlet also serves as the front controller that dispatches requests to the proper controller based on controller URL mapping.

3. Create the Spring bean configuration file springmvc-servlet.xml under WEB-INF as follows:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd  
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.2.xsd">

    <mvc:annotation-driven />

    <context:component-scan base-package="springmvc.web" />

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

</beans>

<mvc:annotation-driven /> enables request dispatching to @Controllers among some other things. <context:component-scan> finds all the annotated beans in springmvc.web and its sub-packages. The InternalResourceViewResolver maps a view name to a JSP file. It has two properties: prefix and suffix, so a view name like "home" would be mapped to a JSP file /WEB-INF/jsp/home.jsp.

And this is pretty much it - your web application is now a Spring MVC application. You can create a controller and a view like the following:

And after that you can run the project and check if it works at the URL http://localhost:8080/springmvc/home.html .

This page has been viewed 26959 times.