SpringMvc的控制器每次处理完数据后都会返回一个逻辑视图(视图)和模型(模型)
所以我们会看到原生的控制器是返回一个ModelAndView(内部包含了视图和模型)。
正常情况下(除非被@ModelAttribute注解了的方法),否则最终都会返回ModelAndView。
当然有时候一个功能处理方法不一定要返回一个逻辑视图,也可以重定向到另一个功能方法
服务器内部转发到一个逻辑视图或者另一个功能方法。
- - -
SpringMvc的强大之处在于它封装了Servlet大量底层代码,但是有没有完全屏蔽用户对ServletAPI
的使用,所以SpringMvc中页面跳转也是分为两大类:
<强>使用ServletAPI实现页面跳转强>
重定向方式:由于重定向的本质是要求浏览器重新发送一个请求,SpringMvc里面的页面一般是放到web - inf下,浏览器不可以直接访问)
所以这里的重定向实质是重定向到另一个功能方法。
服务器内部请求转发:请求转发为服务器内部行为,所以可以直接跳转访问一个jsp页面也可以跳转到另一个功能处理方法。
' ' '文本
//使用原生的ServletApi进行页面跳转 @RequestMapping (“/c”) 公共字符串测试(HttpServletResponse反应,HttpServletRequest请求)抛出ServletException, IOException { System.out.println (“testC”);//跳转到服务器内部的一个页面//request.getRequestDispatcher (/web - inf/jsp/index . jsp) forward格式(请求、响应);//跳转到服务器内部的一个功能处理方法//request.getRequestDispatcher (/dispather/b) forward格式(请求、响应);//重定向一个功能方法 response.sendRedirect (request.getContextPath () + "/dispather/b "); 返回null; }
<强>使用SpringMvc的API实现页面跳转强>
直接返回逻辑视图名
b文本@RequestMapping(“/?公共字符串的(){System.out.println(“的”);//直接返回一个视图返回“指数”;}
返回自定义的ModelAndView:自定义ModelAndView时,可以重定向或请求转发
' ' '文本
//控制器中使用ModelAndView进行跳转和重定向 @RequestMapping (/e) 公共ModelAndView证人(){ System.out.println(“证人”);//跳转到服务器内部的一个页面//返回“指数”;//跳转到服务器内部的一个功能处理方法//返回新ModelAndView(“转发:/dispather/b”);//重定向一个功能方法 返回新ModelAndView(重定向:/dispather/b); }
以上就是本文关于浅谈Springmvc中的页面跳转问题的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
参考:
<强> Java编程实现springMVC简单登录实例强>
<强> SpringMVC拦截器实现单点登录强>
<强> springmvc其他风格介绍及实现代码示例强>