return “forward:/success”; return “redirect:/success”;无法跳转请求,且只会在界面上输出return中的内容,
1.Controller类与RestController类的区别
Controller类中,跳转有效
@Controller
public class ParameterTest {
@RequestMapping("/params")
public String testParams( HttpServletRequest request){
request.setAttribute("msg","成功了....");//@RequestAttribute("msg")获取
request.setAttribute("code",200);
return "forward:/success";
}
@RequestBody
@RequestMapping("/success")
public String success(@RequestAttribute(value = "msg" ,required=false) String msg,@RequestAttribute(value = "code",required=false)Integer code,HttpServletRequest request){
Map<String,Object> map = new HashMap<>();
map.put("msg",msg);
map.put("code",code);
return map;
}
}
RestController类中,跳转无效
@RestController
public class ParameterTest {
}
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
1)使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面.
所以 return “forward:/success”; return “redirect:/success”;只有在Controller类中才能正常使用。但是在Controller类中的方法要返回json数据,则此方法需要@RequestBody注解
2)如果只是使用@RestController注解,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。即return “forward:/success”; return “redirect:/success”;只会在界面中输出forward:/success或redirect:/success。但是在@RestController注解下的Controller类中的方法返回json数据不再需要@ResponseBody注解。