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);
%>
服务端的输出缓冲区
缺省情况下:服务端要输出到客户端的内容,不直接写到客户端,而是先写到一个输出缓冲区中.只有在下面三中情况下,才会把该缓冲区的内容输出到客户端上:
该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.getElementByIdx_x( "go_title ").innerHTML=(3-time)+ "秒后自动跳转到论坛首页 ";
}
window.setInterval( "gotoBbsIndex() ",1000);
</script >
分享到:
相关推荐
Web前端面试宝典涵盖了许多关键知识点,主要集中在JavaScript(JS)、HTML、CSS以及JSP等方面。以下是这些面试题中涉及的一些重要概念和技术的详细解析: 1. **JS 闭包**: 闭包是一种在JavaScript中常见的特性,...
在前端笔试面试题中,Java作为一门广泛应用的编程语言,常常是面试官考察候选人技术能力的重要环节。以下是一些关于Java在前端领域的核心知识点和常见面试题,供您参考: 一、基础知识 1. Java语法:理解基本数据...
### 前端面试知识点解析 #### 单选题知识点解析 **1. HTML5的DTD** - **知识点概述:** DTD(Document Type Definition,文档类型定义)是一组定义了XML或SGML文档结构的规则。对于HTML5而言,由于其设计目标之一...
【标题】"前端面试题总结.zip"所包含的是一个针对前端开发者面试的综合资料包,主要聚焦于前端技术领域的各种面试问题和解答。这个压缩文件的核心是帮助前端工程师准备面试,提升他们对JavaScript、HTML、CSS等关键...
【Java Web编程面试题】是...这些面试题涵盖了Java Web开发的基础知识,包括前端样式控制、数据交换格式、网络通信协议,以及服务器端的处理逻辑和架构。熟悉这些概念和用法对于成为一名合格的Java Web开发者至关重要。
JavaWeb全栈面试题涵盖了Java基础、Web开发、数据库、服务器、线程管理、内存分布、前端技术等多个关键领域,是全面评估一个开发者综合技能的重要参考。以下将针对这些知识点进行详细阐述: 1. **Java基础**:Java...
【JSP面试题详解】 1. **Statement, PreparedStatement, CallableStatement的区别** - Statement是最基本的SQL执行方式,用于执行静态SQL语句,不支持预编译,效率相对较低,适用于简单查询。 - ...
根据给定的文件信息,以下是对“中科软面试题”所涉及的重要IT知识点的详细解析: ### 1. Servlet Servlet是一种服务器端的Java技术,用于动态生成网页内容。Servlet可以处理HTTP请求,并生成响应。它运行在Web...
### Web面试题解析 #### 一、JSP与Servlet的区别及应用场景 - **定义与本质**: - **JSP**:全称为Java Server Pages,是Sun Microsystems在Servlet基础上发展出来的一种动态网页技术标准,其本质是Servlet的一种...
本资料“WEB面试题汇总”显然是一份精心整理的面试指南,旨在帮助求职者准备Java Web相关的面试。这份PDF文件可能包含了各种常见的问题、技术要点以及面试技巧,覆盖了从基础概念到高级应用的广泛内容。以下是一些...
"Java面试题及答案详解" Java是目前最流行的编程语言之一,在软件开发行业中广泛应用。以下是Java面试题及答案的详解: Java基础 1. JDK 和 JRE 的区别是什么? JDK(Java Development Kit)是Java开发工具包,...
Java笔试面试题涉及的知识点相当丰富,包括了Java基础、前端技术、框架应用以及数据库等多个方面,具体如下: 1. JSP和Servlet的区别与联系: JSP(Java Server Pages)是一种动态网页技术,是Servlet技术的一种...
前端大厂最新面试题-Vue Vue.js 是一个用于创建用户界面的开源 JavaScript 框架,也是一个创建单页应用的 Web 应用框架。Vue 的核心特性包括数据驱动、组件化、双向数据绑定、生命周期钩子、模板引擎等。 以下是对...
“面试题web.txt”可能专注于Web开发相关的面试问题,如HTTP协议、Servlet、JSP、前端框架等。 通过学习和解答这些面试题,程序员可以系统地复习和提升自己的技术能力,更好地应对面试中的技术环节。对于每个问题,...
针对这道面试题,可能的问题方向包括: 1. **Ajax的基本工作原理**:解释Ajax是如何通过XMLHttpRequest对象实现异步通信的,涉及的步骤包括创建对象、打开连接、设置请求方法、发送请求、接收响应和处理数据。 2. ...
【中软国际面试题解析】 在中软国际的面试中,Java编程能力是重点考察的技能之一。以下是一些基于给定题目所涉及的Java知识点的详细解释: 1. `MyObject`的方法对`if`表达式的影响: - `equals()`方法用于比较两...
这份“javaee面试题集锦”涵盖了广泛的JavaEE相关知识点,对于求职者或开发者来说,是提升技能和准备面试的宝贵资源。下面,我们将深入探讨这些面试题可能涵盖的关键技术领域。 1. **Java基础** - 类与对象:理解...
Servlet是Java Web开发的基础,面试题可能涉及: - Servlet生命周期:init、service、destroy方法的作用。 - 请求和响应对象的使用,以及HTTP方法GET和POST的区别。 - Filter和Listener的概念,以及如何配置和...
根据给出的文件内容,以下是对标题《S2SH面试题专家总结》以及相关描述《很详细的关于struts2、spring和hibernate的面试题》的知识点总结: 1. Struts2框架的工作原理 Struts2框架是基于MVC设计模式的一个Java EE ...