Spring mvc redirect跳转路径问题

发布时间:2021-12-08 22:33:47

SpringMVC重定向视图RedirectView小分析


前言


SpringMVC是目前主流的Web MVC框架之一。


本文所讲的部分内容跟SpringMVC的视图机制有关,SpringMVC的视图机制请参考楼主的另一篇博客:


RedirectView这个视图是跟重定向相关的,也是重定向问题的核心,我们来看看这个类的源码。


路径构造完毕之后使用reponse进行sendRedirect操作。


实例讲解


Controller代码:


@Controller
@RequestMapping(value = “/redirect”)
public class TestRedirectController {


@RequestMapping("/test1")
public ModelAndView test1() {
view.setViewName("redirect:index");
return view;
}

@RequestMapping("/test2")
public ModelAndView test2() {
view.setViewName("redirect:login");
return view;
}

@RequestMapping("/test3")
public ModelAndView test3(ModelAndView view) {
view.setViewName("redirect:/index");
return view;
}

@RequestMapping("/test4")
public ModelAndView test4(ModelAndView view) {
view.setView(new RedirectView("/index", false));
return view;
}

@RequestMapping("/test5")
public ModelAndView test5(ModelAndView view) {
view.setView(new RedirectView("index", false));
return view;
}

@RequestMapping("/test6/{id}")
public ModelAndView test6(ModelAndView view, @PathVariable("id") int id) {
view.setViewName("redirect:/index{id}");

    view.addObject(“test”, “test”);
return view;
}


@RequestMapping("/test7/{id}")
public ModelAndView test7(ModelAndView view, @PathVariable("id") int id) {
RedirectView redirectView = new RedirectView("/index{id}");
redirectView.setExpandUriTemplateVariables(false);
redirectView.setExposeModelAttributes(false);
view.setView(redirectView);
view.addObject("test", "test");
return view;
}

}
先看test1方法,返回值 “redirect:index” , 那么会使用重定向。


SpringMVC找视图名”redirect:index”的时候,本文使用的ViewResolver是FreeMarkerViewResolver。


FreeMarkerViewResolver解析视图名的话,最调用父类之一的UrlBasedViewResolver中的createView方法。


通过构造方法发现,这个RedirectView使用相对路径,兼容Http1.0,不暴露路径变量。


test1方法,进入的路径: /SpringMVCDemo/redirect/test1。 RedirectView使用相对路径,那么重定向的路径: /SpringMVCDemo/redirect/index


我们通过firebug看下路径:


nice,验证了我们的想法。


test2方法同理:进入的路径: /SpringMVCDemo/redirect/test2。 重定向的路径: /SpringMVCDemo/redirect/login。


test3方法:以 “/” 开头并且使用相对路径,那么会默认加上contextPath。 进入的路径: /SpringMVCDemo/redirect/test3。 重定向的路径: /SpringMVCDemo/index。


test4方法:不使用默认路径,createTargetUrl方法中直接append “/index”。进入的路径: /SpringMVCDemo/redirect/test4。 重定向的路径: /index。


test5方法:不使用默认路径,createTargetUrl方法中直接append “index”。进入的路径: /SpringMVCDemo/redirect/test5。 重定向的路径: /SpringMVCDemo/redirect/index。


其实这里有点意外,刚开始看的时候以为不使用绝对路径,以后路径会是/SpringMVCDemo/index或/index。 结果居然不是这样,感觉SpringMVC这个取名有点尴尬,有点蛋疼。 其实RedirectView中的createTargetUrl方法就明白了,源码是最好的文档 0 0.


test6方法:使用默认路径,该方法还使用了路径变量。本文之前分析的时候说了RedirectView中构造重定向路径的时候会对路径变量进行替代,还会暴露model中的属性,且这2个暴露分别受属性expandUriTemplateVariables、exposeModelAttributes影响,这2个属性默认都是true。进入的路径: /SpringMVCDemo/redirect/test6/1。 重定向的路径: /SpringMVCDemo/index1?test=test。


test7方法:跟test6方法一样,只不过我们不暴露model属性,不替代路径变量了。进入的路径: /SpringMVCDemo/redirect/test7/1。 重定向的路径: /SpringMVCDemo/index{id}。


总结


简单了分析了RedirectView视图,并分析了该视图的渲染源码,并分析了重定向中的路径问题,参数问题,路径变量问题等常用的问题。


源码真是最好的文档,了解了视图机制之后,再回过头来看看RedirectView视图,So easy。


