SpringMVC-结果跳转方式
四、结果跳转方式
1、ModelAndView
设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 .
页面 : {视图解析器前缀} + viewName +{视图解析器后缀}
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
对应的controller类
public class ControllerTest1 implements Controller {
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//返回一个模型视图对象
ModelAndView mv = new ModelAndView();
mv.addObject("msg","ControllerTest1");
mv.setViewName("test");
return mv;
}
}
2、SpringMVC实现转发和重定向
测试前注释配置文件中的视图解析器
- 默认为forward转发
- redirect重定向需要声明
@Controller
public class ViewTest {
//默认:转发
@RequestMapping("r/t1")
public String test1(){
ModelAndView mv =new ModelAndView();
mv.addObject("msg","默认测试");
return ("/index.jsp");
}
//重定向
@RequestMapping("r/t2")
public String test2(){
ModelAndView mv =new ModelAndView();
mv.addObject("msg","重定向测试");
return ("redirect:/index.jsp");
}
//转发
@RequestMapping("r/t3")
public String test3(){
ModelAndView mv =new ModelAndView();
mv.addObject("msg","默认测试");
return ("forward:/index.jsp");
}
}
存在视图解析器的情况下
- 默认为forward转发(不能声明!!)
- redirect重定向需要声明(redirect不能访问WEB-INF下的项目)
@Controller
public class ViewTest {
@RequestMapping("r/t1")
public String test1(){
ModelAndView mv =new ModelAndView();
mv.addObject("msg","默认测试");
return ("/test");
}
@RequestMapping("r/t2")
public String test2(){
ModelAndView mv =new ModelAndView();
mv.addObject("msg","重定向测试");
return ("redirect:/index.jsp");
}
}