Javaweb的跳转问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javaweb的跳转问题相关的知识,希望对你有一定的参考价值。
对于form的表单提交跳转,原理是什么?为什么说form表单跳转只能是由客户端发起的?而重定向和请求转发是由服务端开始的?谁能给我屡一下?不会的,请别回答,谢谢
通俗来说,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的四大作用域之后再回头思考。
追问我觉得这个答案很好
请问你是复制的嘛
别介意
如果你不是复制的
我想问
你几个问题
可以吗
追答自己写的,请问吧,我能回答的会尽可能回答
追问在吗
抱歉,刚刚上课去了
参考技术A 在itjobjava老师讲过:一、跳转到新页面,并且是在新窗口中打开页面: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 对象中的当前纪录。 参考技术B 你后台有html元素吗,只有前台才有form标签才提供表单跳转所以说表单提交只能有客户端发起。重定向和转发是指请求已经到达后台,这是有后台重定向请求或转发请求。大概就是这个意思
java连个过滤器之间的跳转
现在有index.jsp(登陆页面)welcome.jsp,一个servlet,两个filter(filter1,filter2),我将index.jsp中form的action定向到了servlet。我希望实现从index.jsp到welcome.jsp的过程中经过这两个filter,我已经清楚经过一个filter的情况,但,不知道如果经过两个filter的话,这两个filter之间如何实现跳转啊?
你就想定义一个filter一样定义两个filter就可以。在filter中不是有一个filterchain么,他就是把请求传递给下一个filter去处理的。 参考技术A 定义那么多干嘛,一个不就够了以上是关于Javaweb的跳转问题的主要内容,如果未能解决你的问题,请参考以下文章