当前位置: 代码迷 >> Java Web开发 >> 请问,转发和重定向,到底什么时候用哪个
  详细解决方案

请问,转发和重定向,到底什么时候用哪个

热度:1133   发布时间:2016-04-13 22:44:22.0
请教,转发和重定向,到底什么时候用哪个?
访问http://localhost:8080/提交表单以后,servlet进行转发,url就变成了http://localhost:8080/login.do,如果刷新页面,就会弹出这个窗口。请教了别人说这是正常的。

我的问题是,提交一个用户名、密码,如果错误就返回登陆界面并加上提示信息。如果用转发,可以直接用request、response。如果用重定向就只能用session吗?用哪个更好一些。
如果用转发每次刷新都会弹出这个窗口,我好像没见过哪个网站会弹出这个东西。
------解决思路----------------------
给出一个场景:加入我们开发的网站上,首页上有登录模块,点击登录之后需要调转到用户的后台界面。其中网站首页会对应一个网址(url),用户后台会对应一个网址,用户提交表单会对应一个网址。在首页上提交表单之后后台处理时可以使用请求转发,可以使用从定向。当使用请求转发时,浏览器上显示的网址是首页的网址;而使用重定向时,浏览器上显示的网址是后台的网址。登录之后显示首页地址是不符合逻辑的,所以使用从定向。
同学问这个问题肯定是一个初学者,因此给出一些其他知识,大多数网站完成登录使用的不会是提交表单的操作,一般使用的都会是ajax异步提交。要学习jquery,js啊
------解决思路----------------------
这个问题很正常,你有个理解误区,不是说servlet转发后url才变成xxxx.do,而是当你点表单提交时,改变的地址。转发是不会改变地址的,只是服务器内部的类方法调用而已。

回到你的问题,当用户登录错误时,一般会回到登录页并提示信息,这个时候用转发问题不大且方便效率高,但是暴露了提交地址不太友好。  当登录成功后,一般来说会直接跳转到首页或之前浏览的网站,这个时候用重定向就可以了,因为你不要添加什么提示信息。
至于转发的地址问题,一般来说对于登录、注册,现在网站都是用的ajax提交,则不会存在这些问题了