首页 > 代码库 > 最小可用 Spring MVC 配置

最小可用 Spring MVC 配置

技术分享

 【最小可用 Spring MVC 配置】

1、导入有概率用到的JAR包

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>spittr</groupId>  <artifactId>spittr</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>war</packaging>        <dependencies>        <!-- servlet -->        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>servlet-api</artifactId>            <version>2.5</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>javax.servlet-api</artifactId>            <version>3.1.0</version>            <scope>provided</scope>        </dependency>        <!-- jSTL-->        <dependency>            <groupId>org.apache.taglibs</groupId>            <artifactId>taglibs-standard-spec</artifactId>            <version>1.2.5</version>        </dependency>        <dependency>            <groupId>org.apache.taglibs</groupId>            <artifactId>taglibs-standard-impl</artifactId>            <version>1.2.5</version>        </dependency>        <!-- Spring -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>4.3.9.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>4.3.5.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-core</artifactId>            <version>4.3.7.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-beans</artifactId>            <version>4.3.9.RELEASE</version>        </dependency>        <!-- Spring MVC-->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-web</artifactId>            <version>4.3.7.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>4.3.7.RELEASE</version>        </dependency>        <!-- log4j -->        <dependency>            <groupId>log4j</groupId>            <artifactId>log4j</artifactId>            <version>1.2.17</version>        </dependency>        <!-- junit -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>        </dependency>        <!-- aspectj -->        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjrt</artifactId>            <version>1.8.10</version>        </dependency>        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjweaver</artifactId>            <version>1.8.10</version>        </dependency>    </dependencies>      <build>    <sourceDirectory>src</sourceDirectory>    <plugins>      <plugin>        <artifactId>maven-compiler-plugin</artifactId>        <version>3.5.1</version>        <configuration>          <source>1.8</source>          <target>1.8</target>        </configuration>      </plugin>      <plugin>        <artifactId>maven-war-plugin</artifactId>        <version>3.0.0</version>        <configuration>          <warSourceDirectory>WebContent</warSourceDirectory>        </configuration>      </plugin>    </plugins>  </build></project>

 

2、COPY配置类

配置类 A

package spittr.config;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;// 拓展上面那个类的任意类都会自动配置 Spring 应用上下文和 DispatcherServletpublic class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {    protected Class<?>[] getRootConfigClasses() {        return new Class<?>[] { RootConfig.class }; // 指定配置类    }    protected Class<?>[] getServletConfigClasses() {        return new Class<?>[] { WebConfig.class }; // 指定配置类    }    protected String[] getServletMappings() {        return new String[] { "/" }; // 将 DispatcherServlet 映射到“/”    }}

配置类 B

package spittr.config;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.ComponentScan.Filter;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;import org.springframework.web.servlet.config.annotation.EnableWebMvc;@Configuration@ComponentScan(basePackages = {"spittr"},    excludeFilters = {@Filter(type = FilterType.ANNOTATION, value = http://www.mamicode.com/EnableWebMvc.class)})public class RootConfig {}

配置类 C

package spittr.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.view.InternalResourceViewResolver;@Configuration@EnableWebMvc // 启用 Spring MVC@ComponentScan("spittr.web")public class WebConfig extends WebMvcConfigurerAdapter {    @Bean    public ViewResolver viewResolver() { // 配置 JSP 视图解析器        InternalResourceViewResolver resolver = new InternalResourceViewResolver();        resolver.setPrefix("/WEB-INF/views/");        resolver.setSuffix(".jsp");        resolver.setExposeContextBeansAsAttributes(true);        return resolver;    }    @Override    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {        configurer.enable(); // 配置静态资源的处理    }}

 

3、编写一个最简单的 Controller

package spittr.web;import static org.springframework.web.bind.annotation.RequestMethod.*;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controller // 基于 @Component 注解public class HomeController {    @RequestMapping(value = "/", method=GET)    public String home() {        return "home";    }}

 技术分享

 

4、手动测试

技术分享

 一切正常。。。

最小可用 Spring MVC 配置