如果我们配置了视图解析器:
<!-- 配置前端视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
那么我们在控制器层的方法的返回值只需是视图名,SpringMVC就可以帮我们自动拼串,让我们能跳转到/WEB-INF/page下的页面下。假设WebContent下有一个hello.jsp文件,但是如果我们在配置了视图解析器的前提下如何跳转到WebContent下的hello.jsp。
采用如下办法就可以做到:
@RequestMapping("/handle01")
public String handle01() {
System.out.println("handle01....");
return "/../../hello";
}
但是这样做太过麻烦,SpringMVC中我们可以使用forward进行请求转发,转发到我们想要去的页面。具体使用如下:
@RequestMapping("/hello1")
public String testForward() {
return "forward:/hello.jsp";
}
使用forward转发请求,可以转发到指定页面上,可以不带/,但是不带的话是相对路径,容易出现错误,带上/的话是绝对路径,带前缀的转发,不会进行路径的拼接,即不会经过视图解析器。
当然使用forward前缀不仅能跳转到指定的jsp页面,也可以跳转到其他请求上,如请求转发hello1请求。代码示例如下:
@RequestMapping("/hello2")
public String testForward2() {
return "forward:/hello1";
}
使用redirect前缀的使用和forward的使用相差不大,唯一不同就是redirect代表的是请求重定向,而forward是请求转发。redirect的使用示例如下:
//重定向到指定jsp页面
@RequestMapping("/hello3")
public String testRedirect1() {
return "redirect:/hello.jsp";
}
//重定向发送其他请求
@RequestMapping("/hello4")
public String testRedirect2() {
return "redirect:/hello3";
}