购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

Spring MVC程序可采用Java配置方式和XML配置方式创建。

使用Java配置方式创建一个Spring MVC程序的步骤如下。

1.创建一个新的Maven项目

(1)启动Eclipse,创建一个新的Maven项目。

(2)在菜单栏中,选择“File”→“New”→“New Maven Project”。

(3)选中“Create a simple project”复选框,单击“Next”按钮。

(4)在“Group Id”文本框中,输入“com.jeff”,在“Artifact Id”文本框中,输入“hello”,从“Packaging”下拉菜单中选择“war”,单击“Finish”按钮,Maven项目的相关信息如图2-1所示。

▲图2-1 Maven项目的相关信息

2.使用Maven将Spring及其依赖的组件自动添加到Maven项目中

打开Maven项目的根目录中的pom.xml配置文件,添加Spring依赖的组件,如Servlet API、Spring Core和Spring MVC等。Maven会将Spring及其依赖的组件自动下载到Eclipse项目的Maven Dependencies目录中。

  <build>
     <finalName>Spring</finalName>
       <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-war-plugin</artifactId>
                  <version>2.5</version>
              <configuration>
                 <failOnMissingWebXml>false</failOnMissingWebXml>
              </configuration>
          </plugin>
      </plugins>
  </build>

<dependencies>
  <dependency>
     <groupId>Javax.servlet</groupId>
     <artifactId>Javax.servlet-api</artifactId>
     <version>3.1.0</version>
     </dependency>

    <dependency>
          <groupId>org.Springframework</groupId>
          <artifactId>Spring-context</artifactId>
          <version>4.3.14.RELEASE</version>
     </dependency>

          <dependency>
          <groupId>org.Springframework</groupId>
          <artifactId>Spring-Webmvc</artifactId>
          <version>4.3.14.RELEASE</version>
          </dependency>
</dependencies>

3.创建配置类AppConfig

AppConfig是一个Spring配置类,它是一个标准的Java类。右击Maven项目文件,选择“New”→“Package”,单击“New Java package”,输入“com.jeff.config”。然后,在新建的包下,创建类,类名为“AppConfig”。在该类中,添加如下代码。

import org.Springframework.context.annotation.ComponentScan;
import org.Springframework.context.annotation.Configuration;
import org.Springframework.Web.servlet.config.annotation.EnableWebMvc;
@Configuration    //声明为Spring配置类
@EnableWebMvc  //这使Spring能够接受和处理Web请求 
@ComponentScan (basePackages = {"com.jeff.controller"}) //扫描指定包 
public class AppConfig {

}

4.在com.jeff.config包中,创建ServletInitializer类

ServletInitializer类是Spring的服务端程序Servlet的配置类,它取代了web.xml配置文件。它将由SpringServletContainerInitializer类自动检测,可由任何Servlet自动调用。

ServletInitializer类扩展了AbstractAnnotationConfigDispatcherServletInitializer抽象类和实现所需的方法。

import org.Springframework.Web.servlet. support. 
AbstractAnnotationConfig DispatcherServletIn itializer;    

public class ServletInitializer extends AbstractAnnotationConfig Dispatcher
ServletInitializer {
    @Override 
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[0];
    } 
    @Override
    protected Class<?>[] getServletConfigClasses() {//声明了Spring配置类
        return new Class<?>[]{AppConfig.class};
    }

    @Override
    protected String[] getServletMappings() {//声明了Servlet根路径的URL
        return new String[]{"/"};
    }
}

5.创建一个控制器类,返回“Hello, world!”信息

控制器类是处理HTTP请求的方法的类,带@Controller注解。每个处理程序都使用@RequestMapping进行注解,并提供了调用信息。

在com.jeff.controller包中,创建了一个控制器类HelloWorld和方法hello(),代码如下。

import org.Springframework.stereotype.Controller;
import org.Springframework.Web.bind.annotation.RequestMapping;
import org.Springframework.Web.bind.annotation.ResponseBody;

@Controller
public class HelloWorld {
    @RequestMapping("hello")
    @ResponseBody
    public String hello() {
    return "Hello, world!";
    }
}

使用/hello路由的请求将调用hello()方法。

6.运行Spring Web应用程序

具体操作如下。

(1)在Eclipse的“Package Explorer”视图中,选择“hello”文件夹。在菜单栏中,选择“Run”→“Maven install”,在target目录下生成spring.war文件。

(2)将该文件复制到Tomcat的webapps文件夹中。

(3)启动Tomcat,Tomcat将检测到sping.war文件,并自动加载应用程序。

(4)在浏览器中访问http://localhost:8080/spring/hello,程序运行结果如图2-2所示。

▲图2-2 运行结果

http://localhost:8080/spring/hello的组成部分介绍如下。

