javaweb服务器端跳转和发送重定向的区别
开发Web应用中会遇到从一个页面跳转到另一个页面的问题,在JSP中有两种跳转方式:
1重定向
2转发
重定向:首先服务器受到浏览器客户端请求之后,服务器发送新的链接到客户端浏览器,浏览器接收到新的链接之后又重新请求收到的链接地址,在整个过程中完成之后在客户端浏览器看来是发生了一次跳转,其实是客户端浏览器请求了两次而已,所以在浏览器的地址栏里网络地址自然就会改变成新的连接
转发:服务器 接收到客户端的请求之后,服务器把控制权交到另一个JSP页面手里,新的JSP页面接收到请求之后根据情况是继续转交控制权或者显示页面由自己决定,到最后显示页面的整个过程就是一个页面跳转过程,在这个过程中,服务器可以把请求的数据在经过的页面进行传递,而不会担心数据的丢失
下面总结一下两者的区别:
1请求的次数的不同,重定向总共请求了两次服务器;转发则是用户请求一次可能经过N个JSP页面由返回到用户浏览器中,是一次请求多次处理的过程;
2跳转过程中链接的变化,重定向在跳转中请求了两次服务器并且是两次不同的链接地址,在浏览器的地址栏可以看到两次是有变化的;转发在跳转过程中浏览器请求了一次服务器,服务器经过了n个JSP页面并没有改变请求的链接地址,因为用户只请求了一次,所以在整个跳转过程中链接地址是没有改变的,在浏览器的地址栏就可以看到
3目的不同,重定向只是简单的让用户访问一个新的链接,而转发是服务器要得到用户的请求内容并需要进行一部分处理的,所以两者目的之不同的
你好,你的问题没能表达清楚,不知道怎么回答。。如果你是网站举办者,那么关于这两者的跳转我可以给你说一下,其实都没有这2种跳转的说法,当然了。就按你的理解来说明一下:
1、客户端跳转,我的理解是做301,302等这种重定向,此跳转从第三方服务器(中间服务器)此过,但是只执行了跳转,而没有流量经过。。用户在访问一个域名时,中间服务器只告诉用户,你应该去源服务器上找,并把源服务器的地址告诉用户。。
2、服务器端跳转,应该说是反向代理,这种呢就是中间服务器做为代理请求。。用户在访问一个域名时,中间服务器帮用户去源服务器上取数据过来,然后把数据交给用户。。。
这个表述应该很明白。。。如果你问的问题不是和此相关,请补充。
两种跳转方式分别是Response和forward,两者区别如下:
一、指代不同
1、forward:是一个计算机语言指令,用于将请求转发给一个HTML文件,JSP文件,或者是一个程序段。
2、response:用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应。
二、功能不同
1、forward:之前的request不变,而继续由转发后的文件或程序处理。
2、response:只提供了一个数据集合cookie,用于在客户端写入cookie值。若指定的cookie不存在,则创建。若存在,则将自动进行更新。结果返回给客户端浏览器。
三、规则不同
1、forward:如果使用了非缓冲输出的话,使用<jsp:forward>之前,jsp文件已经有了数据,那么文件执行就会出错。
2、response:负责将信息传递给用户。Response对象用于动态响应客户端请求,并将动态生成的响应结果返回到客户端浏览器中。
-forward
-Response对象
域名被墙在国内是无法申诉,无法解封的,只能将被墙域名解析到国内空间,然后做301跳转到新域名,以减少流量和权重的丢失,或者换成国内免备案服务器。
国内免备案服务器,能支持301跳转,能解决域名被墙的问题,域名不需要备案就可以开80端口挂网站。
网页被劫持,是指打开网站被跳转到其它网站,无法访问真实的网站。
解决办法:
确定好网站地址,并且该网站拥有域名解析权(网站负责人才可以处理)。
进入Gworg获得HTTPS证书进行加密协议传输。
如果是服务器路由劫持等其它情况的,需要在Gworg获得防护方案。
解决办法:发生劫持第一时间让Gworg进行处理。
response redirect 这个跳转页面的方法跳转的速度不快 因为它要走 个来回( 次postback) 但他可以跳转到任何页面 没有站点页面限制(即可以由雅虎跳到新浪) 同时不能跳过登录保护 但速度慢是其最大缺陷!redirect跳转机制 首先是发送一个 请求到客户端 通知需要跳转到新页面 然后客户端在发送跳转请求到服务器端 需要注意的是跳转后内部空间保存的所有数据信息将会丢失 所以需要用到session
server transfer 速度快 只需要一次postback 但是 他必须是在同一个站点下 因为它是server的一个方法 另外 他能跳过登录保护 你可以写个小程序试试 设计一个由页面一到页面二的跳转 但要进入到页面二需要登录 form认证 但如果跳转语句使用transfer的话 那就不会弹出登录页面了 这个方法的重定向请求是发生在服务器端 所以浏览器的url地址仍然保留的是原页面的地址!( lian )
sever execute 这个方法主要是用在页面设计上面 而且他必须是跳转同一站点下的页面 这个方法是需要将一个页面的输出结果插入到另一个aspx页面的时候使用 大部分是在表格中 将某一个页面类似于嵌套的方式存在于另一页面
总结
当需要把用户跳转到另一台服务器上的页面的时候 使用redirect
当需要把用户跳转到非aspx页面时候 如 使用redirect
需要把查询字符串作为url一部分的时候保留传给服务器的时候 因为其他 种方法不能做到 次postback 把数据先带回服务器 使用redirect
需要aspx页面间的转换(不涉及登录) 使用transfer
当需要把aspx页面的输出结果插入到另一个aspx页面的时候使用 execute方法
当然 忘记了还有一个超链接!当然这个就不需要讲太多了 他是在当需要用户来决定什么时候跳转页面 就使用超链接
顺便提一下 如何使用redirect方法在查询字符串中使用汉字 因为经常的情况是出现乱码 原因是url不支持汉字 这个时候需要转换
以下是引用片段 stringmessage=server urlencode( 欢迎来到赛跑专栏 );
先转换 再使用查询字符串
lishixinzhi/Article/program/net/201311/14061
0条评论