spring mvc controller的一些疑惑

爱打球的程序猿 2015-12-04 11:20:15
拿一个最简单的简单的登录例子来说。
登陆页填写账号密码后,会提交到userController/login.do控制器去处理业务,然后 登陆成功后会返回至index.jsp

一开始
modelAndView.setViewName("/user/index");
这样视图是可以显示的 但是地址依然是user/login.do

后来百度后改为
modelAndView.setViewName("redirect:/user/index");
重定向后地址栏才变为user/index。

想问下一般开发时候关于地址跳转都是怎么处理的?
...全文
71 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
引用 1 楼 dracularking 的回复:
forward就不改变地址 改变地址就redirect
所以一般开发时候controller里跳转都用
response.sendRedirect("admin/login"); response.forward("admin/login");
这种方法跳转吗?
回复
科學信仰 2015-12-04
forward就不改变地址 改变地址就redirect
回复
科學信仰 2015-12-04
引用 2 楼 u013994112 的回复:
[quote=引用 1 楼 dracularking 的回复:] forward就不改变地址 改变地址就redirect
所以一般开发时候controller里跳转都用
response.sendRedirect("admin/login"); response.forward("admin/login");
这种方法跳转吗?[/quote] 至于哪种跳转如果可以自由选择的话是看业务需求的
回复
乐古 2015-12-04
实现页面跳转的方式有两种:转发(forward)和重定向(redirect)。二者的最终实现的结果是一样的,但其实现的过程是不一样的: 转发,顾名思义,客户端把请求发送到controller,controller访问页面所要跳转的地址,所以就是客户端访问服务器地址,服务器访问要跳转的地址,最后响应给你。等同于客户端访问的就是controller本身。 而重定向就不一样了,客户端把请求发送到controller,controller告诉你去访问另一个地址(要跳转的地址),也就是你首先访问了 controller,又访问了要跳转的地址。实际上客户端访问了两个地址。 另外,spring等大部分框架默认跳转方式都是转发,所以就出现了你上述的那种情况。
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-12-04 11:20
社区公告
暂无公告