第4章JSP语法_第1页
第4章JSP语法_第2页
第4章JSP语法_第3页
第4章JSP语法_第4页
第4章JSP语法_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2022-3-271第4章 JSP语法 22022-3-27内容提要内容提要nJSP的页面结构nJSP的编译指令即指令标识nJSP的操作指令即动作标识nJSP的代码nJSP的内置对象:out对象、response对象、request对象、application对象、session对象和cookie对象。32022-3-27理解理解JSP是服务器端执行是服务器端执行 nHTML文件可以在资源管理器中双击执行文件可以在资源管理器中双击执行nJSP文件必须先放到文件必须先放到Web服务器中,然后通服务器中,然后通过过HTTP的方式访问。的方式访问。n因为文件内所有因为文件内所有内代码是被内代码是被W

2、eb服服务器解释执行的。务器解释执行的。n本章程序在工程本章程序在工程test4-01 42022-3-27理解服务器端执行程序名称:程序名称:runServer.jspvar dnow = new Date();dhours = dnow.getHours();dminutes = dnow.getMinutes();dseconds = dnow.getSeconds();document.write(浏览器时间:浏览器时间: + dhours + : + dminutes + : + dseconds);52022-3-27理解服务器端执行n浏览器和服务器是一台计算机,所以结果一样;如果

3、是另浏览器和服务器是一台计算机,所以结果一样;如果是另一台计算机的浏览器链接该页面,则就是不同机器的系统一台计算机的浏览器链接该页面,则就是不同机器的系统时间。时间。n通过查看源代码,可以发现所有通过查看源代码,可以发现所有内代码是不可见的。内代码是不可见的。62022-3-27 JSP页面结构页面结构 nJSP页面主要分为三种元素:页面主要分为三种元素:1.编译指令编译指令:形式为:形式为, 告诉告诉JSP的解释引擎如的解释引擎如Tomcat,需要在,需要在编译时做什么动作,比如引入一个其它的类,设置编译时做什么动作,比如引入一个其它的类,设置JSP页面的使用什页面的使用什么语言编码等。么语

4、言编码等。注:注:JSP编译指令是让编译指令是让JSP容器自动采取容器自动采取的动作,但对于的动作,但对于Web开发人开发人员想要自己控制员想要自己控制JSP页面的运行,这时可以采用页面的运行,这时可以采用JSP中的操作指令。中的操作指令。2.操作指令操作指令:形式为:形式为,是一种特殊标签,是用,是一种特殊标签,是用XML语语法写的动作标识。在法写的动作标识。在JSP页面被请求时,动态执行,可以动态地插入页面被请求时,动态执行,可以动态地插入文件、重用文件、重用JavaBean组件、重定向到其他页面,为组件、重定向到其他页面,为Java插件提供参插件提供参数等。数等。3.JSP代码代码:指的

5、就是我们自己嵌入在:指的就是我们自己嵌入在JSP页面中的页面中的Java代码,这又分为代码,这又分为两种:两种:一是一是JSP页面中一些变量和方法的声明,使用页面中一些变量和方法的声明,使用“”标标记。记。二是常用的二是常用的“”包含的包含的JSP代码块:代码块:72022-3-27编译指令编译指令 wJSP指令是用来指定指令是用来指定JSP网页的输出方式、网页的输出方式、引用的文件、加载指令的相关设置的,不会引用的文件、加载指令的相关设置的,不会输出到客户端。输出到客户端。w基本格式基本格式wJSP中三种指令中三种指令网页指令网页指令 page加载指令加载指令 include标记指令标记指令

6、 taglib 82022-3-27网页指令网页指令 pagenpage指令定义指令定义JSP文件的页面属性。文件的页面属性。作为良好的编程习惯,作为良好的编程习惯,建议将其放在建议将其放在JSP文件的顶部。文件的顶部。 作用域是作用域是它所在页面和其包含的文件它所在页面和其包含的文件,如被,如被所引入的文件;但不包含被所引入的文件;但不包含被所动态引入的文件。所动态引入的文件。npage指令由指令由“”字符串构成的标记符来指定。字符串构成的标记符来指定。在标记符中包括指令的类型和值。在标记符中包括指令的类型和值。例如:例如:“”指令告诉指令告诉JSP容器将容器将java.sql包中的所有类都

7、引入当前的包中的所有类都引入当前的JSP页面。页面。n常用的常用的page指令标记有指令标记有8个:个:language、 contentType、 extends、import、errorPage、isErrorPage、isThreadSafe和和session。92022-3-27page属性说明属性说明1nlanguage:设置:设置JSP页面中用到的语言,默认值为页面中用到的语言,默认值为“Java”,因为目,因为目前只有前只有java一种,可声明,也可不声明。一种,可声明,也可不声明。 使用的语法是:使用的语法是:“”。ncontentType:设定传回网页的文件格式和编码方式,和

