1.可以使用:
responsesendRedirect(&>
1Jsp页面跳转的第一种方式:提交表单
2Jsp页面跳转的第二种方式:Javascript实现
3Jsp页面跳转的第三种方式:重定向分
一个web资源收到客户端请求后,通知服务器去调用另外一个资源进行处理(服务器内调用),称之请求转发。当客户端请求提交到服务器的jsp处理的时候这个jsp可以携带请求和响应对象转移到web应用的另一处进行处理在另外一处进行处理后,产生结果页面响应给客户端浏览器此时客户端浏览器可以看到结果页面,但URL无变化所以不知道服务器端经过几层处理
重定向:redirect
一个web资源收到客户端请求后,通知浏览器去访问另外一个Web资源(浏览器进行2次请求),称之为重定向。
当客户端浏览器提交到服务器的JSP处理的时候这个JSP返回一个响应:去请求另外一次的URL此时客户端浏览器会再次发出一个新的请求到这个新的地址新的URL地址负责为浏览器产生响应这时浏览器看到的URL是第二次请求所对应的URL地址
两者的区别,转发和重定向的选择
重定向的速度比转发慢,因为浏览器还得发出一个新的请求,如果在使用转发和重定向都无所谓的时候建议使用转发。
因为转发只能访问当前WEB的应用程序,所以不同WEB应用程序之间的访问,特别是要访问到另外一个WEB站点上的资源的情况,这个时候就只能使用重定向了。
1forward是服务器内部转发,而redirect是通过客户端进行转发
2如果使用forward转发的话,客户端URL地址不会改变,但是redirect请求的话,URL地址会变
3如果forward进行转发,转发页面和被转发页面处于一个request请求内,而jsp跳转分为转发和重定向!转发:举个例子就是别人请求你,你也会给人答案,只不过是把别人的答案拿过来给请求你的人来看。重定向:如果别人请求到你的话,你也给答案,你说到别人那里拿去吧!就直接让请求你的人去的地方了啊!responsesetHeader()方法使用指定的头名称以及相应的值来设置头信息,如果头信息已经设置,则新的值会覆盖旧的值,如果头信息已经发出去,则此方法的设置将被忽略。
程序代码中的responsesetStatus(),用来设定一个"态码"。
其内容为SC_MOVED_TEMPORARILY,而这个SC_MOVED_TEMPORARILY表示暂时移动目前网页到新地址。
此行程序就是通知客户端要更动目前网页的地址。
通知客户端要更动目前网页的地址" 是 服务器 和 客户端浏览器的 通讯机制, 是告诉浏览器怎么处理, 而不是告诉使用的人怎么处理, 对用户而言是透明的首先要明白这些对象的作用以及联系,(第一、第二种情况解释):先要知道这些对象是存在哪里的其次是了解这些对象的作用范围,先说第一种情况吧用重定向就是重新发送一个请求你可以用firefox的firebug工具(或者chrome自带的开发者工具看一下)重定向是向服务器重新发一个请求第一cookie是存在于浏览器中的,也就是如果你把cookie写入了你的硬盘,那么每次当你用该浏览器不管访问那个页面都会看到你写到硬盘中的cookie而重定向就是再一次发起请求就是这个请求以外的请求了因为你的上一个请求的处理把cookie放入到了浏览器中所以再进行一次请求当然能够获取到cookie的值了
还有第二种情况是请求转发这种情况是不会再一次请求服务器的请求转发的一次是把你本次的请求交给另一个处理程序处理当然,请求的参数还是刚开始你提交的那些参数(并不包括你后来写到浏览器中的cookie的值了)。要理解第一、第二中情况,就要理解cookie是存在于浏览器中的,只要浏览器不清除cookie的信息,只要你访问任何网页都会有cookie的值噢2、就是要理解重定向跟请求转发的区别,重定向是在本次请求响应之后又向服务器发送了与上次请求毫不相干的请求而此时cookie已经在浏览器中了所以就会看到cookie的值了而请求转发虽然在转发的时候也把cookie的值写到了浏览器中但是这次转发的请求还是上一次的请求参数也全部一样所以这次的请求中并不包括cookie的值
(第三、第四种情况解释)如果进行了重定向或者请求转发,那么就相当于该请求或者又发起的请求已经进入了另一个程序中处理所以这两个语句后面的语句都将不会执行了所以根本没有写入cookie
至于第五第六中情况的话,那只能说我第三第四种情况理解有点错误不过按说这两个语句后面的应该都不会执行的
第七第八种情况是因为session是一次会话中设置的值只要每个浏览器对session的处理不一样,有些浏览器就是如果该浏览器不关闭,那么session永远存在(除非session设置了过期的最长不活动时间)那么session有可能失效,所以一般如果你把session写入服务器,那么什么时候访问都会有值的重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。
怎么选择是重定向还是转发呢?通常情况下转发更快,而且能保持request内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用。如果你不想看到这样的情况,则选择转发。
综上,转发和重定向的区别 :
不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题。
重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)