最后感觉RedirectView的相对路径属性怪怪的,不使用相对路径,”/” 开头的直接就是服务器根路径, 不带 “/” 开头的,又是相对路径, 有点蛋疼。


希望本文能够帮助读者了解SpringMVC的重定向相关问题


转自http://blog.csdn.net/wilsonke/article/details/39177421

相关文档

  • 房间里蚊子太多怎么办
  • 小学副班主任工作计划范本
  • 有关读书的乐趣演讲稿集合8篇
  • 商务日语专业的求职自荐书
  • 小学2009年德育工作计划
  • 舞蹈教学工作计划范例
  • Java大厂面试100题,你面试时总会用到的!
  • 动物吃害虫的小知识
  • 秋天伤感句子说说心情短语
  • 有关2021年实习自我鉴定
  • 字节跳动简历冷却期_字节跳动2021校招Q&A
  • JSONArray和JSONObject的简单使用
  • 父与子的阅读感想700字
  • 新注册企业零申报能报几个月
  • 证券从业资格证
  • 全局变量 multiple definition of 问题解决方法
  • 钢筋砼排水管销售合同
  • 醋怎样喝才美容
  • 学校在国庆节祝福学生家长短信语录
  • 教师实习心得:三人行,必有我师
  • Static全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别?
  • 直销聊天沟通技巧
  • 如何把一段逗号分割的字符串转换成一个数组?
  • 属狗人办公桌上的摆设怎么摆
  • 初二政治期末考试试卷分析|初二政治期末考试卷
  • 感情出现问题该不该妥协情侣间出现问题分手还是妥协
  • 学习省优秀教师事迹的范文
  • 2020年祝立春快乐的祝福语合集32条
  • 系统分析与设计 作业6
  • 《老鹿王哈克》读后感450字
  • 猜你喜欢

  • 英语课堂用语及应用策略探究
  • 塔吉克族服饰 塔吉克族服饰文化简介
  • 【语文专题推荐】考点综合复*小学语文小升初模拟试卷III卷
  • 企业管理概论期末复*卷及部分真题6
  • 苹果6手机无法更新系统
  • 悲伤落寞句子
  • 英语四级作文有用替换词总结
  • 咸阳蟹天蟹地餐饮管理有限公司企业信用报告-天眼查
  • 富源绿腾农业发展有限公司(企业信用报告)- 天眼查
  • 我发现吃鱼籽不会变笨
  • 异星探险家怎么联机联机方法一览
  • 集资诈骗罪单位标准是什么?
  • 河北恒上升建筑工程有限公司企业信息报告-天眼查
  • 奇妙的平面图形和立体图形
  • CAN总线基础知识汇总
  • 数据库属性文件的配置
  • 青草沙输水隧道安全施工通风模型及湍流流动特性研究
  • 东莞市世聪电子科技有限公司企业信用报告-天眼查
  • 哪里有《综合营销技能提升》
  • 小学实*生个人总结
  • 像电影里黑客高手一样敲代码攻击入侵网站(模拟)
  • 黎城一中教研室2013年秋季工作计划
  • 广东省深圳市宝安区2018-2019第一学期8年级语文第五单元测试卷和答案(人教最新版语文八年级上)
  • 【中教网 精校Word版】2014年高考北京卷物理试题 全解全析
  • 如何制作广告宣传链接
  • 七年级历史下册20明清经济的发展与“闭关锁国”课件人教新课标版.ppt
  • 四年级下册英语课件-Unit 2 There are forty students in our class Lesson 10-2_人教精通(2014秋)
  • 白菜怎样贮藏好
  • 推行精细化管理搞好安全工作
  • 车上挂件排行榜前十名
  • 【创新管理】企业组织形式的创新
  • 儿童安全—儿童乘车9大禁忌
  • 教育实*报告总结2000字 实*报告总结3000字
  • 梧州市莲花山锅炉配件厂企业信息报告-天眼查
  • 高中语文第三单元第8课寡人之于国也课件新人教必修3
  • 可爱萌宠卡通动漫清新儿童创意活动培训课件亲子公开课PPT模板
  • 关于小学生口语自我介绍范文
  • xx学校消防演练记录表
  • 高校通识教育课程实施的过程管理研究
  • 胆石症病人的护理及健康教育
  • 中国石油天然气资源状况及未来供求形势分析 PPT资料共88页
  • 高中政治_哲学第三单元测试题_新人教版必修4 《生活与哲学》
  • 电脑版