8、:设定传回网页的文件格式和编码方式,和JSP页面响应页面响应的的MIME类型。类型。默认值为默认值为“text/html;charset= ISO-8859-1” 一般使用一般使用 “text/html;charset=GBK”npageEncoding:jsp文件本身的编码文件本身的编码,如果页面显示中文,可用如果页面显示中文,可用pageEncoding=“GBK如果如果pageEncoding属性存在,那么属性存在,那么JSP页面的字符编码方式就由页面的字符编码方式就由pageEncoding决定,否则就由决定,否则就由contentType属性中的属性中的charset决定,如果决定,

9、如果都不存在,都不存在,JSP页面的字符编码方式就采用默认的页面的字符编码方式就采用默认的ISO-8859-1。nextends:设定目前设定目前JSP页面要继承的父类。页面要继承的父类。一般不需要设置。一般不需要设置。默认父类是默认父类是HttpJspBase如:如:JSP页面要继承页面要继承mypackage包下的包下的myclass类,语句为:类,语句为:102022-3-27112022-3-27page属性说明属性说明2nImport:设置目前设置目前JSP页面需要导入的页面需要导入的Java包列表包列表.默认情况下已经被加入到当前默认情况下已经被加入到当前JSP页面,而不需要特殊声

10、明:页面,而不需要特殊声明:njava.lang.*;、njava.servlet.*;、njava.servlet.jsp.*;n和和java.servlet.http.*;。例如:例如:“”。nerrorPage用来设定当用来设定当JSP页面出现异常(页面出现异常(Exception)时所)时所要转向的页面。可以不设置,默认当前网页来显示出错信息。要转向的页面。可以不设置,默认当前网页来显示出错信息。如:如:“”nisErrorPage用来设定当前的用来设定当前的JSP页面是否作为传回错误页页面是否作为传回错误页面的网页,默认值是面的网页,默认值是“false”。如设定为如设定为“true

11、”,则,则JSP容器会在当前的页面中生成一个容器会在当前的页面中生成一个exception对象。对象。122022-3-27page属性说明属性说明3nsession=“true|false” :决定当前:决定当前JSP文件是否支持文件是否支持session。默认为默认为true,启用,启用Session,同时可以在同时可以在元素中定元素中定义义scope=session,否则不能。否则不能。ninfo=“text” :设置为任意字符串,表示当前页面作者等相:设置为任意字符串,表示当前页面作者等相关信息。关信息。可以使用可以使用servlet.getServletInfo()()方法获取,默认

12、忽略。方法获取,默认忽略。 nisThreadSafe=“true|false” :设置:设置JSP容器执行容器执行JSP程序程序的方式是否多线程使用。的方式是否多线程使用。默认为默认为true,表示会以多线程方式处理来自多个用户的请求;否则,表示会以多线程方式处理来自多个用户的请求;否则以单线程方式处理,其他请求必须等待前一个请求处理结束。以单线程方式处理,其他请求必须等待前一个请求处理结束。 132022-3-27page属性说明属性说明4nbuffer=“none|8kb|sizekb” :设置:设置out对象处理对象处理JSP页面到客户端浏览器输出时使用的缓冲区的大页面到客户端浏览器输

13、出时使用的缓冲区的大小。小。 Buffer的默认值为的默认值为8KB。以。以KB为单位,不小于为单位,不小于8KB;设设置为置为none,不使用缓存,直接通过,不使用缓存,直接通过PinterWriter对象输对象输出。一般都为出。一般都为8KB。nautoFlush=“true|false” : 设置对设置对buffer溢出时溢出时的处理方式。的处理方式。默认值为默认值为true,缓冲区满时自动输出到客户端;如为,缓冲区满时自动输出到客户端;如为false,一旦溢出,将导致,一旦溢出,将导致“JSP Buffer overflow”错误错误的发生。的发生。注:如注:如buffer设置为设置为

14、none,则,则autoFlush不能设为不能设为false142022-3-27Page指令语法示例指令语法示例n注意:因为页面有错误,会出现注意:因为页面有错误,会出现http500错误。错误。n解决办法:解决办法:IE工具工具-internet选项选项-高级,将高级,将“显示友好显示友好HTTP错误信息错误信息”前的勾去掉。再刷新前的勾去掉。再刷新“500内部服务器错误内部服务器错误”页面,页面便会弹出错页面,页面便会弹出错误原因。误原因。152022-3-27JSP中中Exception的捕捉的捕捉案例名称:案例名称:JSP中中Exception的捕捉的捕捉程序名称:程序名称:divE

