2019-08-28

续上篇
                        SpringMVC注解式开发

处理器方法常用的参数(五类)

1 HttpServletRequest

2 HttpServletResponse

3 HttpSession

4 用于承载数据的Model、Map、ModelMap【代码示例】

5 请求中所携带的请求参数

接收请求参数

1 逐个接收 (涉及注解@RequestParam)

只要保证请求参数名与该请求处理方法的参数名相同即可。

前端页面如下:

2019-08-28_第1张图片

controler处理器:

2019-08-28_第2张图片

校正请求参数名@RequestParam

    所谓校正请求参数名,是指若请求 URL 所携带的参数名称与处理方法中指定的参数名不相同时,则需在处理方法参数前,添加一个注解@RequestParam(“请求参数名”),指定请求 URL 所携带参数的名称。该注解是对处理器方法参数进行修饰的。

使用如下:@RequestParam(请求参数名)校正后面的变量名和请求参数一致

2019-08-28_第3张图片

2 以对象形式整体接收(请求参数名和实体类的属性名一致)

2.1创建实体类

2019-08-28_第4张图片

2.2前端页面:

2019-08-28_第5张图片

2.3controler控制器:

2019-08-28_第6张图片

3 域属性参数的接收

所谓域属性,即对象属性。当请求参数中的数据为某类对象域属性的属性值时,要求请求参数名为“域属性名.属性”。

3.1前端页面

3.2实体类:

2019-08-28_第7张图片
2019-08-28_第8张图片

3.3  controler控制器:

2019-08-28_第9张图片

4 数组或集合参数的接收(集合时需要使用注解@RequestParam进行校正)

2019-08-28_第10张图片

5 restfull风格,传参(涉及注解@ PathVariable)

RestFull风格就是url路径中不能出现?不能带参数,如https://www.baidu.com/user/item/1234这个格式,也叫url资源定位

5.1  controler控制器

2019-08-28_第11张图片

6 接收json字符串(涉及注解@RequestBody,注册mvc注解驱动,导入jackson包)(此处是将jsong格式的字符串封装成对象作为参数显示)

6.1 前端页面

2019-08-28_第12张图片

6.2 实体类:(属性名和json字符串的键保持一致)

2019-08-28_第13张图片


6.3. controler控制器:

2019-08-28_第14张图片


获取请求头中参数(涉及注解@RequestHeader)

1.获取请求头信息的host及cookie,以此类推其他可以这样获取

2019-08-28_第15张图片

处理器方法的返回值

String  如果处理器处理后返回的结果为对象,或是集合,或是其他结果,可以将对象或集合存放在集合中,返回值使用String跳转到视图页面。作用和ModelAnd View一样,只是需要结合其他存储对象。

2019-08-28_第16张图片

注解RequestMapping中produces属性可以设置返回数据的类型以及编码,可以是json或者xml:

但是必须要和@ResponseBody注解一起使用才可以,不加@ResponseBody注解相当于按照和返回String同名jsp页面,解析自然就会报错。如果返过来,不加produces属性,只有@ResponseBody注解的话也是没有问题的,只是在浏览器中直接访问的时候有区别

前端页面:

2019-08-28_第17张图片

controller:

2019-08-28_第18张图片

Void 处理器处理请求后直接响应给前端页面,使用void.、

2019-08-28_第19张图片

Object(涉及注解@ResponseBody ,注册mvc注解驱动,导入jackson2.5包):

如果请求为ajax请求,则需要响应结果,可以使用返回值Object类型,结合注解@ ResponseBody将方法体的返回值放入响应体中,并转换为json格式的字符串。

2019-08-28_第20张图片


请求转发与重定向

1.见图说明:redirect为重定向到另一个页面,不叫redirect为请求转发。

2019-08-28_第21张图片

2.当一个controller控制器请求转发到另一个controller控制器处理时,使用forward,请求参数会一同传递过去,但地址栏不变,此时必去获取到然后存入作用域再重定向到前端页面,或者拼接到地址栏。如下:

2019-08-28_第22张图片

结果:

3.当一个controller控制器重定向到另一个controller控制器处理时,使用redirect,请求参数也会一同带过去,此时必去获取到然后存入作用域再重定向到前端页面,或者拼接到地址栏。如下:

2019-08-28_第23张图片

结果:

2019-08-28_第24张图片

你可能感兴趣的:(2019-08-28)