需要 servlet 和 spring-webmvc 依赖
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>4.0.1version>
<scope>providedscope>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.2.20.RELEASEversion>
dependency>
这里用一个 UserController 类为例,其中有一个 save 方法
在类上需要注解 @Controller,使 Spring 能够扫描到
类内的操作方法需要注解 @RequestMapping 来设置访问路径,以及 @ResponseBody 注解设置返回类型(但这个注解是无内容的)
@Controller
public class UserController {
// 设置当前操作的访问路径
@RequestMapping("/save")
// 设置当前操作的返回值类型
@ResponseBody
public String save() {
System.out.println("user save...");
return "Hello MVC!";
}
}
创建 springmvc 的配置文件,加载 controller 对应的 bean
需要注解 @Configuration 和 @ComponentScan 设置要扫描的包
@Configuration
@ComponentScan("com.mzz.controller")
public class SpringMvcConfig {
}
要继承 AbstractDispatcherServletInitializer 抽象类,并重写其中的三个方法
public class ServletContainerInitConfig extends AbstractDispatcherServletInitializer {
// 加载 springMVC 容器配置
@Override
protected WebApplicationContext createServletApplicationContext() {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(SpringMvcConfig.class); // 注册 springmvc 配置类
return ctx;
}
// 设置哪些请求归属 springMVC 处理
@Override
protected String[] getServletMappings() {
return new String[]{"/"}; // 所有请求
}
// 加载 spring 容器配置,可先返回空
@Override
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
最后用 Tomcat 或者 Tomcat 的 Maven 插件启动即可