15、rror.jsp当前页面是:divError.jsp162022-3-27加载指令加载指令 includeninclude指令:导入一个由指令:导入一个由file属性所指定文件属性所指定文件。可以是。可以是JSP文件、文件、HTML文件或其他文本文件等。文件或其他文本文件等。导入的文件必须是导入的文件必须是JSP网页所在计算机中的文件,不能是网络文件,且应网页所在计算机中的文件,不能是网络文件,且应是合法的,与当前页面不冲突。是合法的,与当前页面不冲突。 注意,导入的文件是在编译时插入到注意,导入的文件是在编译时插入到JSP文件中的。文件中的。n采用采用include指令,可以实现指令,可以实

16、现JSP页面的模块化,使页面的模块化,使JSP的开发和维护的开发和维护变得非常简单。变得非常简单。例如,应用图示的网页模板进行布局例如,应用图示的网页模板进行布局“”。 在这里对内容显示区进行编码 LOGO图片区:图片区:top.jsp侧栏侧栏left.jsp内容显示区:内容显示区:main.jsp页尾页尾:end.jsp172022-3-27Include指令语法示例指令语法示例n主程序,命名为主程序,命名为include.jsp: n被包含的程序,命名为被包含的程序,命名为includeed.jsp:内容略:内容略 n这两段程序相当于:这两段程序相当于: 182022-3-27 tagli

17、b指令指令 ntaglib指令指令实现与实现与XML的有机结合的有机结合,允许页面使用标记扩展(定制标允许页面使用标记扩展(定制标记)。它命名了标签库记)。它命名了标签库(一个压缩文件),标签在这个库中定义。(一个压缩文件),标签在这个库中定义。n在在JSP页面里遇到定制的标记时,引擎将找到在标记库中的该标记,页面里遇到定制的标记时,引擎将找到在标记库中的该标记,并且找到要实施的操作并且找到要实施的操作实际上是执行实际上是执行Java代码。代码。ntaglib指令的语法为:指令的语法为:uri (Uniform Resource Identifier,统一资源标识符)统一资源标识符) :指定了

18、:指定了标签描述符,是对一个对标签描述文件(标签描述符,是对一个对标签描述文件(.tld)的映射。)的映射。prefix:指定在页面中使用由:指定在页面中使用由uri指定的标签库的前缀。不能命名为指定的标签库的前缀。不能命名为jsp、jspx、java、servlet、sun、sunwn开发者通过前缀引用标签库中的标签,使用开发者通过前缀引用标签库中的标签,使用JSTL标记库的简单例子:标记库的简单例子:192022-3-27操作指令操作指令 nJSP编译指令是让编译指令是让JSP容器自动采取的动作,但对于容器自动采取的动作,但对于Web开发人员,如果想要自己控制开发人员,如果想要自己控制JS

19、P页面的运行,需要采用页面的运行,需要采用JSP中的操作指令。中的操作指令。n操作指令操作指令是用来控制是用来控制JSP引擎的动作,是引擎的动作,是一种特殊标签一种特殊标签,它影响它影响JSP运行时的功能并影响返回客户端的响应。运行时的功能并影响返回客户端的响应。 JSPJSP操作指令操作指令在每次客户端发出请求时,都会动态执行。在每次客户端发出请求时,都会动态执行。n利用利用JSPJSP操作指令操作指令可插入文件用来实现特殊功能:请求的可插入文件用来实现特殊功能:请求的转发、当前页包含其他文件、创建转发、当前页包含其他文件、创建JavaBeanJavaBean等。等。n操作指令包括:操作指令

20、包括:jsp:include指令、指令、jsp:forward指令、指令、jsp:param指令、指令、jsp:useBean指令、指令、jsp:setProperty指令和指令和jsp:getProperty指令等。指令等。202022-3-27jsp:include njsp:include用于在当前的用于在当前的JSP页面加入静态和动态的资源。页面加入静态和动态的资源。n语法格式为:语法格式为:jsp:include必须以必须以“/”结束,功能和结束,功能和include指令类似。指令类似。n动作标识与动作标识与include指令的差异指令的差异属性不同:属性不同:file属性值看作一个

21、实际存在的文件的路径,所以该属属性值看作一个实际存在的文件的路径,所以该属性不支持任何表达式性不支持任何表达式处理方式不同:使用处理方式不同:使用include指令最终编译后的文件只有一个,使指令最终编译后的文件只有一个,使用用动作被执行时,动作被执行时,JSP编译器分别对这两个文件进编译器分别对这两个文件进行编译。行编译。包含方式:用包含方式:用include命令包含内容固定不变的文件,并且约定要命令包含内容固定不变的文件,并且约定要一致,如一致,如page中的中的contentType中的中的charset如果不同,则会出如果不同,则会出现异常,称为静态包含;而用现异常,称为静态包含;而用

