JSP页面的跳转方式汇总
1、使用超级链接跳转
示例:
<a href=http://www.baidu.com?s=”XX”></a>
这种跳转方式是基于浏览器的,跳转过程中可以传递参数。缺点是不能保持请求状态,而且浏览器在跳转页面的时候会显示后面的查询字符串的信息,安全性得不到保证。一般用于页面的静态跳转和一些需要传递不重要的数据的时候。
2、使用表单提交的方式跳转页面
示例:
<form action=”url” method=”post/get”>
<input type=”submit” value=”submit”>
</form>
这种跳转方式也是基于浏览器的,我们可以设定跳转的目标页面,也可以设定跳转的方法,还可以设定跳转的过程中提交数据的方式。如果使用get方式提交数据的话,功能类似于超级链接。如果使用post方式提交数据的话,数据会被隐藏,数据的安全性也能够得到保证,所以在提交数据的时候我们一般都会去使用post方式提交。一般用于收集客户端用户的数据,特殊情况还能够完成页面的跳转。
3、修改HTTP header的Location属性来重定向
通过设置直接修改地址栏来实现页面的重定向。
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = “XX.jsp”;
response.setHeader(“Location”,newLocn);
注:response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);和response.setStatus(302);是等价的。
4、JSP中实现在某页面停留若干秒后,自动重定向到另一页面
在html文件中,下面的代码:
<meta http-equiv="refresh" content="300; url=index.jsp">
它的含义:在5分钟之后正在浏览的页面将会自动变为index.jsp这一页。代码中300为刷新的延迟时间,以秒为单位。Index.jsp为你想转向的目标页,若为本页则为自动刷新本页。
由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。
关键代码:
String content=stayTime+";URL="+URL;
response.setHeader(“refresh",content);
5、jsp标签跳转:<jsp:forward page=“url” />
它的底层部分是由RequestDispatcher来实现的。注意:它不能改变浏览器地址,刷新的话会导致重复提交。
我们可以使用它在跳转的时候给目标页面传递参数,并且这样的提交方式能够保证请求的连续性,不管中间跳转了多少次页面,他们都属于同一次请求。注意:不管你跳转了多少次页面,地址栏都是不会改变的(由第一次请求的地址决定)。
6、RequestDispatcher.forword()
我们通过RequestDispatcher接口的forword()方法,实现页面的重定向。
具体使用方式如下:
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher(“/index1.jsp”); //重定向的页面
rd.forward(request, response);
注意:这种跳转方式能够传递resquest和response对象,通过这种方式跳转的页面不会更改页面的地址栏。一般在servlet中使用。
7、response.sendRedirect(“url”)
在用户的浏览器端工作,sendRedirect()可以带参数传递,它还可以重定向至不同的主机上。sendRedirect() 在重定向后地址栏会变成重定向之后的URL。
response.sendRedirect("index.jsp?name=value");
在目标页面获得参数值
request. getParameter(“name”);
request.getParameterNames();
request.getParameterValues(“name”);
这种跳转方式在客户端和服务端都会经常用到,不足的是对于需要大量传值的跳转来说,使用这种跳转方式会显得很吃力。