【原文:https://www.cnblogs.com/zhaojiankai/p/8184207.html】
本节内容:
- @RequestMapping
- Controller方法返回值
一、@RequestMapping
通过@RequestMapping注解可以定义不同的处理器映射规则。
1. URL路径映射
@RequestMapping(value="/item") 或 @RequestMapping("/item") --当括号里有多个属性时,value=不可以省略。
value的值是数组,可以将多个url映射到同一个方法。
2. 添加在类上面
在class上添加@RequestMapping(url)指定通用请求前缀,限制此类下的所有方法请求url必须以请求前缀开头
可以使用此方法对url进行分类管理,如下图:
此时需要进入queryItemList()方法的请求url为:http://127.0.0.1:8080/api/item/itemList.action
或者
http://127.0.0.1:8080/api/item/itemListAll.action
3. 请求方法限定
除了可以对url进行设置,还可以限定请求进来的方法。不写的话默认所有方法都可以。
(1)限定GET方法
@RequestMapping(method = RequestMethod.GET)
如果通过POST访问则报错:
HTTP Status 405 - Request method 'POST' not supported
例如:
@RequestMapping(value = "itemList",method = RequestMethod.POST)
(2)限定POST方法
@RequestMapping(method = RequestMethod.POST)
如果通过GET访问则报错:
HTTP Status 405 - Request method 'GET' not supported
(3)GET和POST都可以
@RequestMapping(method = {RequestMethod.GET,RequestMethod.POST})
二、Controller方法返回值
1. 返回ModelAndView --无敌的,带着数据,返回视图路径
controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
2. 返回void --数据通过形参 Model model 或者 ModelMap model,但是没办法return视图。如果需要返回视图得通过request或response。这种比较适合ajax请求,但是给ajax返回数据得json格式数据。
在Controller方法形参上可以定义request和response,使用request或response指定响应结果:
(1)使用request转发页面,如下:
request.getRequestDispatcher("页面路径").forward(request, response);
1 |
|
(2)可以通过response页面重定向:
response.sendRedirect("url")
1 |
|
(3)可以通过response指定响应结果,例如响应json数据如下:
1 |
|
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
【注意】:改映射@RequestMapping、改方法名、改方法形参、改返回值都需要重启程序,其他不需要重启。
3. 返回字符串(官方推荐此种方式) --返回视图路径,数据通过形参 Model model 或者 ModelMap model
(1)逻辑视图名
controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。
1 2 |
|
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
(2)Redirect重定向
Contrller方法返回字符串可以重定向到一个url地址。
如下商品修改提交后重定向到商品编辑页面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
(3)forward转发
Controller方法执行后继续执行另一个Controller方法
如下商品修改提交后转向到商品修改页面,修改商品的id参数可以带到商品修改方法中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|