22、jsp:include动作包含经常需要改动动作包含经常需要改动的文件,因为是分别编译称为动态包含。的文件,因为是分别编译称为动态包含。n例:例:useInclude.jsp212022-3-27jsp:forward指令指令 njsp:forward用于把当前的用于把当前的JSP页面页面转发转发到另一到另一个页面上,而浏览器中看到的个页面上,而浏览器中看到的地址仍然是原来网地址仍然是原来网页的地址。页的地址。n基本语法为:基本语法为:“”,该标签被执行当前页面不再执行,而执行指定的目标该标签被执行当前页面不再执行,而执行指定的目标页面。页面。若使用了若使用了标签,目标文件须是一个能处标签,目标

23、文件须是一个能处理参数的动态文件,可用理参数的动态文件,可用request.getParameter(“参参数名数名”)来取得参数值。来取得参数值。例:例:forward.jsp222022-3-27jsp:param指令指令 n使用使用jsp:param操作指令可以在执行操作指令可以在执行jsp:forward操作动作时,操作动作时,追加参数,按照追加参数,按照“名字名字/值值”的方式进行传递。的方式进行传递。njsp:param操作指令语法:操作指令语法:n可将可将jsp:forward操作指令和操作指令和jsp:param操作指令结合使用。操作指令结合使用。n例:例:param.jsp2

24、32022-3-27 JSP代码代码 nJSP代码包括两种,代码包括两种,第一种是第一种是JSP页面中一些变量和方法的声明,页面中一些变量和方法的声明,在声明时,使用在声明时,使用“”标记标记另外一种,就是常用到的用另外一种,就是常用到的用“”包包含的含的JSP代码块代码块242022-3-27变量和方法变量和方法 n在在“”标记符号之间声明变量和方法,标记符号之间声明变量和方法,n变量类型可以是变量类型可以是Java语言允许的任何数据类型。语言允许的任何数据类型。n在在JSP页面被编译执行的时候,整个页面被编译页面被编译执行的时候,整个页面被编译成一个类,这些变量是成一个类,这些变量是JSP

25、页面类的成员变量。页面类的成员变量。n注意:注意:是声明全局变量的,是声明全局变量的,只实例化一次。当前页面刷新,访问人数不断增加只实例化一次。当前页面刷新,访问人数不断增加。多个用户访问会受影响,所以要慎用。多个用户访问会受影响,所以要慎用。关闭浏览器关闭浏览器再打开依然能增加,只有再打开依然能增加,只有关闭服务器关闭服务器,再打,再打开页面,才重新初始化。开页面,才重新初始化。说明变量是说明变量是application级共享级共享252022-3-27变量的声明和使用变量的声明和使用案例名称:变量的声明和使用案例名称:变量的声明和使用程序名称:程序名称:varApp.jsp个人访问本站26

26、2022-3-27变量的声明和使用n声明函数,一般会加上声明函数,一般会加上synchronizedn功能是当前一个用户在执行该方法的时候,其他的用户功能是当前一个用户在执行该方法的时候,其他的用户必须等待,直到该用户完成操作。必须等待,直到该用户完成操作。 参见上图参见上图n如果去掉如果去掉synchronized,则不等待,参数会出现重复值,则不等待,参数会出现重复值272022-3-27代码块代码块 n可以在可以在“”之间插入之间插入Java程序片程序片例:例:varPage.jspn一个一个JSP页面可以有许多程序片,这些代码块将被页面可以有许多程序片,这些代码块将被JSP服服务器按照

27、顺序执行。务器按照顺序执行。n注意:在注意:在中声明的是局部变量。中声明的是局部变量。nJSP页面的局部变量,只在页面的局部变量,只在当前页面当前页面中有效。中有效。 在当前页在当前页面刷新变量不增加,而且多个用户访问互不相关。面刷新变量不增加,而且多个用户访问互不相关。n说明变量是说明变量是page级共享级共享282022-3-27JSP隐含对象概述隐含对象概述 nJSP根据根据Servlet API而提供了某些隐含对象。而提供了某些隐含对象。n可以使用标准的变量来访问这些对象,并且不用编写任何可以使用标准的变量来访问这些对象,并且不用编写任何额外的代码,就可以在额外的代码,就可以在JSP中

28、自动使用到它。中自动使用到它。n在在JSP页面中可以获得的主要的页面中可以获得的主要的7个隐含对象变量为:个隐含对象变量为:out对象:功能是把信息回送到客户端的浏览器中。对象:功能是把信息回送到客户端的浏览器中。response对象:功能是处理服务器端对客户端的一些响应。对象:功能是处理服务器端对客户端的一些响应。request对象:功能是用来得到客户端的信息。对象:功能是用来得到客户端的信息。application对象:用来保存网站的一些全局变量。对象:用来保存网站的一些全局变量。session对象:用来保存单个用户访问时的一些信息。对象:用来保存单个用户访问时的一些信息。cookie对象

