第四天:SpringMVC返回值的处理(重点)

SpringMVC返回值的处理

(一)返回值是字符串

1、作为视图的名称

返回值为String(返回值为 String 当前的字符串被视图解析器解析 在字符串的前后使用设定的内容进行拼接 拼接的结果为一个页面的访问路径)

@RequestMapping("r1")

public String r1() {

System.out.println("返回值为字符串");

return "success";

}

2、进行资源跳转

Servlet跳转为请求转发和重定向分别由requestresponse对象完成

 Request.getRequestDispatcher(“路径”).forward(request,response);

 Response.sendRedirect(“资源路径”);

 

SpringMVC是对servlet的一个扩展,所以SpringMVC的跳转方式同样也是请求转发和重定向两种方式。

(1) 重定向

@RequestMapping("r1")

public String jump1() {

System.out.println("返回值为字符串");

return "redirect:资源路径";

}

(2)请求转发

@RequestMapping("r1")

public String jump1() {

System.out.println("返回值为字符串");

return "forward:资源路径";

}

34.0版本的以上的重定向的传值

SpringMVC 提供了一个工具类 重定向之间可以不使用session可以共享值 使用了工具类: RedirectAttributes实现session之间的共享数据问题。

第一种方式:

@RequestMapping("test2")

public String test2(String name,RedirectAttributes ra) {

System.out.println("接受表单"+name);

//如下方法会将我们传递的参数暴露在请求地址中

ra.addAttribute("newname",name);

 return "redirect:/test3";

}

ra.addAttribute("newname",name);(传递值)

@RequestParam("newname") String newname(接受值)

这种传递方式会将我们的参数暴露在请求地址中

第二种方式:

@RequestMapping("test2")

public String test2(String name,RedirectAttributes ra) {

System.out.println("接受表单"+name);

ra.addFlashAttribute("newname",name);

return "redirect:/test3";

}

ra.addFlashAttribute("newname",name);(传递值)

@ModelAttribute("newname") String newname(接受值)

    该方法会隐藏传递的参数信息

(二)无返回值

控制器的方法可以设定为void 无返回值(这样的方法可以使用servletapi进行转发或者是重定向操作,也可以使用servlet的形式进行异步请求的处理)

public void r4(){

异步返回返回数据

进行跳转

}

(三)返回其他类型数据类型

1、 返回模型视图对象

控制器的方法的返回值为ModelAndView(返回值为ModelAndView 通过这个对象包装模型数据和视图名称 被视图解析器解析,返回指定名称页面)

@RequestMapping("r2")

public ModelAndView r2() {

System.out.println("跳转过来的请求");

ModelAndView mav = new ModelAndView();

//设置视图名称

mav.setViewName("success");

//设置模型数据

mav.addObject("key","forwar跳转");

return mav;

}

2、 返回值被解析成json数据

以前我们使用的是阿里或者是谷歌的工具,进行json的处理,同时使用response对象响应到前端页面中,SpringMVC提供了一个注解 @ResponseBody 可以将我们的返回值默认的转换成一个json数据,异步的响应到前台。

@RequestMapping("showInfo")

public List<Object>showInfo() {

return 从数据库中获取的数据集合;

}

原文地址:https://www.cnblogs.com/masterhxh/p/13853612.html