SpringMVC的控制器方法的一些要点

一、控制器类的注解

1、SpringMVC的控制器类,一般用注解@Controller来注释,代表该类是控制器类。

2、如果整个控制器都采用响应体数据返回,那么可以用组合注解 @RestController。


二、控制方法的注解

(一)映射请求路径
1、@RequestMapping注解
加在方法前面,或者类的前面,默认是匹配GET请求方法。

默认路径是根路径"/",允许在注解中设置路径。

2、@GetMapping
加在方法前面,专门映射GET方法请求。

3、@PostMapping
加在方法前面,专门映射Post方法请求。

4、@DeleteMapping
加在方法前面,专门映射Delete方法请求。

5、@PutMapping
专门映射Put方法请求。

注意:它们都可以设置映射路径。
如果类的@RequestMapping注解也有路径,那么最终访问要以加上类设置的路径。


(二)映射请求数据,赋值给方法的参数
1、@RequestParam
该注解通过设置name属性,和表单的name值对应,把URL路径后请求参数或者表单提交的域赋值给注释的方法参数。

2、@RequestPart
该注解获取表单中file类型的文件域,赋值给Part类型的对象,用来读取用户上传的文件。

3、@RequestBody
该注解获取请求体的多个属性值,赋值给一个普通对象。

普通对象的属性名和请求体的属性名是相同的。

4、获取URL地址的路径参数
在用@RequestMapping和其他映射注解中定义占位符: “/路径{占位符}”

把@PathVariable(“占位符”)加到该方法的对应参数上,一般是String类型,如果是整型,使用int类型。

注意:占位符要保持相同才能获取用户访问的路径参数。

例如定义 “/user/{id}”,那么用户访问"/user/88",后台就能用"id"得到请求值88。


5、@ModelAttribute
加在控制器的某个方法上,用来统一设置某些属性,或者某些操作。

每个控制器方法执行前都要执行该注解修饰的方法。


(三)响应JSON或者XML格式的数据
@ResponseBody
该注解把控制器方法的返回值转成JSON或者XML类型的数据,放在响应体中返回给用户。

实际可以在@RequestMapping的contentType属性设置接受的请求类型。


三、控制器方法接受的传参类别

(一)常用参数:
1、HttpServletRequest
这是Servlet的封装请求类,可以在控制器方法里添加。

2、HttpServletResponse
此类型是Servlet的封装响应类,可以用户自定义响应数据。

3、HttpSession
此类型是会话类,代表服务器和客户端的一次会话。
实际可以设置会话属性,用来维持登录状态。

4、Model 数据模型
这是SpringMVC提供的类,用来设置返回的原生数据。

5、ModelMap 数据集合。
这是SpringMVC提供的集合里,能设置多个返回的属性。

6、ModelAndView 封装数据和模型名。
用来设置视图名,设置显示的模型数据。

有addObject()方法设置模型。
有addView()方法设置视图名字。

7、BindingResult 绑定结果。
该类型的对象是用来获取URL中请求的属性。


(二)获取请求参数
1、获取URL请求参数

使用基本类型形参接收。
方法中每个变量接收一个URL参数。

适合接受2个以内的请求路径参数。

注意:控制器形参的名字和前端传参的名字相同,数据类型也要对应,防止转换错误。

如果名字不同,用@RequestParam的name属性来修改到相同。


2、使用普通对象类型。
2.1、表单接收:
用一个自定义对象接收和对象属性相同的表单属性值。

对象中的属性名和表单中的name值要相同,否则绑定值为null。

2.2、JSON类型:
如果对方传值的是请求体,并且是XML或者JSON格式的,就需要使用对象来映射和绑定,并添加注解@RequestBody。

2.3、如果传值是表单的checkbox类型,表单域的name属性值相同,控制器需要使用数组来接收,例如 Integer[] 或者String[]类型的参数接收。

2.4、如果是批量对象传值,使用普通对象绑定,内部用集合List<类>来存放多个对象,存放批量修改的数据。

表单的请求域的name值的格式:
集合名属性名[从0开始的索引数字].属性名

注意:同一个对象的索引是相同的。

控制器用一个普通对象作形参,包装一个集合属性来接收。


(三)获得表单文件域
1、单个文件接收
用SpringMVC提供的MutipartFile类型的对象来接收。

需要用@RequestParam来设置名字和表单文件域的name属性对应。

适合单个文件的接收。

有transferTo()方法来存放文件,还有获取文件名,获取文件大小,获取输入流等方法。


2、多个同名文件接收
用MutipartFile类型的对象数组来接收。
只需要遍历来操作每个文件。


四、返回值

(一)可以是void空类型。
代表没有返回值,可能在其他方面来返回。

(二)、返回值可以是ModelAndView类型。
同时指定模型和视图。

将返回指定的视图,填充指定的模型数据。

(三)返回值是String类型。
如果没有添加@ResponseBody注解,那么返回的字符串代表视图名,就会返回视图。

如果转发,就在视图名前面加"forward:",如果重定向,就在视图名前面加"redirect:"。

例如:返回"main",代表返回名字为main的视图。

(四)对象类型。
如果添加了@ResponseBody注解,就会转成默认的JSON数据返回到响应体中。

支持转化的类型:对象类型,包括基本类型的包装类型、集合类型、POJO对象类型。

(五)ResponseEntity类型。
这是SpringMVC提供的返回封装类。

如果没有加@ResponseBody注解,可以封装响应结果,使用ResponseEntity类的对象返回,可以指定响应头的对象,响应体的内容,响应码。

如果是下载文件可以直接调用HttpServletResponse对象作出响应,返回值设为void类型。


五、其他知识点

(一)HttpServletRequest的getParameter()方法可以获得请求参数,也可以获得表单的POST方法的请求体的表单域属性。

(二)如果是单个文件域,可以使用HttpServletRequest的getPart()方法来获取输入流。

(三)如果是多文件域,可以用HttpServletRequest的getParts() 来获取文件对象Part集合。

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值