29、:将服务器端的一些信息写到客户端的浏览器中。对象:将服务器端的一些信息写到客户端的浏览器中。pageContext对象:提供了访问和放置页面中共享数据的方式。对象:提供了访问和放置页面中共享数据的方式。292022-3-27out对象对象 nout对象是对象是javax.servlet.jsp.JspWriter类的一个实例,类的一个实例,n作用是把信息回送到客户端的浏览器中。作用是把信息回送到客户端的浏览器中。n最常用的方法就是最常用的方法就是print()和和println()。客户端是浏览器,向客户端输出时,可以使用客户端是浏览器,向客户端输出时,可以使用HTML中的中的一些标记,一些标

30、记,如:如:“out.println(”Hello,JSP“);”。n其他常用方法是:其他常用方法是:out.write功能和功能和out.print相同,相同,newLine()的功能是输出一个换行符的功能是输出一个换行符n,而不是,而不是out.flush()的功能是输出缓冲的内容。的功能是输出缓冲的内容。out.close()的功能是关闭输出流。的功能是关闭输出流。nout对象的生命周期是当前页面。对于每一个对象的生命周期是当前页面。对于每一个JSP页面,都页面,都有一个有一个out对象。对象。302022-3-27使用out对象程序名称:程序名称:out.jsp注:注:out.writ

31、e(“hello!”);可以换行可以换行312022-3-27reponse对象对象 nresponse是是javax.servlet.http.HttpServletResponse类的一类的一个实例。它被作为给个实例。它被作为给jspService()方法的一个参数方法的一个参数而由引擎传递给而由引擎传递给JSP,在这里在这里JSP要改动它。要改动它。nresponse对象的作用域是它所在的页面。对象的作用域是它所在的页面。n通过通过response对象,对客户的请求作出动态响应,对象,对客户的请求作出动态响应,向客户端发送数据。向客户端发送数据。322022-3-27网页转向网页转向 n

32、response对象对象最常用的是最常用的是sendRedirect()方法方法,将当前,将当前客户端的请求转到其它页面去。客户端的请求转到其它页面去。地址栏是目标页面地址地址栏是目标页面地址例:例:sendRedirect.jspn代码格式为:代码格式为:“response.sendRedirect(URL地址地址);”n指令的区别就是:指令的区别就是:跳转文件范围:只能使用跳转文件范围:只能使用在本网站内跳转在本网站内跳转,可以,可以使用使用response.sendRedirect跳转到任何一个地址的页面。跳转到任何一个地址的页面。 例如:例如:response.sendRedirect

33、(“./test2-02/MyJsp.jsp”); 就会出错!就会出错!地址栏的区别地址栏的区别。332022-3-27动态动态contentType响应响应 n当请求一个当请求一个JSP页面的时候,如果该页面页面的时候,如果该页面用用page指令设置页面的指令设置页面的contentType属性属性的值是的值是text/html,那么服务器将把静态页,那么服务器将把静态页面部分发送给客户端。面部分发送给客户端。n也可以设置为其他一些相应类型,如:也可以设置为其他一些相应类型,如:text/plain(文本文件)、(文本文件)、application/x-msexcel(Excel文件)文件)

34、application/msword(Word文件)等。文件)等。 342022-3-27显示为显示为Word文档文档程序名称:程序名称:setContentType.jspresponse对象 setContentType方法将当前页面保存为word文档吗? 注:点击打开,如图;点击保存,出现下载提示框。注:点击打开,如图;点击保存,出现下载提示框。352022-3-27HTTP文件头响应文件头响应 n利用利用JSP动态改变客户端的响应,使用的语法是动态改变客户端的响应,使用的语法是“response.setHeader()”,n如让客户端自动每隔如让客户端自动每隔10秒刷新一次,秒刷新一次

35、, 案例名称:动态改变响应头案例名称:动态改变响应头程序名称:程序名称:setHeader.jsp现在的时间是:362022-3-27设置缓冲区设置缓冲区 n在实际的在实际的JSP应用开发中,为了确保显示的正确性,需要将禁用页面应用开发中,为了确保显示的正确性,需要将禁用页面缓冲,否则会显示其他用户的一些的信息。缓冲,否则会显示其他用户的一些的信息。n例如,有密码保护的例如,有密码保护的Web应用中,如果用户退出后,一般使用应用中,如果用户退出后,一般使用session.invalidate()为了清空为了清空session ; 别人又按了后退按钮。浏览别人又按了后退按钮。浏览器把缓存中的页面

