一篇文章带你搞定 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 类型时,浏览器跳转只能是请求转发。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值