Spring MVC 教程

Tags: java spring mvc

1. 介绍

这篇文章简要介绍如何配置Spring MVC项目,含盖Java注解配置方式和XML配置方式。Spring MVC项目需要配置的Maven artifacts可以参考使用Maven管理Spring依赖这篇文章。

2. web.xml

下面是Spring MVC项目的示例web.xml配置文件。

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

   <display-name>Spring MVC Java Config App</display-name>

   <servlet>
      <servlet-name>mvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
      <servlet-name>mvc</servlet-name>
      <url-pattern>/</url-pattern>
   </servlet-mapping>

   <context-param>
      <param-name>contextClass</param-name>
      <param-value>
         org.springframework.web.context.support.AnnotationConfigWebApplicationContext
      </param-value>
   </context-param>
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>org.baeldung.spring.web.config</param-value>
   </context-param>
   <listener>
      <listener-class>
         org.springframework.web.context.ContextLoaderListener
      </listener-class>
   </listener>

</web-app>

因为我们使用Java注解方式配置Spring,因此我们使用AnnotationConfigWebApplicationContext作为主上下文配置类,这允许@Configuration注解类作为配置输入。 因此,我们只需要通过contextConfigLocation指定这些配置类所在的软件包即可。

这个机制是很灵活的,可以在配置中指定多个软件包,软件包之间使用空格分隔,这允许更复杂的多模块项目能够管理和使用他们自己的Spring配置类:

<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>org.baeldung.spring.web.config org.baeldung.spring.persistence.config</param-value>
</context-param>

最后,Servlet被映射到"/"上下文,意味着这个Servlet是应用的默认Servlet。当任何其他上下文没有被明确的映射到Servlet时,将由这个Servlet进行处理。

3. 使用Java注解配置Spring MVC

使用Spring 3.1引入的MVC Java注解来配置Spring MVC很简单:

@EnableWebMvc
@Configuration
public class ClientWebConfig extends WebMvcConfigurerAdapter {

   @Override
   public void addViewControllers(ViewControllerRegistry registry) {
      super.addViewControllers(registry);

      registry.addViewController("/sample.html");
   }

   @Bean
   public ViewResolver viewResolver() {
      InternalResourceViewResolver bean = new InternalResourceViewResolver();

      bean.setViewClass(JstlView.class);
      bean.setPrefix("/WEB-INF/view/");
      bean.setSuffix(".jsp");

      return bean;
   }
}

需要注意的是,使用Java注解配置时,可以注册视图控制器直接映射URL到指定的视图上,无需再他们之间配置任何控制器。

4. 使用XML配置Spring MVC

除了Java注解配置方式,我们还可以使用XML来配置Spring MVC。

<?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"
    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">

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

    <mvc:view-controller path="/sample.html" view-name="sample" />

</beans>

5. JSP视图

下面是一个简单的基础视图sample.html:

<html>
   <head></head>

   <body>
      <h1>This is the body of the sample view</h1>
   </body>
</html>

JSP视图文件保存在项目的/WEB-INF目录下,因此不能直接通过URL访问仅能被Spring相关组件(以及其他java组件)访问。

6. 结论

在这篇文档中,我们使用Java注解和XML文档配置了简单的Spring MVC项目,项目的实现代码可以从GitHub上获取,是一个Eclipse工程,很容易被导入和执行。

当项目在本地启动后,sample.html可以通过以下URL访问:

http://localhost:8080/spring-mvc-xml/sample.html

文章来源:Spring MVC Tutorial

翻译: 4byte.cn

本文链接:http://www.4byte.cn/learning/119965/spring-mvc-jiao-cheng.html