搭建Spring MVC Web项目----JavaConfig
和 搭建 Spring MVC WEB项目----XML配置 不同的是,这里 将 用Java的 而不是 xml配置文件的方式来搭建Spring MVC
搭建Spring MVC开发环境 最重要的有三步
1. 添加Spring MVC 依赖jar包 2. 配置DispacherServlet 3. 配置Spring MVC
1.搭建Spring MVC 环境 都是一样的
先创建 基于Maven 的 WEB 项目,再添加Spring 和 Spring MVC 依赖 以引入jar包
2.配置Spring MVC ---2.1 使用java 配置DispatcherServlcet
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() { //指定配置类
return new Class<?>[] {RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() { // 指定配置类
return new Class<?>[] {WebConfig.class};
}
@Override
protected String[] getServletMappings() { // 将DispatcherServlet映射到 "/"
return new String[] { "/" };
}
}
PS: 以上配置解释 AbstractAnnotationConfigDispatcherServletInitializer剖析
扩展AbstractAnnotationConfigDispatcherServletInitializer的任意类 都会自动地配置DispatcherServlet 和 Spring 应用上下文,Spring 应用上下文 会位于 应用程序的Servlet上下文之中。
1.配置DispatcherServlet getServletMappings()方法 会将一个或多个路径映射到DispatcherServlet
2.当DispatcherServlet启动的时候,它会创建 应用上下文,并加载配置文件或配置类中所声明的bean 。在 Spring Web应用中 有两个应用上下文 (1)DispatcherServlet创建的应用上下文,会加载包含Web组件的bean,如控制器,视图解析器以及处理器映射。 (2)ContextLoaderListener创建的应用上下文 会加载应用中的其他bean,通常是应用后端的中间层和数据层组件。 AbstractAnnotationConfigDispatcherServletInitializer会同时创建DispatcherServlet和ContextLoaderListener
getServletConfigClasses方法返回的带有@Configuration注解的 类将会用来定义DispatcherServlet应用上下文中的bean。
getRootConfigClasses()方法返回的带有@Configuration注解的类将会用来 配置ContextLoaderListener创建的应用上下文中的bean。
2.配置Spring MVC ---2.2 启用Spring MVC 启动包扫描 并简单配置 视图解析器 和 静态资源的处理
这儿就是 搭建 Spring MVC WEB项目----XML配置的 2.配置Spring MVC ----2.2 创建Spring MVC 的配置文件
1.启用组件扫描 @ComponentScan 这个一定要指定基础包,否则会找不到controller
2.启用Spring MVC 在JavaConfig中,只需要在配置类上使用 @EnableWebMvc注解启用Spring MVC。在xml配置文件中 可以使用<mvc:annotation-driven> 来启用 注解驱动的Spring MVC
3.配置视图解析器:它会查找JSP文件,在查找的时候,它会在视图名称上加一个特定的前缀和后缀(例如,名为home的视图将会解析为/WEB-INF/views/home.jsp)
4. 静态资源的处理 要求DispatcherServlet将对静态资源的请求转发到Servlet容器中默认的Servlet上,而不是使用DispatcherServlet本身来处理此类请求 这个“/WEB-INF/views/” 否则会找不到.jsp文件 会报404
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("com") // 启用组件扫描
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() { // 配置 试图解析器
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
viewResolver.setExposeContextBeansAsAttributes(true);
return viewResolver;
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { //配置静态资源的处理
configurer.enable();
}
}
这个也一定要指定基础包,否则会找不到controller
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com") //1.启用组件扫描 这个一定要指定基础包,否则会找不到controller
public class RootConfig {
}
3. 创建Controller 和 View 同搭建 Spring MVC WEB项目----XML配置
4 构建项目并部署项目到Tomcat服务器,并启动tomcat 同搭建 Spring MVC WEB项目----XML配置