36、呈现出来,个人数据是否安全?器把缓存中的页面呈现出来,个人数据是否安全?n为解决为解决防止浏览器缓存防止浏览器缓存问题,需要在问题,需要在每个每个JSP的页面的页面中添加中添加3条语句条语句 n注意:最好应用过滤器注意:最好应用过滤器servlet,把需要缓冲的页面集中在同一个目录把需要缓冲的页面集中在同一个目录下下,每次只须更改每次只须更改web.xml就可以完成缓冲设置就可以完成缓冲设置.案例名称:防止浏览器缓存案例名称:防止浏览器缓存程序名称:程序名称:setCache.jsp372022-3-27request对象对象 n是是javax.servlet.HttpServletReque

37、st子类的实例,子类的实例,n当客户端请求一个当客户端请求一个JSP页面时,页面时,JSP容器会将客户端的请容器会将客户端的请求信息包装在这个求信息包装在这个request对象中。对象中。nrequest对象的作用域是一次对象的作用域是一次request。n请求信息的内容包括请求的头信息(请求信息的内容包括请求的头信息(Header)、系统信)、系统信息(比如:编码方式)、请求的方式(比如:息(比如:编码方式)、请求的方式(比如:GET或或POST)、请求的参数名称和参数值等信息)、请求的参数名称和参数值等信息 382022-3-27Request获取获取Form表单的信息表单的信息 n通常用

