一、controller的方法返回值的问题
1) 返回值类型为:ModelAndView
controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view视图。
// 【1、返回值ModelAndView】
public ModelAndView lits() {
// 1.业务操作
System.out.println("查询成功....");
// 2.构建ModelAndView
ModelAndView mav = new ModelAndView();
// 2.1 绑定model ==》数据
List data = Arrays.asList(new String[] { "王二狗子", "李二麻子", "欧阳旺财" });
mav.addObject("user", data);
// 2.2 绑定视图 ==》 jsp|html 的名称
mav.setViewName("orders"); // 被视图解析器加上前缀和后缀
return mav;
}
2) 返回值类型为void
在controller方法形参上可以定义request和response,使用request或response指定响应结果:
1.使用request转向页面,如下:
request.getRequestDispatcher(“页面路径”).forward(request, response);
2.通过response页面重定向:
response.sendRedirect(“url”)
3.通过response指定响应结果,例如响应json数据如下:
response.setCharacterEncoding(“utf-8”);
response.setContentType(“application/json;charset=utf-8”);
response.getWriter().write(“json串”);
// 【2、返回值为void 不推荐使用】
// controller方法返回值类型也可以是void
@RequestMapping("/test/void")
public void testVoid(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1.转发
// request.getRequestDispatcher("../WEB-INF/jsp/user/success.jsp").forward(request,
// response) ;
// 2.重定向
// 行不通
// response.sendRedirect("http://localhost:8080/nd-springmvc01-base2/WEB-INF/jsp/user/success.jsp");
response.sendRedirect("/nd-springmvc01-base2/order/test/redirect");
}
3)返回值类型为 String(配合Model参数)
String---->视图名称
Model—> 数据
// 【3、返回值为String】
//【3.1、视图的名称】
@RequestMapping("/test/redirect")
public String testRedirect() {
return "user/success";//WEB-INF/jsp/ user/success .jsp
}
//【3.2、转发 forward:】
@RequestMapping("/test/forward")
public String testForward() {
return "forward:../../WEB-INF/jsp/user/success.jsp";//WEB-INF/jsp/ user/success .jsp
}
//【3.3、转发 redirect】
@RequestMapping("test/red")
public String testRedirect2() {
return "redirect:../test/redirect";
}
//【3.4、JSON进行数据交互 ---目前前后端分离的项目】
@RequestMapping("test/json")
@ResponseBody //注解的作用 将返回的结果序列化为json字符串
public String testJson() {
return "{\"id\":27,\"name\":\"二狗子\"}";
}
//【3.5、JSON进行数据交互 ---目前前后端分离的项目】
//【接口1----第1种:响应数据是json格式】
@RequestMapping(value="test/jsonObj",method=RequestMethod.GET)
@ResponseBody //注解的作用 1.将返回的结果序列化为json字符串 2.不会使用视图解析器
public List<Users> testJsonObj() {
List<Users> users = iUsersService.list(1, 3);
return users;
}
/**
* 添加用户:
* 单体项目===>表单(jsp/html)====>controller
* 前后端分离====>postman(模拟请求)===>controller
*
*
* API文档
* 请求:
{
"username": "王大锤",
"birthday": "2020-04-19",
"sex": "女",
"address": "长沙市五一新干线新梦想"
}
响应:
{
status:200,
msg:"添加成功",
data:[]
}
*
*/
//【接口2===>第2种:请求是json格式数据 响应也是json格式数据】
@RequestMapping(value="/save/user",method=RequestMethod.POST)
@ResponseBody //注解的作用 1.将返回的结果序列化为json字符串 2.不会使用视图解析器
public ServerResponse<Users> saveUser(@RequestBody Users users) {
System.out.println("users==>"+users);
//1.逻辑操作......
return ServerResponse.SuccessResponse();
}