`

JSP页面跳转方法荟萃

阅读更多
1. response.sendRedirct("跳转到页面");

该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容.

request无法传值过去.

执行完该页所有代码,然后再跳转到页面.

跳转地址栏改变.

可以跳转到其他服务器上的页面response.sendRedirct(http://www.sun.com).


2.response.setHeader();

该方法和response.sendRedirect一样,通过修改HTTP协议的HEADER部分.


<%

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);

String newLocn="/index.html";

response.setHeader("Location",newLocn);

% >


3.<jsp:forward page="跳转页面"/>

该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果 在<jsp:forward>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意.

request可以传值过去.

直接跳转到页面,后面的代码不执行.

跳转后地址栏不变.

无法跳转到其他服务器上的页面.

图片不是绝对路径无法显示.


例子1:

from.jsp

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page buffer="1kb"%>

<%

long i=0;

int j = 0;

for(i=0;i<60;i++)

{

       out.println(j++);

}

%>

<jsp:forward page="to.jsp"/>


结果: 跳到to.jsp上.


例子2

from.jsp

<%@ page contentType="text/html;charset=gb2312"%>

<%@page buffer="1kb"%>


<%

long i=0;

int j = 0;

for(i=0;i<600;i++)

{

       out.println(j++);

}

%>

<jsp:forward page="to.jsp"/>



报错:


java.lang.IllegalStateException: Error: Attempt to clear a buffer that's already been flushed

org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:648)

org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:637)

org.apache.jsp.forward.from02_jsp._jspService(from02_jsp.java:58)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.pcvit.pan.filter.EncodingFilter.doFilter(EncodingFilter.java:19)



例子3:

from.jsp

<%@ page contentType="text/html;charset=gb2312"%>

<%@page buffer="1kb"%>


<%

long i=0;

int j = 0;

for(i=0;i<6000;i++)

{

       out.println(j++);

}

%>

<jsp:forward page="to.jsp"/>



结果: 没有跳到to.jsp上. 但是却显示出了from.jsp页面的代码执行结果.


------------------------------------------------------------------------------


                ?


------------------------------------------------------------------------------



4.request.getRequestDispatcher("跳转页面");

request可以传值过去.

执行完该页所有代码,然后再跳转到页面.

跳转地址栏不变.

不可以跳转到其他服务器上的页面


<%

RequestDispatcher rd = request.getRequestDispatcher("to.jsp");

rd.forward(request,response);

%>


------------------------------------------------------------------------------


PS:


服务端的输出缓冲区

缺省情况下:服务端要输出到客户端的内容,不直接写到客户端,而是先写到一个输出缓冲区中.只有在下面三中情况下,才会把该缓冲区的内容输出到客户端上:

该JSP网页已完成信息的输出

输出缓冲区已满

JSP中调用了out.flush()或response.flushbuffer()

输出缓冲区的大小可以用:或response.setBufferSize()设置,如下:

设置输出缓冲区的大小为1KB。或response.setBufferSize(1);

设置输出缓冲区的大小为0,即不缓冲。或response.setBufferSize(0);

用response.getBufferSize()或out.getBufferSize()可取的输出缓冲区的大小,单位为字 节. 用response.isCommitted()可检查看服务端是否已将数据输出到客户端. 如果返回值是true则已将数据输出到客户端,是 false则还没有.  


*******************************************************************************************

有以下3种方法可以做到输出重定向:

RESPONSE.SETREDERECT("URL") 该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容. response.sendRedirect("http://localhost:7001/index.html");
下面的方法也能改变HTTP HEADER属性,它的原理和 1 是一样的.
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn="/index.html";
response.setHeader("Location",newLocn);
% >
采用<JSP:FORWORD> 该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果在<JSP: FORWORD>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意.
说明:
1. 方法(1),(2)可以使用变量表示重定向的地址;方法(3)不能使用变量表示重定向的地址。
String add="./index.html";
<jsp:forward page= add />
无法重定向到index.html中去

String add=http://localhost:7001/index.html
response.sendRedirect(add);
可以重定向到http://localhost:7001/index.html中去。

2. 采用方法(1),(2)request中的变量(通过request.setAttribute()保存到request中的值)不能在新的页面中采用,采用方法(3)能. 综上,我们应该采用(1),(2)重定向比较好.

***************************************************************************************

使用Response Buffering

通过打开“response buffering”可以缓冲一个值得输出的整个页面内容,这将最小化输出到浏览器的数据量,从而提高了整体性能。每一次输出都耗费许多,所以写得越少, 效果越好。TCP/IP在发送少量大的数据包时,要比发送大量小的数据包工作效率高,因为它是慢速启动并不断发送的。

有2种方法 打开Response Buffering。首先,可以使用Internet Services Manager为整个应用程序打开response buffering,这是推荐的方式,而且在IIS4.0和IIS5.0中,默认状态下,response buffering是打开的。其次,在每一页面上,可以在头部放置如下代码开打开response buffering:

< % Response.Buffer = True % >

这段代码必须在任何数据输出到浏览器前被执行(就是说,在任何html内容显示前和在任何cookie被设置前)。通常情况下,为整个应用程序打开response buffering是很好的方案,这么做后就不用在每个页面头部设置如上的代码。

关于打开response buffering的一个通用问题是:用户必须要等待整个页面全部产生后,才能看到内容。对于一个长时间运行的页面来说,可以设置 Response.Buffer=False关闭缓冲。然后,好的策略是利用Response.Flush方法,它将输出所有已被ASP描述的HTML内 容到浏览器。比如,在描述了一个1,000行表格的100行后,ASP就可以使用Response.Flush来强迫输出这100行的内容到浏览器,这时 用户就可以看到前100行数据,同时其余的行数据正在准备生成。

注意,关于上面的1,000行表格输出的例子,对于一些浏览器器 来说,除非遇到< /table >标记,它们不会输出表格的任何内容。如果这样,可以将表格分割成许多含有少量行的多个表格,然后在每一个表格产生后,调用 Response.Flush输出。新版的Internet Explorer在整个表格下载后才显示内容,并且,如果定义了表格的列宽度,生成表格的速度将特别快。

关于打开response buffering的另外一个问题是:当生成非常大的页面时,将消耗非常大的服务器内存。


*****************************************************

1,在 <head >和 </head >之间加入这句就可以了: <meta HTTP-EQUIV=REFRESH CONTENT= "10;URL=http://www.ccb.cn " >
CONTENT后面的10表示秒数,URL后面可以是相对路径文件名,也可以是http的绝对路径。
这种方法属于客户端的跳转。


2,JS自动跳转
<table >
<tr >
<td id= "go_title " >3秒后自动跳转到论坛首页 </td >
</tr >
</table >
var time=0;
function gotoBbsIndex(){
time++;
if(time==3){
document.location.href= "bbs/main/index.html ";
}
document.getElementById( "go_title ").innerHTML=(3-time)+ "秒后自动跳转到论坛首页 ";
}
window.setInterval( "gotoBbsIndex() ",1000);
</script >
分享到:
评论
1 楼 Leeidol 2011-09-21  

相关推荐

    JSP页面跳转方法总结

    ### JSP页面跳转方法详解 #### 一、概述 JSP(Java Server Pages)是一种动态网页技术标准,被广泛应用于构建动态网站和Web应用程序。在JSP开发中,页面跳转是一项非常基础且重要的功能,它使得用户能够在不同的...

    JSP页面跳转方法汇总

    ### JSP页面跳转方法详解 #### 一、`response.sendRedirect` `response.sendRedirect`方法是JSP中最常见的页面跳转方式之一,它的工作原理是通过修改HTTP响应头中的`Location`字段来告知浏览器重新发送一个请求到...

    五种JSP页面跳转方法详解

    ### 五种JSP页面跳转方法详解 在Web开发中,页面间的跳转是非常常见的需求之一。JSP(JavaServer Pages)作为一种广泛使用的服务器端技术,在实现页面跳转方面提供了多种方式。本文将详细介绍五种JSP页面跳转的方法...

    java五种jsp页面跳转方法详解

    java五种jsp页面跳转方法详解 2009-08-21 09:06 1. RequestDispatcher.forward()  是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到 另外一个Servlet,JSP 或普通HTML...

    jsp实现页面跳转的方法

    ### jsp实现页面跳转的方法详解 在JavaServer Pages(JSP)开发中,页面跳转是一项基本且关键的技术,用于实现用户界面的导航和控制流。本文将深入探讨两种主要的页面跳转方法——`jsp:include`与`jsp:forward`,并...

    jsp页面跳转的五中方法

    ### JSP页面跳转的五种方法详解 #### 一、引言 在Web开发中,页面间的跳转是一项基本且重要的功能。JSP作为Java Web开发中的一个重要组成部分,提供了多种方式来实现页面间的跳转。本文将详细介绍五种常用的JSP页面...

    JSP页面跳转的五种方法

    ### JSP页面跳转的五种方法 在Java Web开发中,页面间的跳转是非常常见的需求之一。合理的页面跳转不仅可以提升用户体验,还能优化应用程序的结构。本文将详细介绍JSP页面跳转的五种方法:`RequestDispatcher....

    JSP 登录跳转页面

    JSP 登录跳转页面 在本节中,我们将详细介绍 JSP 登录跳转页面的实现细节,包括首页登录页面、判断 check 页面和最后的成功登录显示页面。 首页登录页面 首页登录页面是用户登录系统的入口点。该页面是使用 JSP ...

    Springboot+MyBatis+mysql+jsp页面跳转详细示例.docx

    - **skipped.jsp** 是一个跳转目标页面,可以从showUser.jsp通过请求/skip方法到达。 6. **MyBatis集成**: - MyBatis是轻量级的持久层框架,通过XML或注解方式配置SQL语句。在这个示例中,UserMapper.xml文件...

    jsp页面跳转

    ### JSP页面跳转方法详解 #### 一、RequestDispatcher.forward() **定义与用途:** `RequestDispatcher.forward()` 是一种服务器端的跳转方法,它主要用于在同一个Web应用内部进行页面之间的跳转。该方法的主要...

    页面自定跳转 超链接 跳转 jsp页面跳转

    在JSP中,页面跳转可以通过内置的response.sendRedirect()方法来实现。此方法接受一个URL作为参数,使客户端的浏览器重新请求该URL所指向的资源,从而实现页面跳转。 ### 使用meta标签实现页面自动跳转 HTML中的...

    SpringBoot实现jsp页面跳转简单实例

    接下来,我们需要创建一个控制器类,例如`HelloController`,并在其中定义一个处理方法,这个方法将用于接收HTTP请求并跳转到JSP页面。使用`@RequestMapping`或`@GetMapping`注解来指定URL映射,然后使用`@...

    JSP页面的五种跳转方法

    这里主要介绍五种常见的JSP页面跳转方法,包括RequestDispatcher.forward()、response.sendRedirect()、&lt;jsp:forward page="" / &gt;、Meta标签以及JavaScript的location对象。 1. RequestDispatcher.forward() 这种...

    jsp页面的五种跳转方式

    对于使用 Java Server Pages (JSP) 的开发者来说,掌握不同类型的页面跳转方法非常重要,这不仅有助于提高开发效率,还能增强应用程序的性能与用户体验。本文将详细介绍 JSP 中五种常用的页面跳转方式及其应用场景。...

    JSP_页面跳转,JSP_页面跳转

    ”这行代码,就明确展示了如何使用`sendRedirect()`方法来实现从当前页面到“ShowArticleTree.jsp”页面的跳转。值得注意的是,这种跳转方式属于客户端跳转,每次跳转都会产生一次新的HTTP请求,因此会消耗额外的...

    JSP页面跳转方法大全

    先来介绍一下在服务端JSP脚本中跳转页面的几种方法: 1. response.sendRedirct(“跳转到页面”); 该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容. request无法传值过去...

    jsp_html_web_实现页面跳转

    综上所述,在JSP与HTML结合的Web应用中实现页面跳转涉及到多方面的技术和方法。开发者需要根据实际需求选择合适的技术方案,并充分考虑用户体验和安全性等因素。通过不断学习和实践,可以更加熟练地掌握这些技能。

    小结jsp页面跳转问题

    通过本文档,我们将深入探讨几种常用的JSP页面跳转方式:`response.sendRedirect()`、`response.setHeader()`以及`&lt;jsp:forward&gt;`指令,并通过具体的示例代码来解析这些方法的工作原理及注意事项。 #### 一、`...

    JSP页面跳转大全.docx

    在JavaServer Pages (JSP) 中,页面跳转是一个常见的操作,用于实现用户请求的重定向或页面间的逻辑流程控制。以下是对不同跳转方法的详细说明: 1. **forward() 方法** `forward()` 方法属于 `javax.servlet....

Global site tag (gtag.js) - Google Analytics