《第3章JSP.ppt》由会员分享,可在线阅读,更多相关《第3章JSP.ppt(82页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件开发架构平台技术软件开发架构平台技术(J2EE/.Net)第第3章章 JSP苏苏生生61830683(Tel)计算机计算机软件学院软件学院电子科技大学电子科技大学1课程内容课程内容n n2.1JSP简介简介n n2.2JSP脚本元素脚本元素n n2.3JSP指令指令n n2.4JSP动作动作n n2.5JSP预定义变量预定义变量n n2.6JSP注释注释n n2.7JSP自定义标签库自定义标签库25.1 JSP简介简介3JSP及其特点及其特点n nJavaServerPages(JSP)=静态静态HTML代码代码+动态动态HTML代码代码(通过嵌入的通过嵌入的java代码实现代码实现)。n
2、 nHTML可以用任何通常使用的可以用任何通常使用的Web制作工具制作工具编写,编写方式也和原来的一样编写,编写方式也和原来的一样n n动态部分的代码放入特殊标记之内,大部动态部分的代码放入特殊标记之内,大部分以分以“%”开始,以开始,以“%”结束。结束。4JSP和和ASP相比相比n nJSP和和ASP相比具有两方面的优点。相比具有两方面的优点。n n首先,动态部分用首先,动态部分用首先,动态部分用首先,动态部分用JavaJava编写,而不是编写,而不是编写,而不是编写,而不是VB ScriptVB Script或其他或其他或其他或其他MicrosoftMicrosoft语言,不仅功能更强大而
3、且更语言,不仅功能更强大而且更语言,不仅功能更强大而且更语言,不仅功能更强大而且更易于使用。易于使用。易于使用。易于使用。n n第二,第二,第二,第二,JSPJSP应用可以移植到其他操作系统和非应用可以移植到其他操作系统和非应用可以移植到其他操作系统和非应用可以移植到其他操作系统和非MicrosoftMicrosoft的的的的WebWeb服务器上。服务器上。服务器上。服务器上。5JSP和纯和纯Servlet相比相比 n nJSPJSP并没有增加任何本质上不能用并没有增加任何本质上不能用并没有增加任何本质上不能用并没有增加任何本质上不能用ServletServlet实现的功实现的功实现的功实现的
4、功能。但是,在能。但是,在能。但是,在能。但是,在JSPJSP中编写静态中编写静态中编写静态中编写静态HTMLHTML更加方便,不更加方便,不更加方便,不更加方便,不必再用必再用必再用必再用 printlnprintln语句来输出每一行语句来输出每一行语句来输出每一行语句来输出每一行HTMLHTML代码。代码。代码。代码。n n借助内容和外观的分离,页面制作中不同性质的借助内容和外观的分离,页面制作中不同性质的借助内容和外观的分离,页面制作中不同性质的借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计专家进任务可以方便地分开:比如,由页面设计专家进任务可以方便地分开
5、:比如,由页面设计专家进任务可以方便地分开:比如,由页面设计专家进行行行行HTMLHTML设计,同时留出供设计,同时留出供设计,同时留出供设计,同时留出供ServletServlet程序员插入动程序员插入动程序员插入动程序员插入动态内容的空间。态内容的空间。态内容的空间。态内容的空间。6JSP和和JavaScript相比相比 n nJavaScriptJavaScript能够在客户端动态地生成能够在客户端动态地生成能够在客户端动态地生成能够在客户端动态地生成HTMLHTML。虽然。虽然。虽然。虽然JavaScriptJavaScript很有用,但它只能处理以客户端环境为很有用,但它只能处理以客
6、户端环境为很有用,但它只能处理以客户端环境为很有用,但它只能处理以客户端环境为基础的动态信息。除了基础的动态信息。除了基础的动态信息。除了基础的动态信息。除了CookieCookie之外,之外,之外,之外,HTTPHTTP状态状态状态状态和表单提交数据对和表单提交数据对和表单提交数据对和表单提交数据对JavaScriptJavaScript来说都是不可用的。来说都是不可用的。来说都是不可用的。来说都是不可用的。n n另外,由于是在客户端运行,另外,由于是在客户端运行,另外,由于是在客户端运行,另外,由于是在客户端运行,JavaScriptJavaScript不能访问不能访问不能访问不能访问服务
7、器端资源,比如数据库、目录信息等等。服务器端资源,比如数据库、目录信息等等。服务器端资源,比如数据库、目录信息等等。服务器端资源,比如数据库、目录信息等等。7JSP的生命周期的生命周期n nJSPJSP编译编译编译编译n nJSPJSP引擎先将引擎先将引擎先将引擎先将JSPJSP文件转化成文件转化成文件转化成文件转化成ServletServlet,然后再编译然后再编译然后再编译然后再编译ServletServletn nJSPJSP初始化初始化初始化初始化n njspInitjspInit()()n nJSPJSP执行执行执行执行n n_ _jspServicejspService()()n
8、nJSPJSP清除清除清除清除n njspDestroyjspDestroy()()n n这些操作均是由服务器自动完成的这些操作均是由服务器自动完成的这些操作均是由服务器自动完成的这些操作均是由服务器自动完成的8一个简单的一个简单的JSP例子例子!Transitional/ENHello World ExampleHello World ExampleHello World ExampleHello World Example%World);%9JSP的编写和运行的编写和运行n nJSP页面文件通常以页面文件通常以.jsp为扩展名,而且为扩展名,而且可以安装到任何能够存放普通可以安装到任何能够
9、存放普通Web页面的页面的地方。地方。n n虽然从代码编写来看,虽然从代码编写来看,JSP页面更象普通页面更象普通Web页面而不象页面而不象Servlet,但实际上,但实际上,JSP最终会被转换成正规的最终会被转换成正规的Servlet,静态,静态HTML直接输出到和直接输出到和Servlet service方法方法关联的输出流。关联的输出流。n nJSP到到Servlet的转换过程一般在出现第一的转换过程一般在出现第一次页面请求时进行次页面请求时进行。10静态静态HTML n nJSP页面的很大一部分都由静态页面的很大一部分都由静态HTML构成,构成,这些静态这些静态HTML也称为也称为“模
10、板文本模板文本”。n n模板文本和普通模板文本和普通HTML几乎完全相同,它几乎完全相同,它们都遵从相同的语法规则,而且模板文本们都遵从相同的语法规则,而且模板文本也是被也是被Servlet直接发送到客户端。直接发送到客户端。11动态动态JSPn n嵌入嵌入嵌入嵌入JSPJSP页面的其他成分主要有如下三种:页面的其他成分主要有如下三种:页面的其他成分主要有如下三种:页面的其他成分主要有如下三种:n n脚本元素(脚本元素(脚本元素(脚本元素(Scripting ElementScripting Element),),),),n n指令(指令(指令(指令(DirectiveDirective),)
11、,),),n n动作(动作(动作(动作(ActionAction)。)。)。)。n n脚本元素用来嵌入脚本元素用来嵌入脚本元素用来嵌入脚本元素用来嵌入JavaJava代码,这些代码,这些代码,这些代码,这些JavaJava代码将成为代码将成为代码将成为代码将成为转换得到的转换得到的转换得到的转换得到的ServletServlet的一部分;的一部分;的一部分;的一部分;n nJSPJSP指令用来从整体上控制指令用来从整体上控制指令用来从整体上控制指令用来从整体上控制ServletServlet的结构和属性;的结构和属性;的结构和属性;的结构和属性;n n动作用来引入现有的组件或者控制动作用来引入
12、现有的组件或者控制动作用来引入现有的组件或者控制动作用来引入现有的组件或者控制JSPJSP引擎的行为引擎的行为引擎的行为引擎的行为;n n为了简化脚本元素,为了简化脚本元素,为了简化脚本元素,为了简化脚本元素,JSPJSP定义了一组可以直接使用定义了一组可以直接使用定义了一组可以直接使用定义了一组可以直接使用的变量(预定义变量)的变量(预定义变量)的变量(预定义变量)的变量(预定义变量)12JSP语法概要语法概要:JSP脚本元素脚本元素 13JSP语法概要语法概要:JSP指令指令 14JSP语法概要语法概要:JSP动作动作15JSP预定义变量预定义变量 n n为了简化为了简化JSP表达式和表达
13、式和Scriptlet的代码,的代码,JSP提供了提供了8个预先定义的变量(或称为隐含对个预先定义的变量(或称为隐含对象)。象)。n n这些变量是这些变量是request、response、out、session、application、config、pageContext和和page。165.2 JSP脚本元素脚本元素17JSP脚本元素脚本元素:表达式:表达式(Expression)n n语法:语法:语法:语法:%=expression%=expression%n n功能:功能:功能:功能:表示一个在脚本语言中被定义的表达式,表示一个在脚本语言中被定义的表达式,表示一个在脚本语言中被定义的表
14、达式,表示一个在脚本语言中被定义的表达式,在运行后被自动转化为字符串,然后插入到这个在运行后被自动转化为字符串,然后插入到这个在运行后被自动转化为字符串,然后插入到这个在运行后被自动转化为字符串,然后插入到这个表达示在表达示在表达示在表达示在JSPJSPJSPJSP文件的位置显示。文件的位置显示。文件的位置显示。文件的位置显示。n n举例:举例:举例:举例:%=”)%18JSP脚本元素脚本元素:表达式:表达式(Expression)n n计算计算计算计算JavaJava表达式得到的结果被转换成字符串,然表达式得到的结果被转换成字符串,然表达式得到的结果被转换成字符串,然表达式得到的结果被转换成
15、字符串,然后插入到页面。后插入到页面。后插入到页面。后插入到页面。n n计算在运行时进行(页面被请求时),因此可以计算在运行时进行(页面被请求时),因此可以计算在运行时进行(页面被请求时),因此可以计算在运行时进行(页面被请求时),因此可以访问和请求有关的全部信息。访问和请求有关的全部信息。访问和请求有关的全部信息。访问和请求有关的全部信息。n n例如,下面的代码显示页面被请求的日期:例如,下面的代码显示页面被请求的日期:例如,下面的代码显示页面被请求的日期:例如,下面的代码显示页面被请求的日期:Current time:Current time:%=new%=new java.util.Da
16、tejava.util.Date()%()%n n求值并插入到求值并插入到servlet的输出中的输出中,out.print(expression_r_r)19JSP脚本元素脚本元素:JSP代码段代码段(Scriptlets)n n如果要完成的任务比插入简单的表达式更如果要完成的任务比插入简单的表达式更加复杂,可以使用加复杂,可以使用JSP Scriptlet。n nJSP Scriptlet允许把任意的允许把任意的Java代码插入代码插入Servlet。20JSP脚本元素脚本元素:JSP代码段代码段(Scriptlets)n n语法:语法:语法:语法:%code%code%n n作用:插入到
17、作用:插入到作用:插入到作用:插入到JSPJSP中的有效的程序段中的有效的程序段中的有效的程序段中的有效的程序段(java(java代码代码代码代码),),能够包含多个能够包含多个能够包含多个能够包含多个JSPJSP语句,方法,变量,表达式语句,方法,变量,表达式语句,方法,变量,表达式语句,方法,变量,表达式 n n举例:举例:举例:举例:%for(for(intinti=0;ii=0;i%21JSP脚本元素脚本元素:JSP代码段代码段(Scriptlets)n nScriptlet中的代码将被照搬到中的代码将被照搬到Servlet内,而内,而Scriptlet前面和后面的静态前面和后面的静
18、态HTML(模板文(模板文本)将被转换成本)将被转换成println语句。语句。n n这就意味着,这就意味着,Scriptlet内的内的Java语句并非一语句并非一定要是完整的,没有关闭的块将影响定要是完整的,没有关闭的块将影响Scriptlet外的静态外的静态HTML。22JSP脚本元素脚本元素:JSP代码段代码段(Scriptlets)if(Math.random()0.5)out.println(Have a Bnice/B day!);else out.println(Have a Blousy/B day!);%if(Math.random()0.5)%Have a Bnice/B
19、day!%else%Have a Blousy/B day!%23JSP脚本元素脚本元素:JSP声明声明(Declarations)n n语法:语法:语法:语法:%!code%!code%n n作用:定义作用:定义作用:定义作用:定义JSPJSPScriptletsScriptlets中使用的变量和方法。中使用的变量和方法。中使用的变量和方法。中使用的变量和方法。n n举例:举例:举例:举例:%!%!a,b,c;%24注意注意!逐字地插入到逐字地插入到servlet类的定义体中类的定义体中,不在任不在任何方法之内何方法之内 使用使用方式所声明的变量为全局变量,方式所声明的变量为全局变量,即表示
20、:若同时即表示:若同时n 个用户在执行此个用户在执行此JSP网页网页时,将会共享此变量时,将会共享此变量 内的变量是内的变量是service方法的局部变量方法的局部变量JSP脚本元素:脚本元素:JSP声明声明(Declarations)255.3 JSP指令指令26JSP指令指令n n语法一般如下:语法一般如下:语法一般如下:语法一般如下:%directivedirective attribute1=“value1”attribute1=“value1”attribute2=“value2”attribute2=“value2”.attributeN=“attributeN=“valueNva
21、lueN”%”%n n分为三种类型:分为三种类型:分为三种类型:分为三种类型:n npagepage指令:导入指定的类,设置属性,等等;指令:导入指定的类,设置属性,等等;指令:导入指定的类,设置属性,等等;指令:导入指定的类,设置属性,等等;n nincludeinclude指令:用来在指令:用来在指令:用来在指令:用来在JSPJSP文件转换成文件转换成文件转换成文件转换成ServletServlet时引入时引入时引入时引入其他文件;其他文件;其他文件;其他文件;n ntaglibtaglib指令:让指令:让指令:让指令:让JSPJSP开发者能够自己定义标记。开发者能够自己定义标记。开发者能
22、够自己定义标记。开发者能够自己定义标记。27JSP指令:指令:page指令指令n n语法:语法:%pageattribute=val%n n作用:定义作用:定义JSP页面中的全局属性页面中的全局属性n n举例:举例:%page buffer=5kb=false%page%28JSP指令:指令:page指令指令n n可定义的属性包括:可定义的属性包括:n nimportimportn nerrorPageerrorPagen nbufferbuffern nlanguagelanguagen ncontentTypecontentTypen nA Autoflushutoflushn nexte
23、nds extends n n等等等等等等等等29n n指令作用于整个指令作用于整个指令作用于整个指令作用于整个JSPJSP页面,包括静页面,包括静页面,包括静页面,包括静态的包含文件。但是态的包含文件。但是态的包含文件。但是态的包含文件。但是指令不能作指令不能作指令不能作指令不能作用于动态的包含文件,比如用于动态的包含文件,比如用于动态的包含文件,比如用于动态的包含文件,比如。n n可以在一个页面中用上多个可以在一个页面中用上多个可以在一个页面中用上多个可以在一个页面中用上多个指令,指令,指令,指令,但是其中的属性只能用一次,不过也有个例外,但是其中的属性只能用一次,不过也有个例外,但是其中
24、的属性只能用一次,不过也有个例外,但是其中的属性只能用一次,不过也有个例外,那就是那就是那就是那就是importimport属性。因为属性。因为属性。因为属性。因为importimport属性和属性和属性和属性和JavaJava中的中的中的中的importimport语句差不多(参照语句差不多(参照语句差不多(参照语句差不多(参照JavaLanguageJavaLanguage),所以),所以),所以),所以能多用此属性几次。能多用此属性几次。能多用此属性几次。能多用此属性几次。JSP指令:指令:page指令指令30n n无论无论指令放在指令放在JSP文件的哪文件的哪个地方,它的作用范围都是整
25、个个地方,它的作用范围都是整个JSP页面。页面。不过,为了不过,为了JSP程序的可读性,以及好的编程序的可读性,以及好的编程习惯,最好还是把它放在程习惯,最好还是把它放在JSP文件的顶部。文件的顶部。JSP指令:指令:page指令指令31JSP指令:指令:include指令指令 n n语法:语法:n n说明:用于说明:用于JSP页面转换成页面转换成Servlet时引入其他文件时引入其他文件n n包含文件可以包含静态包含文件可以包含静态HTML、脚本元、脚本元素、素、JSP指令和动作。指令和动作。32JSP指令:指令:include指令指令n n网站导航条例子网站导航条例子n n网站的每个页面都
26、有一个导航条。网站的每个页面都有一个导航条。网站的每个页面都有一个导航条。网站的每个页面都有一个导航条。n n使用使用使用使用includeinclude指令,开发者不必再把导航指令,开发者不必再把导航指令,开发者不必再把导航指令,开发者不必再把导航HTMLHTML代码拷贝到每个文件中,从而可以更代码拷贝到每个文件中,从而可以更代码拷贝到每个文件中,从而可以更代码拷贝到每个文件中,从而可以更轻松地完成维护工作。轻松地完成维护工作。轻松地完成维护工作。轻松地完成维护工作。n n由于由于由于由于includeinclude指令是在指令是在指令是在指令是在JSPJSP转换成转换成转换成转换成Serv
27、letServlet的时的时的时的时候引入文件,因此如果导航条改变了,所有候引入文件,因此如果导航条改变了,所有候引入文件,因此如果导航条改变了,所有候引入文件,因此如果导航条改变了,所有使用该导航条的使用该导航条的使用该导航条的使用该导航条的JSPJSP页面都必须重新转换成页面都必须重新转换成页面都必须重新转换成页面都必须重新转换成ServletServlet。33JSP指令:指令:taglib指令指令 n n语法:语法:语法:语法:%n n说明:说明:说明:说明:定义一个标签库以及其自定义标签的前定义一个标签库以及其自定义标签的前定义一个标签库以及其自定义标签的前定义一个标签库以及其自定义
28、标签的前缀缀缀缀n n%指令声明此指令声明此指令声明此指令声明此JSPJSP文件使用了自定文件使用了自定文件使用了自定文件使用了自定义的标签,同时引用标签库,也指定了他们的义的标签,同时引用标签库,也指定了他们的义的标签,同时引用标签库,也指定了他们的义的标签,同时引用标签库,也指定了他们的标签的前缀。必须在使用自定义标签之前使用标签的前缀。必须在使用自定义标签之前使用标签的前缀。必须在使用自定义标签之前使用标签的前缀。必须在使用自定义标签之前使用%指令指令指令指令n n不要用不要用不要用不要用jspjsp,jspxjspx,java,java,javaxjavax,servletservle
29、t,sun,sun,和和和和sunwsunw做为你的前缀做为你的前缀做为你的前缀做为你的前缀 34JSP指令:指令:taglib指令指令 n n例子:例子:例子:例子:%prefix=public%./355.4 JSP动作动作36JSP动作动作n nJSP动作利用动作利用XML语法格式的标记来控制语法格式的标记来控制Servlet引擎的行为。引擎的行为。n n利用利用JSP动作可以动态地插入文件、重用动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、组件、把用户重定向到另外的页面、为为Java插件生成插件生成HTML代码。代码。37JSP动作动作n njsp:inc
30、ludejsp:include:在页面被请求的时候引入一个文件:在页面被请求的时候引入一个文件:在页面被请求的时候引入一个文件:在页面被请求的时候引入一个文件n njsp:useBeanjsp:useBean:寻找或者实例化一个:寻找或者实例化一个:寻找或者实例化一个:寻找或者实例化一个JavaBeanJavaBeann njsp:setPropertyjsp:setProperty:设置:设置:设置:设置JavaBeanJavaBean的属性的属性的属性的属性n njsp:getPropertyjsp:getProperty:输出某个:输出某个:输出某个:输出某个JavaBeanJavaBe
31、an的属性的属性的属性的属性n njsp:forwardjsp:forward:把请求转到一个新的页面:把请求转到一个新的页面:把请求转到一个新的页面:把请求转到一个新的页面n njsp:pluginjsp:plugin:根据浏览器类型为:根据浏览器类型为:根据浏览器类型为:根据浏览器类型为JavaJava插件生成插件生成插件生成插件生成OBJECTOBJECT或或或或EMBEDEMBED标记。标记。标记。标记。38JSP动作:动作:include动作动作n n语法:语法:语法:语法:jsp:includejsp:includepage=URLflush=true/page=URLflush=
32、true/n n说明:该动作把指定文件插入正在生成的页面说明:该动作把指定文件插入正在生成的页面说明:该动作把指定文件插入正在生成的页面说明:该动作把指定文件插入正在生成的页面(请请请请求时插入求时插入求时插入求时插入)。n n举例:举例:举例:举例:jsp:paramname=usernamevalue=/39JSP include动作与指令的区别动作与指令的区别40jsp:useBean动作动作 n njsp:useBean动作用来装载一个将在动作用来装载一个将在JSP页面页面中使用的中使用的JavaBeann n语法:语法:jsp:useBeanjsp:useBean id=“name”
33、class=“id=“name”class=“package.classpackage.class”/”/n n含义:创建一个由含义:创建一个由class属性指定的类的实属性指定的类的实例,然后把它绑定到其名字由例,然后把它绑定到其名字由id属性给出的属性给出的变量上。变量上。41jsp:useBean动作动作的其他属性的其他属性42jsp:setProperty动作动作 n n用来设置已经实例化的用来设置已经实例化的Bean对象的属性对象的属性jsp:setProperty name=myName property=someProperty./43jsp:getProperty动作动作 n
34、njsp:getProperty动作提取指定动作提取指定Bean属性的值,属性的值,转换成字符串,然后输出。转换成字符串,然后输出。n njsp:getProperty有两个必需的属性,即:有两个必需的属性,即:n nnamename,表示,表示,表示,表示BeanBean的名字;的名字;的名字;的名字;n npropertyproperty,表示要提取哪个属性的值。,表示要提取哪个属性的值。,表示要提取哪个属性的值。,表示要提取哪个属性的值。44jsp:forward动作动作 n n语法:语法:jsp:forwardpage=URL/n n说明:把包含用户请求的说明:把包含用户请求的requ
35、est对象转到对象转到另外一个页面。该语句下面的所有代码将不另外一个页面。该语句下面的所有代码将不再执行。再执行。n njsp:forward标记只有一个属性标记只有一个属性page。n npagepage属性包含的是一个相对属性包含的是一个相对属性包含的是一个相对属性包含的是一个相对URLURL。n npagepage的值既可以直接给出,也可以在请求的时的值既可以直接给出,也可以在请求的时的值既可以直接给出,也可以在请求的时的值既可以直接给出,也可以在请求的时候动态计算候动态计算候动态计算候动态计算 45jsp:fowward动作动作jsp:forwardjsp:forward page=“
36、/page=“/utils/errorReporter.jsputils/errorReporter.jsp”/”/jsp:forwardjsp:forward page=page=%=%=someJavaExpressionsomeJavaExpression%/465.5 JSP预定义变量预定义变量47JSP预定义变量预定义变量n n request request 用户端请求,此请求会包含来自用户端请求,此请求会包含来自用户端请求,此请求会包含来自用户端请求,此请求会包含来自GET/POSTGET/POST请求的参数请求的参数请求的参数请求的参数 n n response respons
37、e 网页传回用户端的回应网页传回用户端的回应网页传回用户端的回应网页传回用户端的回应 n n pageContextpageContext 网页的属性在这里管理网页的属性在这里管理网页的属性在这里管理网页的属性在这里管理 n n session session 与请求有关的通话期与请求有关的通话期与请求有关的通话期与请求有关的通话期 n n application application servletservlet正在执行的内容正在执行的内容正在执行的内容正在执行的内容 n n out out 用来传送回应的输出资料流用来传送回应的输出资料流用来传送回应的输出资料流用来传送回应的输出资料流
38、n n configconfig servletservlet的架构物件的架构物件的架构物件的架构物件 n n page page JSPJSP网页本身网页本身网页本身网页本身 n n exception exception 针对出错的网页,未捕捉的例外针对出错的网页,未捕捉的例外针对出错的网页,未捕捉的例外针对出错的网页,未捕捉的例外 48request n n对应于对应于Servlet中的和请求关联的中的和请求关联的HttpServletRequest类,类,是是HttpServletRequest类的实例,类的实例,通过它可以通过它可以查看请求参数(调用查看请求参数(调用getParam
39、eter),请求),请求类型(类型(GET,POST,HEAD等),以及请等),以及请求的求的HTTP头(头(Cookie,Referer,等)。,等)。49request引入页面引入页面called.jsp 你刚才输入的内容是:主页面主页面MainPage.jsp request.getParameter()方法使用实例 50request主页面:你刚才输入的内容是:引入页面AttributePage.jsp:request对象使用实例 51response n nresponseresponse对象包含了响应客户请求的有关信息,但在对象包含了响应客户请求的有关信息,但在对象包含了响应客户请
40、求的有关信息,但在对象包含了响应客户请求的有关信息,但在JSPJSP中很少直接用到它。它是中很少直接用到它。它是中很少直接用到它。它是中很少直接用到它。它是HttpServletResponseHttpServletResponse类的实例类的实例类的实例类的实例n nString String getCharacterEncodinggetCharacterEncoding()()返回响应用的是何种字符编返回响应用的是何种字符编返回响应用的是何种字符编返回响应用的是何种字符编码码码码 n nServletOutputStreamServletOutputStream getOutputStr
41、eamgetOutputStream()()返回响应的一个二返回响应的一个二返回响应的一个二返回响应的一个二进制输出流进制输出流进制输出流进制输出流 n nPrintWriterPrintWriter getWritergetWriter()()返回可以向客户端输出字符的一个对返回可以向客户端输出字符的一个对返回可以向客户端输出字符的一个对返回可以向客户端输出字符的一个对象象象象 n nvoid void setContentLength(intsetContentLength(int lenlen)设置响应头长度设置响应头长度设置响应头长度设置响应头长度 n nvoid void setCo
42、ntentType(StringsetContentType(String type)type)设置响应的设置响应的设置响应的设置响应的MIMEMIME类型类型类型类型 n nsendRedirect(StringsendRedirect(String location)location)重新定向客户端的请求重新定向客户端的请求重新定向客户端的请求重新定向客户端的请求 n nsetHeader(StringsetHeader(String name,String name,String contectcontect)是用来设置返回页面是用来设置返回页面是用来设置返回页面是用来设置返回页面的头的
43、头的头的头 meta meta 信息信息信息信息52responseresponse.setHeader()方法网页自动刷新实例:response刷新页面实例 每隔每隔3秒网页自动刷新秒网页自动刷新53out n n用来向客户端发送内容的用来向客户端发送内容的PrintWriter。n nout是带缓存功能的是带缓存功能的PrintWriter,即,即JspWriter。n nJSP允许通过允许通过page指令的指令的buffer属性调整属性调整缓存的大小,甚至允许关闭缓存。缓存的大小,甚至允许关闭缓存。n nout一般只在一般只在Scriptlet内使用,这是因为内使用,这是因为JSP表达式
44、是自动发送到输出流的,很表达式是自动发送到输出流的,很少需要显式地引用少需要显式地引用out。54outout对象使用实例对象使用实例%out.println(newDate().toLocaleString();out.print();out.print(测试成功测试成功);%55session n n和请求关联的和请求关联的HttpSession对象,对象,是是HttpSession类的实例类的实例 n n当一个用户向服务器发送第一个请求时,服务器为其当一个用户向服务器发送第一个请求时,服务器为其当一个用户向服务器发送第一个请求时,服务器为其当一个用户向服务器发送第一个请求时,服务器为其建
45、立一个建立一个建立一个建立一个sessionsession,并为此,并为此,并为此,并为此sessionsession创建一个标识号;创建一个标识号;创建一个标识号;创建一个标识号;n n这个用户随后的所有请求都应包括这个标识号。服务这个用户随后的所有请求都应包括这个标识号。服务这个用户随后的所有请求都应包括这个标识号。服务这个用户随后的所有请求都应包括这个标识号。服务器会校对这个标识号以判断请求属于哪个器会校对这个标识号以判断请求属于哪个器会校对这个标识号以判断请求属于哪个器会校对这个标识号以判断请求属于哪个sessionsession。n n这种机制不使用这种机制不使用这种机制不使用这种机
46、制不使用IPIP作为标识,是因为很多机器是通过作为标识,是因为很多机器是通过作为标识,是因为很多机器是通过作为标识,是因为很多机器是通过代理服务器方式上网,没法区分每一台机器。代理服务器方式上网,没法区分每一台机器。代理服务器方式上网,没法区分每一台机器。代理服务器方式上网,没法区分每一台机器。56session n n当需要为用户端建立一个当需要为用户端建立一个当需要为用户端建立一个当需要为用户端建立一个sessionsession时,时,时,时,servletservlet容器就创建了一个容器就创建了一个容器就创建了一个容器就创建了一个HttpSessionHttpSession对象,其中
47、存储了和本对象,其中存储了和本对象,其中存储了和本对象,其中存储了和本sessionsession相关的信息。在一个相关的信息。在一个相关的信息。在一个相关的信息。在一个servletservlet中有多少个不同用户连接,就会有多少个中有多少个不同用户连接,就会有多少个中有多少个不同用户连接,就会有多少个中有多少个不同用户连接,就会有多少个HttpSessionHttpSession对象。对象。对象。对象。n n从请求中提取从请求中提取从请求中提取从请求中提取HttpSessionHttpSession对象;对象;对象;对象;n n增加或删除增加或删除增加或删除增加或删除HttpSession
48、HttpSession中的属性;中的属性;中的属性;中的属性;n n根据需要关闭根据需要关闭根据需要关闭根据需要关闭HttpSessionHttpSession或使其失效。或使其失效。或使其失效。或使其失效。n n在请求中有两个重载的方法用来获取在请求中有两个重载的方法用来获取在请求中有两个重载的方法用来获取在请求中有两个重载的方法用来获取HttpSessionHttpSession对象。对象。对象。对象。HttpSession HttpSession getSession(booleangetSession(boolean create)/create)/getSessiongetSessi
49、on();();作用是提取作用是提取作用是提取作用是提取HttpSessionHttpSession对象。对象。对象。对象。n n获取到获取到获取到获取到HttpSessionHttpSession对象后,需要使用对象后,需要使用对象后,需要使用对象后,需要使用HttpSessionHttpSession的某些方法去设置的某些方法去设置的某些方法去设置的某些方法去设置和更改某些参数了。如:和更改某些参数了。如:和更改某些参数了。如:和更改某些参数了。如:void void setAttribute(StringsetAttribute(String name,Object value);nam
50、e,Object value);Object Object getAttribute(StringgetAttribute(String name);name);void void removeAttribute(StringremoveAttribute(String name);name);57session Session主页面 指向第二页 Session转向页面 58application n nServletContext类的实例类的实例n napplicationapplication对象实现了用户间数据的共享,可对象实现了用户间数据的共享,可对象实现了用户间数据的共享,可对象实现