ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【SpringMVC】知识汇总

【SpringMVC】知识汇总 SpringMVC短暂回来,有时间就会更新博客文章目录SpringMVC前言一、第一章 SpingMVC概述二、SpringMVC常用注解1. @Controller注解2. @RequestMapping注解3. @ResponseBody注解4. @RequestParam5. @EnableWebMvc注解介绍6. @RequestBody注解介绍7. @RequestBody与@RequestParam区别8. @DateTimeFormat注解8. @ComponentScan注解9. @PathVariable注解10. @RequestBody、@RequestParam、@PathVariable区别和应用11.@GetMapping @PostMapping @PutMapping @DeleteMapping注解12.@RestController注解三、请求参数3.1 发送普通类型参数3.1.1 GET请求传递普通参数3.1.2 POST请求传递普通参数3.1.3 POST请求中文乱码处理3.2 五种类型参数传递问题导入3.2.1 五种类型参数介绍3.2.2 普通参数3.2.3 POJO类型参数3.2.4 嵌套POJO类型参数3.2.5 数组类型参数3.2.6 集合类型参数3.3 json数据参数传递问题导入3.3.1 json数据参数介绍3.3.2 传递json普通数组3.3.3 传递json对象3.3.4 传递json对象数组四 日期类型参数传递问题导入4.1 代码4.2 工作原理五、响应问题导入5.1响应页面【了解】5.2 文本数据【了解】5.3 json数据【重点】六、REST风格6.1 REST简介问题导入6.1.1 REST介绍6.1.2 RESTful介绍6.2 RESTful入门案例6.3 REST快速开发【重点】6.3.1 代码中的问题6.3.2 Rest快速开发6.4案例: 基于RESTful页面数据交互的案例6.4.1 案例效果6.4.2 环境准备6.4.3 代码实现6.4.4 测试结果前言知识汇总,后续会慢慢补充一、第一章 SpingMVC概述SpringMVC是一种基于Java实现MVC模型的轻量级Web框架,使用简单,开发便捷,灵活性强。二、SpringMVC常用注解1. @Controller注解名称:@Controller类型:类注解位置:SpringMVC控制器类定义上方作用:设定SpringMVC的核心控制器bean范例@ControllerpublicclassUserController{}2. @RequestMapping注解名称:@RequestMapping类型:方法注解、类注解位置:SpringMVC控制器方法定义上方或者类上作用:设置当前控制器方法请求访问路径,如果设置在类上,则是统一设置当前控制器方法请求访问路径的前缀范例@Controller//类上方配置的请求映射与方法上面配置的请求映射连接在一起,形成完整的请求映射路径@RequestMapping("/user")publicclassUserController{//请求路径映射@RequestMapping("/save")//此时save方法的访问路径是:/user/save@ResponseBodypublicStringsave(){System.out.println("user save ...");return"{'module':'user save'}";}}3. @ResponseBody注解名称:@ResponseBody类型:方法注解位置:SpringMVC控制器方法定义上方作用:设置当前控制器方法响应内容为当前返回值,无需解析范例@RequestMapping("/save")@ResponseBodypublicStringsave(){System.out.println("user save ...");return"{'info':'springmvc'}";}4. @RequestParam名称:@RequestParam类型:形参注解位置:SpringMVC控制器方法形参定义前面作用:绑定请求参数与处理器方法形参间的关系参数:required:是否为必传参数defaultValue:参数默认值范例://普通参数:请求参数名与形参名不同时,使用@RequestParam注解关联请求参数名称与形参名称之间的关系@RequestMapping("/commonParamDifferentName")@ResponseBodypublicStringcommonParamDifferentName(@RequestParam("name")StringuserName,intage){System.out.println("普通参数传递 userName == "+userName);System.out.println("普通参数传递 age == "+age);return"{'module':'common param different name'}";}5. @EnableWebMvc注解介绍名称:@EnableWebMvc类型:配置类注解位置:SpringMVC配置类定义上方作用:开启SpringMVC多项辅助功能范例:@Configuration@ComponentScan("com.xx.controller")@EnableWebMvcpublicclassSpringMvcConfig{}6. @RequestBody注解介绍名称:@RequestBody类型:形参注解位置:SpringMVC控制器方法形参定义前面作用:将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次范例:@RequestMapping("/listParamForJson")@ResponseBodypublicStringlistParamForJson(@RequestBodyListStringlikes){System.out.println("list common(json)参数传递 list == "+likes);return"{'module':'list common for json param'}";}7. @RequestBody与@RequestParam区别区别@RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】@RequestBody用于接收json数据【application/json】应用后期开发中,发送json格式数据为主,@RequestBody应用较广如果发送非json格式数据,选用@RequestParam接收请求参数8. @DateTimeFormat注解名称:@DateTimeFormat类型:形参注解位置:SpringMVC控制器方法形参前面作用:设定日期时间型数据格式属性:pattern:指定日期时间格式字符串范例://日期参数 http://localhost:80/dataParam?date=2088/08/08date1=2088-08-18date2=2088/08/28 8:08:08//使用@DateTimeFormat注解设置日期类型数据格式,默认格式yyyy/MM/dd@RequestMapping("/dataParam")@ResponseBodypublicStringdataParam(Datedate,@DateTimeFormat(pattern="yyyy-MM-dd")Datedate1,@DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss")Datedate2){System.out.println("参数传递 date == "+date);System.out.println("参数传递 date1(yyyy-MM-dd) == "+date1);System.out.println("参数传递 date2(yyyy/MM/dd HH:mm:ss) == "+date2);return"{'module':'data param'}";}8. @ComponentScan注解名称:@ComponentScan类型:类注解位置:SpringMVC控制器方法定义上方作用:设置当前控制器方法响应内容为当前返回值,无需解析属性:excludeFilters:排除扫描路径中加载的bean,需要指定类别(type)与具体项(classes) includeFilters:加载指定的bean,需要指定类别(type)与具体项(classes)范例:@RequestMapping("/save")@ResponseBody@Configuration@ComponentScan(value="com.xx",excludeFilters=@ComponentScan.Filter(type=FilterType.ANNOTATION,classes=Controller.class))publicclassSpringConfig{}9. @PathVariable注解名称:@PathVariable类型:形参注解位置:SpringMVC控制器方法形参定义前面作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应范例:10. @RequestBody、@RequestParam、@PathVariable区别和应用区别@RequestParam用于接收url地址传参或表单传参@RequestBody用于接收json数据@PathVariable用于接收路径参数,使用{参数名称}描述路径参数应用后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广如果发送非json格式数据,选用@RequestParam接收请求参数采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值11.@GetMapping @PostMapping @PutMapping @DeleteMapping注解名称:@GetMapping @PostMapping @PutMapping @DeleteMapping类型:方法注解位置:基于SpringMVC的RESTful开发控制器方法定义上方作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求、@PostMapping对应Post请求、@PutMapping对应Put请求、@DeleteMapping对应DELETE请求属性:value(默认):请求访问路径12.@RestController注解名称:@RestController类型:类注解位置:基于SpringMVC的RESTful开发控制器类定义上方作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能三、请求参数请求方式有两种,分别是GET请求和POST请求3.1 发送普通类型参数3.1.1 GET请求传递普通参数普通参数:url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数//普通参数:请求参数与形参名称对应即可完成参数传递@RequestMapping("/commonParam")@ResponseBodypublicStringcommonParam(Stringname,intage){System.out.println("普通参数传递 name == "+name);System.out.println("普通参数传递 age == "+age);return"{'module':'common param'}";}3.1.2 POST请求传递普通参数普通参数:form表单post请求传参,表单参数名与形参变量名相同,定义形参即可接收参数//普通参数:请求参数与形参名称对应即可完成参数传递@RequestMapping("/commonParam")@ResponseBodypublicStringcommonParam(Stringname,intage){System.out.println("普通参数传递 name == "+name);System.out.println("普通参数传递 age == "+age);return"{'module':'common param'}";}3.1.3 POST请求中文乱码处理POST请求传递的参数如果包含中文那么就会出现中文乱码问题,乱码问题处理如下:在加载SpringMVC配置的配置类中指定字符过滤器。publicclassServletContainersInitConfigextendsAbstractAnnotationConfigDispatcherServletInitializer{protectedClass?[]getRootConfigClasses(){returnnewClass[0];}protectedClass?
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进