使用web.xml和springmvc-servlet.xml配置文件进行Web配置和Spring MVC配置。但Spring Boot推荐使用Java配置的方式进行项目配置
创建Spring MVC的Java配置

在该配置类中使用@Configuration注解声明该类为Java配置类;使用@EnableWebMvc注解开启默认配置,如ViewResolver;使用@ComponentScan注解扫描注解的类;使用@Bean注解配置视图解析器;该类需要实现WebMvcConfigurer接口来配置Spring MVC。
创建Web的Java配置

创建Web的Java类WebConfig。该类需要实现WebApplicationInitializer接口替代web.xml文件的配置。实现该接口将会自动启动Servlet容器。在WebConfig类中需要使用AnnotationConfigWebApplicationContext注册Spring MVC的Java配置类SpringMVCConfig,并和当前ServletContext关联。最后,在该类中需要注册Spring MVC的DispatcherServlet。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    没注册的用户,请<a href="index/register">注册</a><br>
    已注册的用户,去<a href="index/login">登录</a></body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    登录页面!
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    注册页面!
</body>
</html>
package config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan("controller")
public class SpringMVCConfig implements WebMvcConfigurer {
    /**
     * 配置视图解析器
     */
    @Bean
    public InternalResourceViewResolver getViewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/jsp/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

    /**
     * 配置静态资源
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/html/**").addResourceLocations("/html/");
    }
}
package config;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

public class WebConfig implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext arg0) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMVCConfig.class);// 注册Spring MVC的Java配置类SpringMVCConfig
        ctx.setServletContext(arg0);// 和当前ServletContext关联
        /**
         * 注册Spring MVC的DispatcherServlet
         */
        Dynamic servlet = arg0.addServlet("dispatcher", new DispatcherServlet(ctx));
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
    }
}
package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * “@Controller”表示IndexController的实例是一个控制器
 * 
 * @Controller相当于@Controller("indexController") 或@Controller(value =
 *                                              "indexController")
 */
@Controller
@RequestMapping("/index")
public class IndexController {
    @RequestMapping("/login")
    public String login() {
        /**
         * login代表逻辑视图名称,需要根据Spring MVC配置 文件中internalResourceViewResolver的前缀和后缀找到对应的物理视图
         */
        return "login";
    }

    @RequestMapping("/register")
    public String register() {
        return "register";
    }
}