SpringMVC零配置创建与部署
1.创建web工程
2.pom.xml添加坐标相关配置
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<build>
<finalName>SpringBoot02</finalName>
<plugins>
<!--指定maven编译的JDK版本和编码-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
3.添加源代码
@Controller("/hello")
public class HelloController {
public String index(Model model){
model.addAttribute("msg","hello springBoot");
return "hello/index";
}
}
4添加视图
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>${msg}</h3>
</body>
</html>
5.SpringMVC配置类添加
@Configuration //配置类
@ComponentScan("com.gsau.controller") //扫描包范围
@EnableWebMvc //在设置过@Configuration注解的类上添加,表示启用mvc的环境
public class MvcConfig extends WebMvcConfigurationSupport {
/**
* 配置jsp视图解析器
*/
@Bean //表示返回的视图解析器对象交给Ioc进行维护
public InternalResourceViewResolver viewResolver(){
//得到视图解析器对象
InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
//设置视图解析器的前缀
viewResolver.setPrefix("/WEB-INF/views/");
//设置视图解析器的后缀
viewResolver.setSuffix(".jsp");
//返回视图解析器
return viewResolver;
}
}
6.入口文件代码添加
/**
* 当容器启动时,会调用接口中对应的onStartup方法
* 替代了web.xml文件
*/
public class WebInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
//基于java配置类加载Spring的上下文环境
AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
//注册MvcConfig配置类
ctx.register(MvcConfig.class);
//设置ServletContext的上下文
ctx.setServletContext(servletContext);
//设置转发器
ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
//设置路径
servlet.addMapping("/");
//设置容器启动时自动加载servlet
servlet.setLoadOnStartup(1);
}
}
如果项目中存在静态资源,Handler放行处理该如何配置,定义的拦截器怎么应用,此时继承WebMvcConfigurationSupport父类方法,重写相关方法即可
@Configuration //配置类
@ComponentScan("com.gsau.controller") //扫描包范围
@EnableWebMvc //在设置过@Configuration注解的类上添加,表示启用mvc的环境
public class MvcConfig extends WebMvcConfigurationSupport {
/**
* 配置jsp视图解析器
*/
@Bean //表示返回的视图解析器对象交给Ioc进行维护
public InternalResourceViewResolver viewResolver(){
//得到视图解析器对象
InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
//设置视图解析器的前缀
viewResolver.setPrefix("/WEB-INF/views/");
//设置视图解析器的后缀
viewResolver.setSuffix(".jsp");
//返回视图解析器
return viewResolver;
}
/**
* 静态资源 handler不进行处理,直接响应到客户端
*/
@Override
protected void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
/**
* 配置拦截器
*/
@Override
protected void addInterceptors(InterceptorRegistry registry) {
super.addInterceptors(registry);
}
}