Javaweb的跳转问题
通俗来说,form表单是写在前端页面(如html、jsp)上的,<form>有一个‘action’的参数,这里需要填写目标地址,如果不填写的话客户端是不知道往哪里发送信息的,因此form是由客户端主动发送给服务器(具体的地址就是action索要填的值)的。这属于客户端向服务器发起请求,代码表现为:
<form
action='10086.jsp' method='get' >
…………
</form>
就像你打10086,你问问题(提交表单),客服(服务器)会根据你的问题(form)反馈答案。同理,正常来说,后台接收到前端发来的信息后,会进行一系列操作,最后发送结果回去。
====分割线====
而转发和重定向的代码是写在后台代码里的,因为并不是所有的业务都由同一个后台页面处理(例如统一管理平台),前端form填的是页面A,但实际上页面A在接收到form后并不进行处理,而是通过转发或者重定向的方式,发送给页面B,页面B处理后会把结果发送给A,然后A再反馈给前端。因此,这属于服务器向服务器发起请求
转发的代码是request.getrequestdispatcher (10086-2.jsp).forward(request,response),特点是url不会变,客户端无法判断是form表单的后台页面在处理还是别的页面在处理(你在浏览器上是无法知道10086-2.jsp这个页面的存在)。就像10086客户有时候会让你稍等,等待期间你是不知道他是在敲电脑还是找外援寻求答案。
重定向的代码是response.sendRedirect("10086-2.jsp"),特点是url会变。浏览器的地址栏会明显看到地址发生改变。就像10086客服告诉你该问题不是他负责的范围,然后帮你转接到其他相应的客户。
至于怎么判断啥时候使用转发,啥时候使用重定向,还请理解jsp的四大作用域之后再回头思考。
我觉得这个答案很好
请问你是复制的嘛
2018-11-28
function openHtml()
{
//do someghing here...
window.open("xxxx.html");
}
window是一个javascript对象,可以用它的open方法,需要注意的是,如果这个页面不是一相相对路径,那么要加“http://”,比如:
function openHtml()
{
window.open("http://www.baidu.com");
}
二、在本页面窗口中跳转:
function totest2()
{
window.location.assign("test2.html");
}
如果直接使用location.assgin()也可以,但是window.location.assign()更合理一些,当前窗口的location对象的assign()方法。
另外,location对象还有一个方法replace()也可以做页面跳转,它跟assign()方法的区别在于:
replace() 方法不会在 History 对象中生成一个新的纪录。当使用该方法时,新的 URL 将覆盖 History 对象中的当前纪录。