JSP/Servlet学习提纲
Chapter3:JSP语法基础(周三7、8节,周四1、2节)
基础知识:(要求:将解答写到每个题目下方)
- 一个JSP页面可以由哪5部分内容组成?并举例
JSP注释:<%--此处为注释-->
脚本元素
<%!
Int I = 0;
Java.util.Date date = new java.util.Date();
%>
JSP页面中的表达式
<%=表达式%>
JSP页面中的程序段
<% JAVA程序段%>
JSP指令
Page指令
Include指令
Taglib指令
JSP动作
<jsp:include>
<jsp:param>
<jsp:forward>
<jsp:useBean>
- JSP页面中嵌入Java程序段的方法及其所声明的变量的特征。
<% java程序段%>
- JSP页面中page指令的作用及使用规则。
见教材P68
- JSP页面中include指令的《作用及使用规则。
<%@ include file = “url”%>
见教材P69
- 简述<jsp:include>动作标签的作用,及其与include指令的区别与联系。
1:<jsp:include page=”文件的URL|<%=表达式%>” flush=”true”/>
2:<jsp:include page=”文件的URL|<%=表达式”%>” flush = “true”>
嵌套的子标记
</jsp:include>
见教材P71
- 简述<jsp:param>动作标签的作用,及其参数含义。
见教材P72
<jsp:param name=”参数名称” value=”参数值”/>
- 简述<jsp:forward>动作标签的作用,及其语法格式。
1:<jsp:forward page=”跳转页面的URL|<%=表达式%>”/>
2:<jsp:forward
- 简述JSP内置对象的基本含义,及其九种内置对象的主要作用(可列表给出)。
1.request
该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。request对象的作用域为一次请求。
2.response
该对象是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象的作用域只在JSP页面内有效。
3.session
该对象是客服端和服务器的一次会话。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。直到客户端断开连接或者,session时间到期后断开。
4.application
该对象是存在于整个应用中,开始于服务器启动,结束于服务器关闭。这个对象中可以保存信息在应用任何地方都可以用。
5.out
该对象是JspWriter类的实例,是向客户端浏览器输出内容经常要用到的对象 。就只能作用在当前页面。用完过后要及时清除缓冲区的内容,腾出空间,还要记得关闭输出流。
6.pagecontext
该对象可以获取当前jsp页面任何范围的参数。比如out、request、reponse、session、application 等对象。
7.config
该对象的作用就是当一个Servlet 初始化时,容器(Tomcat、JRun、Resin等)把某些信息;服务器的一些信息等通过 config对象传递给这个 Servlet。
8.page
该对象就是指向的当前jsp页面本身。
9.exception
对象就是在页面运行过程中出了异常来显示异常信息的,但是必须在页面中设置 isErrorPage="true" 才能使用;
9、简述JSP内置对象的4种作用域的区别。
pageContext:用户请求的当前页面;
request:用户请求访问的当前组件,以及和当前web组件共享同一用户请求的web组件;
session:同一个Http会话中的web组件共享;
application:整个web应用的所有web组件共享,即只要是同一个服务器下的均可使用。
pageContext<request<session<application
- 观察并认识各个内置对象的主要方法。
1、request对象javax.servlet.http.HttpServletRequest
request对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对 象的作用域为一次请求。
当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存发岛一个字节数组中,然后再将这个数组转化为字符串对象如下
Request常用的方法:getParameter(String strTextName) 获取表单提交的信息.
getProtocol() 获取客户使用的协议。
String strProtocol=request.getProtocol();
getServletPath() 获取客户提交信息的页面。String strServlet=request.getServletPath();
getMethod() 获取客户提交信息的方式 String strMethod=request.getMethod();
getHeader() 获取HTTP头文件中的accept,accept-encoding和Host的值,String strHeader=request.getHeader();
getRermoteAddr() 获取客户的IP地址。String strIP=request.getRemoteAddr();
getRemoteHost() 获取客户机的名称。String clientName=request.getRemoteHost();
getServerName() 获取服务器名称。 String serverName=request.getServerName();
getServerPort() 获取服务器的端口号。 int serverPort=request.getServerPort();
getParameterNames() 获取客户端提交的所有参数的名字。
Enumeration enum = request.getParameterNames();
while(enum.hasMoreElements())
{
Strings(String)enum.nextElement();
out.println(s);
}
2、response对象 javax.servlet.http.HttpServletResponse
response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。
具有动态响应contentType属性,当一个用户访问一个JSP页面时,如果该页面用page指令设置页面的contentType属性是text/html,那么JSP引擎将按照这个属性值做出反应。
如果要动态改变这换个属性值来响应客户,就需要使用Response对象的setContentType(String s)方法来改变contentType的属性值。
response.setContentType(String s); 参数s可取text/html,application/x-msexcel,application/msword等。
在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用Response的sendRedirect(URL)方法实现客户的重定向。
例如response.sendRedirect(index.jsp);
3、session对象 javax.servlet.http.HttpSession
Session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。
当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个Session对象,同时分配一个String类型的ID号,JSP引擎同时将这换个ID号发送到客户端,存放在Cookie中,这样Session对象,直到客户关闭浏览器后,服务器端该客户的Session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的Session对象。
session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。
session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
public String getId():获取Session对象编号。
public void setAttribute(String key,Object obj):将参数Object指定的对象obj添加到Session对象中,并为添加的对象指定一个索引关键字。
public Object getAttribute(String key):获取Session对象中含有关键字的对象。
public Boolean isNew():判断是否是一个新的客户。
4、application对象javax.servlet.ServletContext
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
服务器启动后就产生了这个Application对象,当客户再所访问的网站的各个页面之间浏览时,这个Application对象都是同一个,直到服务器关闭。但是与Session对象不同的时,所有客户的Application对象都时同一个,即所有客户共享这个内置的Application对象。
setAttribute(String key,Object obj):将参数Object指定的对象obj添加到Application对象中,并为添加的对象指定一个索引关键字。
getAttribute(String key):获取Application对象中含有关键字的对象。
5、out 对象javax.servlet.jsp.jspWriter
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
Out对象时一个输出流,用来向客户端输出数据。Out对象用于各种数据的输出。其常用方法如下。
out.print():输出各种类型数据。
out.newLine():输出一个换行符。
out.close():关闭流。
6、pageContext 对象javax.servlet.jsp.PageContext
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。
pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。
7、config 对象javax.servlet.ServletConfig
config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
8 cookie 对象
Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户电脑上保存信息并且随后再取回它。举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。
创建一个Cookie对象 调用Cookie对象的构造函数就可以创建Cookie对象。Cookie对象的构造函数有两个字符串参数:Cookie名字和Cookie值。
例如:Cookie c = new Cookie(username”,john”); 将Cookie对象传送到客户端。
JSP中,如果要将封装好的Cookie对象传送到客户端,可使用Response对象的addCookie()方法。
例如:response.addCookie(c),读取保存到客户端的Cookie。
使用Request对象的getCookie()方法,执行时将所有客户端传来的Cookie对象以数组的形式排列,如果要取出符合需要的Cookie对象,就需要循环比较数组内每个对象的关键字。设置Cookie对象的有效时间,用Cookie对象的setMaxAge()方法便可以设置Cookie对象的有效时间,
例如:Cookie c = newCookie(username”,”john”);c.setMaxAge(3600);
Cookie对象的典型应用时用来统计网站的访问人数。由于代理服务器、缓存等的使用,唯一能帮助网站精确统计来访人数的方法就是为每个访问者建立一个唯一ID。使用Cookie,网站可以完成以下工作:
测定多少人访问过。测定访问者有多少是新用户(即第一次来访),多少是老用户。
测定一个用户多久访问一次网站。当一个用户第一次访问时,网站在数据库中建立一个新的ID,并把ID通过Cookie传送给用户。用户再次来访时,网站把该用户ID对应的计数器加1,得到用户的来访次数。
9、exception 对象java.lang.Throwable
exception 对象的作用是显示异常信息,只有在包含 isErrorPage=”true” 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。
excepation对象和Java的所有对象一样,都具有系统提供的继承 结构。
exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
11、查找资料,理解Cookie的基本含义及作用,并与session对象功能进行对比。
含义:
Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用。由于“Cookie”具有可以保存在客户机上的神奇特性, 因此它可以帮助我们实现记录用户个人信息的功能, 而这一切都不必使用复杂的CGI等程序
特点:
cookie中的数据保存在客户端浏览器中
浏览器对cookie有一定的限制:单个cookie的大小不能超过4kb;同一个域名下的cookie数量不能超过20个
作用:
cookie一般用于存储少量的不太敏感的数据
在不登录的情况下,完成服务器对客户端身份的识别
例如:打开京东网站,在不登录的情况下,添加商品到购物车中。然后下一次再打开京东网站时,购物车中依然会有添加的商品。
为什么会这样呢?
因为当我们把商品添加到购物车以后,会在cookie中存储一些数据,下次再打开京东网站时,浏览器会将cookie发给服务器,服务器看到cookie中的数据后,就能够判断出购物车中有商品,所以返回的页面中,购物车里面是有商品的.
基本技能:(要求:将代码及运行结果截图添加到每个题目下方)
- 练习example3_1.jsp,对照表3.1体会page指令的各属性含义。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_1</title>
</head>
<body>
<%Date date = new Date(); %>
当前的系统日期为:<%=date %>
<br>
<%
for(int i=1;i<6;i++)
out.print("打印了" + i + "次<br>");
%>
</body>
</html>
- 练习example3_2.jsp,体会include指令的作用(需要先建立sub.jsp文件)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_2</title>
</head>
<body>
<%@ include file="sub.jsp" %>
-------------------------------------<br>
这是主文件
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_2</title>
</head>
<body>
<%@ include file="sub.jsp" %>
-------------------------------------<br>
这是主文件
</body>
</html>
- 练习example3_3.jsp,体会<jsp:include>动作标签的作用(需要先建立include.jsp文件)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_3</title>
</head>
<body>
以下是包含文件include.jsp中的内容:<br>
--------------------------------------------<br>
<jsp:include page="include.jsp" flush="true"/>
<br>
以下为主文件:<br>
--------------------------------------------<br>
测试include动作标记的用法
<!-- 我们在这里用include的两种不同形式来引入date.jsp这个文件. -->
</body>
</html>
- 练习example3_4.jsp,体会<jsp:param>动作标签的作用(需要先建立calculate.jsp文件)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_3</title>
</head>
<body>
以下是包含文件include.jsp中的内容:<br>
--------------------------------------------<br>
<jsp:include page="include.jsp" flush="true"/>
<br>
以下为主文件:<br>
--------------------------------------------<br>
测试include动作标记的用法
<!-- 我们在这里用include的两种不同形式来引入date.jsp这个文件. -->
</body>
</html>
- 练习example3_5.jsp,体会<jsp:forward>动作标签的作用(需要先建立forward.jsp文件)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_5</title>
</head>
<body>
随机产生一个成绩(0-100),判断其结果是否及格。
<%
request.setCharacterEncoding("utf-8");
int r = (int)(Math.random()*100);
if(r>=60)
{
%>
<jsp:forward page="forward.jsp">
<jsp:param value="<%=r %>" name="score"/>
<jsp:param value="恭喜,你及格了!" name="result" />
</jsp:forward>
<%
}
else
{
%>
<jsp:forward page = "forward.jsp">
<jsp:param value="<%=r %>" name="score"/>
<jsp:param value="再接再励哦!" name="result"/>
</jsp:forward>
<%
}
out.println("程序结束,但此行代码不会被执行");
%>
</body>
</html>
- 练习example3_6.jsp,体会request对象部分方法的使用(需要先建立result.jsp文件)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_6</title>
</head>
<body>
<form action="result.jsp" method="post">
请输入内容:<input type="text" name="param"/><br>
<input type="submit" value="确定" />
</form>
</body>
</html>
- 练习example3_7.jsp,体会response对象部分方法的使用(需要先建立cookie.jsp文件)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_7</title>
</head>
<body>
<%
Cookie c1 = new Cookie("name","Java") ;
Cookie c2 = new Cookie("password","123456") ;
// 最大保存时间为180秒
c1.setMaxAge(180) ;
c2.setMaxAge(180) ;
// 通过response对象将Cookie设置到客户端
response.addCookie(c1) ;
response.addCookie(c2) ;
%>
</body>
</html>
- 练习example3_8.jsp,体会page对象部分方法的使用。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_8</title>
</head>
<body>
本页面对应的Servlet为:<%=page.getClass() %><br>
本页面对应的Servlet hash码为:<%=page.hashCode() %><br>
本页面使用的JSP引擎为:<%=((HttpJspPage)page).getServletInfo() %><br>
</body>
</html>
- 练习example3_9.jsp,体会pageContext对象部分方法的使用(需要先建立pageContext.jsp文件)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_9</title>
</head>
<body>
<%
//设置一个属性name,其值为PageContext。取值范围为request
pageContext.setAttribute("name","PageContext对象",pageContext.REQUEST_SCOPE);
pageContext.forward("pageContext.jsp");
%>
</body>
</html>
- 练习example3_10.jsp,体会out对象部分方法的使用。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_10</title>
</head>
<body>
<%
//向JSP页面中输出文本
out.print("明德新民,至于至善");
//输出HTML标签,相当于换行
out.print("<br>");
%>
缓冲区的大小为:<%=out.getBufferSize() %><br>
缓冲区的可用大小为:<%=out.getRemaining() %><br>
是否为自动清空缓冲区<%=out.isAutoFlush() %><br>
<%
//输出JavaScript脚本
out.println("<SCRIPT type=\"text/javascript\">alert(\"测试out对象的使用!\");</SCRIPT>");
%>
</body>
</html>
- 练习example3_11.jsp,体会session对象部分方法的使用(需要先建立success.jsp文件)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_11</title>
</head>
<body>
<div>
<form action="success.jsp" method="post">
用户名:<input type="text" name="username"/> <br><br>
密 码:<input type="password" name="password"/><br>
<input type="submit" value="登录"/>
</form>
</div>
</body>
</html>
- 练习example3_12.jsp,体会session对象部分方法的使用(需要先建立success.jsp文件)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_12</title>
</head>
<body>
<%
Object number = application.getAttribute("count");
int num = 0;
if(number == null)
{
application.setAttribute("count",1);
}
else
{
num = (Integer)number;
num++;
application.setAttribute("count",num);
}
out.print("当前访问本页面的次数为:" + num);
%>
<br>
以下是application对象信息<br>
------------------------------------------------------
<br>
支持Servlet API主版本号:<%=application.getMajorVersion() %><br>
支持Servlet API次版本号:<%=application.getMinorVersion() %><br>
Web应用的实际路径:<%=application.getRealPath("/") %><br>
Web服务器的版本信息:<%=application.getServerInfo() %><br>
Web应用的名称为:<%=application.getServletContextName() %><br>
</body>
</html>
- 参照教材或查找资料,编写一个功能相对完整的web.xml文件,并体会其中各种元素或标签的含义,并实现example3_13.jsp的功能。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_13</title>
</head>
<body>
读取web.xml中初始化参数data的值为:<%=config.getInitParameter("data") %>
</body>
</html>
- 练习example3_14.jsp,体会exception对象部分方法的使用(需要先建立error.jsp文件)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="example3_16.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>错误页面</title>
</head>
<body>
<%
int[] array = {1,2,3,4,5};
//下面的代码将导致数组越界
for(int i=0;i<6;i++)
{
out.print("array[" + i + "] = " + array[i]);
out.newLine();
}
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example3_16</title>
</head>
<body>
<%
out.print("error.jsp发生了错误,具体原因如下:<br>");
out.print("---------------------------------------<br>");
out.print(exception.getMessage());
%>
</body>
</html>
素质提升:(要求:将解答或实现代码、运行结果写到每个题目下方)
- 通过练习,总结jsp指令、动作标签等所实现的功能,及其使用时的特点。
一、JSP三大指令标签
1.page:用来定义整个JSP页面的一些属性和这些属性的值。如:<%@ page buffer = “24kb”%>
注意:如果为一个属性指定几个值,这些值需要用逗号隔开。page指令只能给import属性指定多个值,其它的属性只能指定一个值。
正确:
<%@ page import = "java.util.*"%>
<%@ page import = "java.sql.*"%>
错误:
<%@ page info = "我是阿伟"%>
<%@ page info = "我是阿伟的弟弟"%>
2.include:用来包含静态文件
用法如下:
<%@ include file= "包含文件的路径"%>
3.taglib:用来导入数据标签
用法如下:
<%@ taglib uri = "标签库" prefix = "标签库使用前缀"%>
二、JSP七大动作标签
1.include
jsp:include:在用户请求时包含文件
2.forward
jsp:forward:转发用户请求
3.useBean
jsp:useBean:jsp页面中创建Bean实例并指定范围
4.getProperty
jsp:getProperty:获取Bean属性值
5.setProperty
jsp:setProperty:设置Bean属性值
6.param
jsp:param:用于传递参数
7.plugin
jsp:plugin:主要用于下载服务器端的JavaBean或Applet到客户端执行,不是很常用
- 通过练习,总结jsp指令、动作标签等实现网页跳转功能的方式,及各种方式的特点。
(1)
(2)forward动作是指页面跳转至某一页面,而param动作常常和forward动作一起使用,作为其子标签,为页面跳转添加一些参数。
a.forward动作的语法:<jsp:forward page="URL"/>,其中page是指跳转的页面名,forward动作类似于服务器内部转发方法:request.getRequestDispatcher("/url").forward(request, response)
b.param动作的语法:<jsp:param value="参数值" name="参数名"/>,使用param不仅可以新增一个参数,也可以修改原有的参数值。
- 实现教材P77“动手实践3-1”。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@include file="top.jsp" %>
<br>
这是中部
<br>
<%@include file="top.jsp" %>
</body>
</html>
4、实现教材P77“动手实践3-4”。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注销</title>
</head>
<body>
<%
response.setHeader("refresh","2;url=example3_11.jsp");//定时刷新
session.invalidate();//取消会话
%>
<h1>如果没有跳转请点</h1><a href="example3_11.jsp">这里</a>
</body>
</html>