关于springmvc的redirect和forward问题

發V發 2017-03-18 10:35:38
今天在做springmvc项目重定向测试时,发现一个问题,就是利用redirect和forward进行重定向和转发的问题。
首先理论知识:

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL;
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址】

redirect是直接进行重定向,我先返回 【"redirect:/index.jsp"; 】结果成功了,返回到了index页面上面,于是我想能不能不返回根目录下的index.jsp,于是有了【redirect:/WEB-INF/view/redirectview.jsp】这次竟然给我报了一个404错误,地址栏显示地址为【http://localhost:8080/springmvc001/WEB-INF/view/redirectview.jsp】,对应的目录下也确实有这个文件,后来我以为是因为无法解析jsp的问题,换成了html也是不行。后来我又把它修改成【redirect:/RequestMappingTest/TestViews】,这是一个controller的requestMapping映射的路径,这次竟然通过了,进入到了这个requestMapping路径映射的方法,并且成功的返回到了页面,此时的地址栏为【http://localhost:8080/springmvc001/RequestMappingTest/TestViews】。
如果说浏览器重新去请求那个地址,自然而然的应该是controller的requestMapping路径是正确的,但是为什么index.jsp也是成功的。而且而且为什么返回到根目录下的index.jsp 就可以成功,而其他的页面就不行,




--------------------------------------分割线-----下面是测试forward可以不看-----------------------------------------------------
然后我又利用了forward进行试验,上面理论知识说服务器直接访问目标地址的URL,然后我让返回【forward:/WEB-INF/view/forwardview.jsp】,结果页面成功的跳转到了这个目录下的这个forwardview.jsp页面,发现浏览器地址变成了【http://localhost:8080/springmvc001/RequestMappingTest/TestRedirect】,然后我又返回【forward:/RequestMappingTest/TestViews】这种类型requestMapping的映射路径,页面跳转到对应的方法,且返回正确的路径地址,而且浏览器的地址还是【http://localhost:8080/springmvc001/RequestMappingTest/TestRedirect】形式,说明上面的对于forward解释是正确的。
...全文
386 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
亢龙有悔悔悔 2017-03-19
  • 打赏
  • 举报
回复
小伙子 ,该吃饭了
發V發 2017-03-18
  • 打赏
  • 举报
回复
我讲明白了吗?。。。。。。。

24,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