(SpringMVC)响应数据和结果视图:返回值分类

一、字符串

controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/testString")
    public String testString(Model model){
        //模拟从数据库查询出 User 对象
        User user = new User();
        user.setUname("String 对象");
        user.setAge(30);
        user.setBirthday(new Date());
        //model 对象
        model.addAttribute("user",user);
        return "success";
    }
}

在这里插入图片描述

二、void

Servlet 原始 API 可以作为控制器中方法的参数:

@RequestMapping("/testReturnVoid")
public void testReturnVoid(HttpServletRequest request,HttpServletResponse response)
throws Exception {
}

在controller 方法形参上可以定义 request 和 response,使用 request 或 response 指定响应结果:
(1)使用 request 转向页面,如下:
request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);2)也可以通过 response 页面重定向:
response.sendRedirect("testRetrunString")3)也可以通过 response 指定响应结果, 例如响应 json 数据:
	response.setCharacterEncoding("utf-8");
	response.setContentType("application/json;charset=utf-8");
	response.getWriter().write("json 串");

三、ModelAndView

ModelAndView 是 SpringMVC 为我们提供的一个对象,该对象也可以用作控制器方法的返回值。
该对象中有两个方法:
在这里插入图片描述
在这里插入图片描述

 @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(Model model){
        System.out.println("testModelAndView 方法执行了。。。。");
        // 创建ModelAndView对象
        ModelAndView mv = new ModelAndView();
        System.out.println("testModelAndView方法执行了...");
        // 模拟从数据库中查询出User对象
        User user = new User();
        user.setUsername("ModelAndView");
        user.setAge(30);
        // 把user对象存储到mv对象中,也会把user对象存入到request对象
        mv.addObject("user",user);
        // 跳转到哪个页面
        mv.setViewName("success");
        return mv;
    }

注意:我们在页面上上获取使用的是 requestScope.username 取的,所以返回 ModelAndView 类型时,浏览器跳转只能是请求转发。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章