
使用简单,开发便捷(相比于Servlet)
灵活性强

org.springframework spring-webmvc 5.1.38 //不要使用6及以上,javaxservlet不支持
@Configuration
@ComponentScan("com.study.controller") //加载对应文件夹下的bean
public class SpringMvcConfig {
}
设定请求方法的返回值为字符串类型,并返回自定义json数据
@Controller //注解为可供Spring调用的bean
public class UserController {
@RequestMapping("/save")//定义映射路径
@ResponseBody //定义为响应体,告诉系统我不是页面
public String save(){
System.out.println("user save ....");
return "{'info':'springmvc'}"; //将json类型返回
}
}
AbstractDispatcherServletInitializer类是SpringMVC提供的快速初始化Web3.0容器的抽象类
AbstractDispatcherServletInitializer提供三个接口方法供用户实现
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
@Override
//Servlet容器初始化,加载Spring的配置类
创建Servlet容器时,加载SpringMVC对应的bean并放入WebApplicationContext对象范围中,而WebApplicationContext的作用范围为ServletContext范围,即整个web容器范围
protected WebApplicationContext createServletApplicationContext() {
AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
ctx.register(SpringMvcConfig.class);
return ctx;
}
@Override
设定SpringMVC对应的请求映射路径,设置为/表示拦截所有请求,任意请求都将转入到SpringMVC进行处理
protected String[] getServletMappings() {
//表示所有的请求都交给SpringMVC处理
return new String[]{"/"};
}
@Override
如果创建Servlet容器时需要加载非SpringMVC对应的bean,使用当前方法进行,使用方式同createServletApplicationContext()
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
使用Tomcat运行时,如果其他都没有问题,但是运行不出来,可能是tomcat版本太低,
用高一个版本的tomcat就可以解决了



也就是排除了注解类别为Controller的bean


postman这款软件可以很好的处理请求与响应,很适合用来测试
因为我们主要是异步调用,所以主要是json

映射路径这一块,不同模块可能会有同名的方法,为了区分,我们需要在模块类上加一个映射路径,这样映射路径就成了/user/save 就不会跟/book/save冲突了
、








com.fasterxml.jackson.core
jackson-databind
2.9.0

@EnableWebMvc注解功能强大,该注解整合了多个功能,此处仅使用其中一部分功能,即json数据进行自动类型转换json数据

Json数据在请求体中,所以我们的注解换成@RequestBody
json对象

json数组



用@DateTimeFormat来设置读取日期格式


文本数据
json数据

响应数据的时候,要用@ResponseBody告诉服务器这个不是页面
数据我们要什么数据 就返回什么类型的数据

因为有些资源路径我们是一样的,所以我们通过行为动作来区分相同的访问地址


{id} 为得到输入的id,这样下面的参数则为传过来的id值
@PathVariable 意思id从路径上取


可以将RequestMapping提取出来到类上
直接把原本要写的RequstMapping换成对应的方法Maping 这样我们就可以不写method了
但是有些需要传参数的,还是要把参数带上
这样我们就简化完成啦:


因为我们的路径都会被SpringMVC所以我们要设置放行