由于配置了视图解析器,controller返回的字符串会被自动拼接前缀(WEB-INF/pages)和后缀(.jsp),如果想要跳转到当前项目下的界面则会找不到(被自动拼接后路径错误)
forward前缀指定一个转发
controller返回值中包含forward,即告诉视图解析器这个路径不需要拼接,而是转发到该路径
@RequestMapping("/handle01")
public String testForward(){
return "forward: /hello.jsp";
}
/*
转发当前项目下的hello.jsp(WebContent下面)
而不是前端控制器拼接的WEB-INF/pages/...
等价于servlet的转发操作
*/
@RequestMapping("/handle02")
public String handle02(){
return "forward: /handle01";
}
/*
相当于将/handle02请求转发到/handle01来处理
*/
redirect重定向
原生的servlet重定向需要加上项目名才能成功,因为这个请求是由浏览器来进行解析,需要完整的url地址
response.sendRedirect("/learnJava/hello.jsp")
使用springMVC提供的redirect重定向,不必加上项目名,SpringMVC会自动进行拼接
@RequestMapping("/handle03")
public String handle03(){
/*
SpringMVC会自动为其拼接上项目名
localhost:8080/SpringMVC_learn/hello.jsp
*/
return "redirect: /hello.jsp";
}
@RequestMapping("/handle04")
public String handle04(){
/*
访问localhost:8080/SpringMVC_learn/handle04时
会重定向到localhost:8080/SpringMVC_learn/handle03(重新发请求)
*/
return "redirect: /handle03"
}