返回的是return的字符串数据,包括json字符串。当然前端需要通过
data = eval("(" + data + ")");
解析json字符串为json对象。
会自动查找 根目录/resources/templates 目录下面的index.html文件,templates是安全目录,必须通过控制层访问,不能直接访问。如果该文件夹下面还有文件夹,则类似这样访问 return "/order/orderList"。
传输数据可通过方法带参 Model model,或者ModelMap model,又或者Map
model.addAttribute("msg","返回消息");
//map.put("msg","返回消息");
重定向,默认访问public公共目录,比如static路径下的静态文件,或比如已经如 2)定义过的公开访问路径。
传输数据可通过方法带参 RedirectAttributes redirectAttributes, 然后
redirectAttributes.addFlashAttribute("msg","返回消息");
但是要注意,返回的数据是带在URL里面的。
请求转发,默认访问public公共目录,比如static路径下的静态文件,或比如已经如 2)定义过的公开访问路径。
传输数据可通过方法带参 RedirectAttributes redirectAttributes, 然后
redirectAttributes.addFlashAttribute("msg","返回消息");
但是要注意,返回的数据是带在URL里面的。
return字符串都认为是返回字符串数据,相当于同时增加了@Controller和@ResponseBody注解。
此时controller注解为@Controller还是@RestController返回页面都是一样的效果。但如果单单是@RestController或者@Controller和@ResponseBody一起,return如java bean实例、Map实例、List实例等,返回的都是json字符串。
可以方法带参 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");