本文目录一览:
JSP如何实现网页重定向
重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览仆饭得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。 转发和重定向的区别 不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题。 重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。 转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。 正文开始:先是看上去不同,他们的调用分别如下: request.getRequestDispatcher("apage.jsp").forward(request response);//转发到apage.jsp response.sendRedirect("apage.jsp");//重定向到apage.jsp 在jsp页面中你也会看到通过下面的方式实现转发: 提到转发和重定向就不得不提到request作用域。很多初学者都知道当我们提交一个表单时,就创建了一个新的请求。实际上,当我们点击一个链接时,也创建了一个新的请求。那么一个请求的作用于到底有多大呢?例如:在页面a.jsp中有一个链接这是指向b的一个链接,而且还带了一个参数。当我们点击这个连接的时候,就产生了一个请求,为了明确起见,我们把它叫做requestA-B。现在,在b.jsp页面中我们就可以从这个请求中获取信息了。在b.jsp中你可以写入out.println(request.getParameter("id"))进行测试。下面更复杂一点,我们在b.jsp页面中增加下面的语句: request.setAttribute("name""funcreal"); out.println(request.getAttriblute("name"));//成功显示了name变量的值。 现在在b.jsp中再增加一个链接:这是指向c的一个链接,而且还带了一个参数当我们点击这个连接的时候,将产生一个新的请求,这时requestA-B也就安息了,新的请求叫做requestB-C。同样的道理,在c.jsp中,我们可以访问到的变量只有age,因为id,name这两个变量都属于requestA-B,此时他已经不存在了。下面是源代码: a.jsp 指向b.jsp,而且还带了一个参数id=1。requestA-B现在诞生了 b.jsp requestA-B已经结束了。指向c.jsp,而且还带了一个参数age=23 c.jsp d.jsp requestB-C的魔爪已经伸到了d.jsp页面 运行程序,你会发现c页面中的内容没有显示出来,因为forward是自动执行的,地址栏中虽然是c.jsp但实际上,但浏览器中显示的已经是d.jsp的内容了,而且看到了从b.jsp传过来的参数。你可以简单得这样理解:转发,就是延长了requestB-C的作用域,,这一句话实际上是把c.jsp和d.jsp粘到了一起,他们就像是在一个页面中。
怎样进行网页重定向
网页重定向就是将用户请求的网页转向其它位置。即当用户访问某个网页A时,网页A自动定向到网页B,这样用户实际看到的就是网页B了。
网页重定向在网站开发中经常使用,如:
1) 公司的域名进行了变更,为了用户也能通过原有域名进行访问,就得使用重定向。常见的购物网站,好多都进行了域名变更,但原域名仍保留,输入原域名后,自动定向到新的域名。
2) 在用户登录页面A中,输入完用户名密码后,点击登录时,表单提交到验证网页B,在服务端进行验证通过后,会自动定向到用户信息网页C。
下面介绍几种网页重定向的几种常用方法。
通过javascript脚本进行重定向
1
将a.html提交到b.html,b.html重定向到c.html。
(a.html相当于用户登录网页,b.html相当于验证用户信息网页,c.html相当于重定向的网页)
这里演示的仅是重定向的功能,因此代码尽可能简单。
a.html内容如下:
html
head
metahttp-equiv="Content-Type" content="text/html;charset=utf-8" /
/head
body
form action="b.html"method="post"
input name = "submit"type="submit" value="提交"
/form
/body
/html
预览图如下:
2
b.html内容如下:
html
head
metahttp-equiv="Content-Type" content="text/html;charset=utf-8" /
scripttype="text/javascript"
function load()
{
window.location ="c.html";
}
/script
/head
body onload = "load()"
验证通过,现在进入用户信息页面。
/body
/html
3
c.html内容如下:
html
head
metahttp-equiv="Content-Type" content="text/html;charset=utf-8" /
/head
body
欢迎光临!
/body
/html
预览图如下:
4
重点在b.html,重定向的代码就在其中的javascript脚本load()函数中。在b网页加载完毕后,会调用此函数,此函数的重定向代码就一句:
window.location = "c.html";
怎么样?是不是很简单。
如果想定向前其它网页,如百度首页,可以这么写:
window.location=””;
注意“http://”不能少。
END
通过php代码进行重定向
1
因为涉及到php代码的执行,因此需要先做一个网站,这里假定网站已做好。
a.html中的代码很简单,只需将上面的form中的action改为指定b.php而不是b.html即可。
b.php的代码如下:
?phpheader("Location:c.html"); ?
要在本地网站进行演示,可以将a.html、b.php、c.html拷贝到你的网站目录下,在浏览器地址栏中输入: localhost/a.html进行操作。
END
通过asp.net代码进行重定向
1
代码和php类似,因要先做一个支持asp.net运行的网站,将a.html中的action指定b.aspx,b.aspx中的代码如下:
% Server.Transfer("c.html"); %
END
通过jsp代码进行重定向
代码和php类似,因要先做一个支持jsp运行的网站,重定向代码如下:
jsp:forward page="c.html"
JSP如何实现网页重定向?
jsp实现页面的重定向,使用的是response.sendRedirect("a.jsp");实现页面重定向到a.jsp这个页面。
分为两种写法:
1、如果实在jsp页面中写代码的话,将response.sendRedirect("a.jsp");放在%%里面就行了,即:%response.sendRedirect("a.jsp");%
2、如果是在java文件(如servlet)中写代码的话,只需写response.sendRedirect("a.jsp");就行了。
接下来简单说说页面的转发(forward)与重定向(sendRedirect)的区别:
重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。