38、于获取客户端请求的参数名称和参数值信息。通常用于获取客户端请求的参数名称和参数值信息。语法为:语法为:request.getParameter(”param1“)例:例:String num1=request.getParameter(“num1”); double num11=Double.parseDouble(num1);ngetParameterValues()方法获得表单提交的方法获得表单提交的同名信息同名信息,如复选框中信息:,如复选框中信息: String s=request.getParameterValues(“check); for(int i=0; is.length;

39、i+) out.println(si); n也可以通过也可以通过request对象的对象的getParameterNames()方法得到客户端传递方法得到客户端传递过来的过来的所有参数名字所有参数名字,如:,如:Enumeration params = request.getParameterNames();while(params.hasMoreElements() name=(String) params.nextElement(); nameValue=request.getParameter(name); 392022-3-27Request示例示例n案例名称:request获取HTM

40、L表单提交的信息requestForm.htm-requestParam.jsp 姓名:密码:402022-3-27Request示例:利用集合读取值示例:利用集合读取值request.setCharacterEncoding(GBK);Enumeration params = request.getParameterNames();while(params.hasMoreElements() current_param = (String)params.nextElement(); out.println(Name: + current_param + ); out.println(Valu

41、es: + request.getParameter(current_param) + );%n案例名称:request获取HTML表单提交的所有信息requestForms.htm-requestParams.jsp412022-3-27Request获取客户端信息获取客户端信息 n利用利用request对象可以获得客户端的基本信息对象可以获得客户端的基本信息n如:如:JSP文件目录、客户端的地址、以及服务器的端口等,文件目录、客户端的地址、以及服务器的端口等, n例:例:requestClient.jsp422022-3-27汉字问题两种解决方法汉字问题两种解决方法 n利用利用reques

42、t.getParameter得到得到Form元素的时候,默认元素的时候,默认字符编码为字符编码为ISO-8859-1,不能正确显示汉字。,不能正确显示汉字。n目前有两种解决方法,目前有两种解决方法,一种是在执行操作之前,设置一种是在执行操作之前,设置request的编码格式,语法是:的编码格式,语法是:“request.setCharacterEncoding(GBK);”另一种方法是转换字符编码另一种方法是转换字符编码 432022-3-27案例案例4-2:应用应用Request读取调查表信息读取调查表信息案例名称:调查表输入页面案例名称:调查表输入页面程序名称:程序名称:input.htm

43、442022-3-27调查表信息的读取调查表信息的读取案例名称:调查表处理页面案例名称:调查表处理页面程序名称:程序名称:handle.jsp注意:性格信息是多选框,多项信息如何读取注意:性格信息是多选框,多项信息如何读取452022-3-27application对象对象 n站点所有用户公用一个站点所有用户公用一个application对象,对象,n当站点服务器开启的时候,当站点服务器开启的时候,application就就被创建,直到网站关闭。被创建,直到网站关闭。n利用利用application这一特性,可以方便地创这一特性,可以方便地创建建聊天室和网站计数器聊天室和网站计数器等常用站点应

44、用程序等常用站点应用程序 462022-3-27application的自定义属性的自定义属性 npublic void setAttribute(String key, Object obj),将对象将对象obj添加到添加到application对象中,并为添加的对象对象中,并为添加的对象添加一个索引关键字添加一个索引关键字key。npublic Object getAttribute(String key),获取获取application对象中含有关键字对象中含有关键字key的对象。的对象。由于任何对象都可以添加到由于任何对象都可以添加到application中,因此用此中,因此用此方法取

45、回对象的时候,需要强制转化为原来的类型。方法取回对象的时候,需要强制转化为原来的类型。npublic void removeAttribute(String key)移去移去application对象中含关键字对象中含关键字key的对象。的对象。472022-3-27自定义属性案例名称:自定义属性案例名称:自定义属性程序名称:程序名称:appAttr.jsp案例名称:自定义属性案例名称:自定义属性程序名称:程序名称:appGetAttr.jsp482022-3-27自定义属性492022-3-27实现聊天室实现聊天室 n聊天室允许多用户实时进行信息交流,所有用户可以看到彼此的信息,聊天室允许多

46、用户实时进行信息交流,所有用户可以看到彼此的信息,这与这与application对象的特点正好符合,所以可利用对象的特点正好符合,所以可利用application实现聊实现聊天室。天室。n注意:注意:= 是比较对象的,也就是内存地址;而是比较对象的,也就是内存地址;而 equal 是比较是比较 字符串字符串的。的。object = null的时候的时候 调用调用object.equals(null)会出现空指针异常会出现空指针异常(已经为(已经为null,如何调用方法?),如何调用方法?)案例名称:简易聊天室案例名称:简易聊天室程序名称:程序名称:chat.jsp502022-3-27案例案例

47、4-3:网页计数器:网页计数器 n网页计数器是网页计数器是application 对象的又一个用途,因为对象的又一个用途,因为application是所是所有的用户所共有的,当有新用户访问网页时自动增加计数器的值。有的用户所共有的,当有新用户访问网页时自动增加计数器的值。n注:刷新时会增加计数。注:刷新时会增加计数。 程序名称:程序名称:CountV1.jsp CountV2.jsp512022-3-27 session对象对象 nsession对象是对象是java.servlet.http.HttpSession类的一个类的一个实例,它表示为发送请求的客户建立的实例,它表示为发送请求的客户建

48、立的会话会话,并只对该,并只对该HTTP请求有效。请求有效。n从一个客户打开浏览器并从一个客户打开浏览器并连接到服务器连接到服务器开始,到客户端与开始,到客户端与服务器断开连接服务器断开连接结束,称为一个会话。结束,称为一个会话。nsession对象的作用域是一次会话。即在对象的作用域是一次会话。即在session中保存中保存在对象在在对象在当前用户连接的所有页面当前用户连接的所有页面中都是可以被访问到。中都是可以被访问到。n可以使用可以使用Session 对象存储用户登录网站时候的信息,当对象存储用户登录网站时候的信息,当用户在页面之间跳转时,存储在用户在页面之间跳转时,存储在Session

49、对象中的变量不对象中的变量不会被清除(在一定时间内,系统默认会被清除(在一定时间内,系统默认30m,也可以修改时,也可以修改时间限定值)。间限定值)。522022-3-27 sessionsession对象的对象的IDID案例名称:使用案例名称:使用ID属性程序名称:属性程序名称:sessId.jspn当一个客户首次访问服务器上的一个当一个客户首次访问服务器上的一个JSP页面,页面,JSP引擎引擎产生一个产生一个session对象,同时分配一个对象,同时分配一个String类型的类型的ID号。号。n启用启用session对象,需在对象,需在page指令中,设属性指令中,设属性session=t

50、rue(也即默认值)。(也即默认值)。n方法方法String getID(),可获得,可获得session对象的编号。对象的编号。532022-3-27session常用方法常用方法npublic void setAttribute(String key,Object obj)将对象将对象obj添加到添加到session中,并为其指定索引关键字中,并为其指定索引关键字keynpublic Object getAttribute(String key)获取获取session中含有关键字中含有关键字key的对象。由于任何对象都可的对象。由于任何对象都可以添加到以添加到session中,因此用此方法

51、取回对象的时候,需要中,因此用此方法取回对象的时候,需要强制转化为原来的类型。强制转化为原来的类型。npublic void removeAttribute(String key)移去移去session中含关键字中含关键字key的对象。的对象。npublic Boolean isNew()判断是否是一个新的客户判断是否是一个新的客户可以利用此方法使网页计数器可以利用此方法使网页计数器刷新不计数。刷新不计数。nvoid invalidate() 将会话的全部内容删除将会话的全部内容删除542022-3-27Session管理会话生命周期的方法管理会话生命周期的方法nlong getCreatio

52、nTime()返回返回Session的创建日期。返回的创建日期。返回类型为类型为long,常被转化为,常被转化为Date类型,如:类型,如:Date createTime = new Date(session.get CreationTime()nlong getLastAccessedTime() 返回返回Session的最后活跃的最后活跃时间。返回类型为时间。返回类型为longnint getMaxInactiveInterval()返回返回Session的超时时间。的超时时间。单位为秒。超过该时间没有访问,服务器认为该单位为秒。超过该时间没有访问,服务器认为该Session失效失效nvo

53、id setMaxInactiveInterval(int second)设置设置Session的超时时间。单位为秒的超时时间。单位为秒552022-3-27session自定义属性的简单应用自定义属性的简单应用程序名称:程序名称:sessSetAttr.jsp下一页562022-3-27案例案例4-4:简易:简易session版购物车版购物车 n利用利用session保存用户选购的商品信息,本保存用户选购的商品信息,本购物车程序包含三个程序:购物车程序包含三个程序:(1)buy1.jsp:购物网页一。:购物网页一。(2)buy2.jsp:购物网页二。:购物网页二。(3)display.jsp

54、:查看购物车程序。:查看购物车程序。572022-3-27简易简易session版购物车版购物车文件夹文件夹4-4:buy1.jsp、buy2.jsp、display.jsp582022-3-27 cookie对象对象 nCookie是由是由Web服务器产生服务器产生后保存在后保存在用户硬盘用户硬盘上的一段上的一段文本,在用户以后访问该文本,在用户以后访问该Web服务器时,浏览器会把这一服务器时,浏览器会把这一信息原样发送给服务器,供服务器读取。信息原样发送给服务器,供服务器读取。n每个站点的每个站点的Cookie与其他所有站点的与其他所有站点的Cookie存在同一文存在同一文件夹中的不同文件

55、内,只能由该站点的页面读取。件夹中的不同文件内,只能由该站点的页面读取。nCookie可以包含在一个对话期或几个对话期之间某个可以包含在一个对话期或几个对话期之间某个WEB站点的所有页面的共享信息,使用站点的所有页面的共享信息,使用Cookie还可以在还可以在页面之间交换信息。页面之间交换信息。n目前主流的浏览器(目前主流的浏览器(Internet Explorer和和Netscape Navigator)都支持)都支持Cookie。592022-3-27cookie对象对象n服务器可以根据服务器可以根据Cookie来跟踪用户,这对于需要来跟踪用户,这对于需要区别用户的场合(如电子商务)特别有

56、用。区别用户的场合(如电子商务)特别有用。n浏览器必须已激活浏览器必须已激活Cookie,才能使用。,才能使用。工具工具-Itnternet选项选项-安全安全-自定义级别自定义级别nCookie的存放位置的存放位置 c:windowsCookieswin2000中:中: c:Documents and Setting用户名用户名Cookies602022-3-27CookieCookie的使用的使用n创建创建Cookie对象对象Cookie theCookie=new Cookie(“cookieName”,” cookieValue”);n将将Cookie对象传送到客户端对象传送到客户端re

57、sponse.addCookie(theCookie)n读取保存到客户端的读取保存到客户端的CookieCookie cookies=request.getCookies();for (int i=0; icookies.length; i+) if (“cookieName”.equals(cookiesi.getName() out.println(cookiesi.getValue();612022-3-27删除删除CookieCookien设置设置Cookie对象的有效周期为对象的有效周期为0,表示此,表示此Cookie对象存放在浏览器后立即失效对象存放在浏览器后立即失效n设置设置Co

58、okie对象的有效周期为负数,表示此对象的有效周期为负数,表示此Cookie对象当浏览器关闭后立即失效对象当浏览器关闭后立即失效nCookie theCookie=new Cookie(“cookieName”,” cookieValue”);ntheCookie.setMaxAge(0); ntheCookie.setPath(“”); nResponse.addCookie(theCookie);622022-3-27Cookie常用方法常用方法1 njava.lang.Object clone() 返回一个返回一个cookie的副本的副本 njava.lang.String getCom

59、ment() 提取提取cookie的注释的注释 njava.lang.String getDomain() 返回返回cookie的域的域 nint getMaxAge() 返回以秒为单位的返回以秒为单位的cookie的生存时的生存时间间 njava.lang.String getName() 返回返回cookie的名的名 njava.lang.String getPath() 取得取得cookie的返回路径的返回路径 nboolean getSecure() 如果如果cookie必须结束一个安全必须结束一个安全连接则返回连接则返回truenjava.lang.String getValue() 返回返回cookie的值的值 nint getVersion() 返回返回cookie的协议版本的协议版本632022-3-27Cookie常用方法常用方法2nvoid setComment(java.lang

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论