spring controller 返回页面的几种方法以及如何携带返回数据

一、返回String类型

1、controller注解为@Controller时

1)方法注解为@ResponseBody时

返回的是return的字符串数据,包括json字符串。当然前端需要通过

data = eval("(" + data + ")");

解析json字符串为json对象。 

2)return "/index"时

会自动查找 根目录/resources/templates 目录下面的index.html文件,templates是安全目录,必须通过控制层访问,不能直接访问。如果该文件夹下面还有文件夹,则类似这样访问 return "/order/orderList"。

传输数据可通过方法带参 Model model,或者ModelMap model,又或者Map<String,Object> map,然后

model.addAttribute("msg","返回消息");
//map.put("msg","返回消息");

3)return "redirect:/index"

重定向,默认访问public公共目录,比如static路径下的静态文件,或比如已经如 2)定义过的公开访问路径。

传输数据可通过方法带参 RedirectAttributes redirectAttributes, 然后

redirectAttributes.addFlashAttribute("msg","返回消息");

但是要注意,返回的数据是带在URL里面的。 

4)return "forward:/index"

请求转发,默认访问public公共目录,比如static路径下的静态文件,或比如已经如 2)定义过的公开访问路径。

传输数据可通过方法带参 RedirectAttributes redirectAttributes, 然后

redirectAttributes.addFlashAttribute("msg","返回消息");

但是要注意,返回的数据是带在URL里面的。 

2、controller注解为@RestController时

return字符串都认为是返回字符串数据,相当于同时增加了@Controller和@ResponseBody注解。

二、返回非String对象

1、例外情况

此时controller注解为@Controller还是@RestController返回页面都是一样的效果。但如果单单是@RestController或者@Controller和@ResponseBody一起,return如java bean实例、Map实例、List实例等,返回的都是json字符串。

2、返回 ModelAndView

可以方法带参 ModelAndView mv,然后

mv.addObject("msg","返回数据");
mv.setViewName("index");//返回页面为index.html

返回页面效果与返回数据和第一条第2点相当,但是,如果写成

mv.addObject("msg","返回数据");
mv.setViewName("redirect:/login");//login必须是已经定义的路径

返回数据的效果与第一条第3点相当,也是URL带返回数据。

三、无返还值

1、请求转发和重定向,传参参考默认servlet

//请求转发
request.getRequestDispatcher("/login").forward(resquest,response);
//重定向
response.sendRedirect("/index");

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值