http是超文本传输协议。

localhost是应用程序服务器所在机器域名或IP地址。

8080是可以访问应用程序服务器的端口号。

spring是Web应用程序的上下文。

/hello是请求映射值。

XML配置方式创建Spring MVC程序的步骤如下。

(1)创建一个新的Maven项目。

(2)使用Maven将Spring及其依赖的组件添加到Maven项目中。打开pom.xml文件并将以下JAR依赖包添加到Maven项目中。注意,此处与2.2.1节的配置略有不同,具体代码如下。

<build> 
   <finalName>Springxml</finalName>
     <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.5</version>
        </plugin>
    </plugins>
</build>

<properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
</properties>

<dependencies>
<dependency>
       <groupId>Javax.servlet</groupId>
       <artifactId>Javax.servlet-api</artifactId>
       <version>3.1.0</version>
</dependency>

<dependency>
        <groupId>org.Springframework</groupId>
        <artifactId>Spring-context</artifactId>
        <version>4.3.14.RELEASE</version>
    </dependency>

      <dependency>
        <groupId>org.Springframework</groupId>
        <artifactId>Spring-Webmvc</artifactId>
        <version>4.3.14.RELEASE</version>
        </dependency>
</dependencies>

(3)创建新的Spring配置文件web.xml。在src/main/webapp文件夹中新建目录WEB-INF,然后在新建的目录中创建配置文件web.xml。web.xml文件的内容如下。

<?xml version="1.0" encoding="UTF-8"?>
<Web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://xmlns.jcp.org/xml/ns/Javaee" 
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/Javaee 
      http://xmlns.jcp.org/xml/ns/Javaee/Web-app_3_1.xsd" 
      id="WebApp_ID" version="3.1">
      <!-- 配置加载Spring文件的监听器-->
     <!-- 配置文件所在位置 -->

    <!-- 编码过滤器 -->
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>
             org.Springframework.Web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

    <!-- 配置Spring MVC前端核心控制器 -->
    <servlet>
        <servlet-name>Springmvc</servlet-name>
        <servlet-class> org.Springframework.Web.servlet.DispatcherServlet</
        servlet-class>
            <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/Springmvc-config.xml</param-value>
        </init-param>
        <!-- 配置服务器启动后立即加载Spring MVC配置文件 -->
    <!--将使用名为contextConfigLocation的参数初始化,该参数包含XML配置的路径 -->

            <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>Springmvc</servlet-name>
    <!--/:拦截所有请求(除JSP)-->
    <url-pattern>/</url-pattern>

通过Servlet映射,我们将Servlet类绑定到一个URL模式,该模式指定它将处理哪些HTTP请求。load-on-startup是一个整数值,指定多个Servlet的加载顺序。因此,如果需要声明多个Servlet,则可以定义它们的初始化顺序。

在web.xml配置文件中配置Spring监听器ContextLoaderListener并启动Web容器后,将自动装配ApplicationContext接口的配置信息,若找不到配置信息,那么应用程序会抛出配置信息异常。

<listener>
      <listener-class>org.Springframework.Web.context.ContextLoaderListener</listener
      -class>
 </listener>

(4)创建新的Spring配置文件springmvc-config.xml。

<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"
  xmlns:tx="http://www.Springframework.org/schema/tx"
  xsi:schemaLocation="http://www.Springframework.org/schema/Beans 
  http://www.Springframework.org/schema/Beans/Spring-Beans-4.3.xsd 
  http://www.Springframework.org/schema/mvc 
  http://www.Springframework.org/schema/mvc/Spring-mvc-4.3.xsd 
  http://www.Springframework.org/schema/context 
  http://www.Springframework.org/schema/context/Spring-context-4.3.xsd">
        <!-- 配置包扫描器,扫描@Controller注解的类 -->
        <context:component-scan base-package="com.jeff.hellowithxml" />

        <!-- 加载注解驱动 -->
        <mvc:annotation-driven />
</Beans>

(5)创建一个控制类Hello WorldXml,返回“Hello, world!”信息。

package com.jeff.hellowithxml;

import org.Springframework.stereotype.Controller;
import org.Springframework.Web.bind.annotation.RequestMapping;
import org.Springframework.Web.bind.annotation.ResponseBody;

@Controller
Public class HelloWorldXml {
        @RequestMapping("hello")
        @ResponseBody
        Public String hello() {
        return "Hello, world!";
        }
}

(6)运行Spring Web应用程序。浏览器中访问http://localhost:8080/springxml/hello,程序运行结果与图2-2一致。 zPDR6/Lg7/iE9qoNz+PwKlNjlPaRlkfUZoujpFI361ekBvzZ3AdpvSz+oQpyEh6L

点击中间区域
呼出菜单
上一章
目录
下一章
×