资源预览内容
第1页 / 共66页
第2页 / 共66页
第3页 / 共66页
第4页 / 共66页
第5页 / 共66页
第6页 / 共66页
第7页 / 共66页
第8页 / 共66页
第9页 / 共66页
第10页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Java实用教程课件 制作人:明日科技,Java实用教程,第12章 Java Web程序设计,课件制作人:明日科技,第12章 Java Web程序设计,12.1 JSP概述 12.2 Tomcat安装和启动 12.3 了解JSP的基本构成 12.4 JSP的指令标识 12.5 JSP的脚本标识 12.6 JSP的动作标识 12.7 JSP常用内置对象 12.8 Java Web框架技术,课件制作人:明日科技,12.3 了解JSP的基本构成,在学习JSP语法之前,首先初步了解一下JSP页面的基本结构。请看下面的代码:, JSP页面的基本构成 今天是: ,课件制作人:明日科技,了解JSP的基本构成,在上面的代码中,并没有包含JSP中的所有元素,但它仍然构成了一个动态的JSP程序。运行该JSP页面,将显示当前的系统时间。暂且不对其功能实现进行讲解,先来介绍该页面的组成元素。 (1)JSP中的指令标识:利用JSP指令可以使服务器按照指令的设置来执行动作和设置在整个JSP页面范围内有效的属性。例如,上述代码中的第一个page指令指定了在该页面中编写JSP脚本使用的语言为Java,并且还指定了页面响应的MIME类型和JSP字符的编码;第二个page指令所实现的功能类似于Java语言中的import语句,用来向当前的JSP文件中导入需要用到的包文件。,课件制作人:明日科技,了解JSP的基本构成,(2)HTML标记语言:HTML标记在JSP页面中作为静态的内容,浏览器将会识别这些 HTML标识并执行。在JSP程序开发中,这些HTML标记语言主要负责页面的布局、设计和美观,可以说是网页的框架。 (3)嵌入的Java代码片段:嵌入到JSP页面中的Java代码,在客户端浏览器中是不可见的。它们需要被服务器执行,然后由服务器将执行结果与HTML标记语言一同发送给客户端进行显示。通过向JSP页面中嵌入Java代码,可以使该页面生成动态的内容。 (4)JSP表达式:JSP表达式主要用来数据的输出。它可以向页面输出内容显示给用户,还可以用来动态地指定HTML标记中属性的值。 上面介绍的4个元素只是构成JSP页面的一部分,其他的元素如动作标识和JSP注释等都是构成JSP的重要的元素,下面将介绍JSP中的各个元素和它们的语法规则。,课件制作人:明日科技,12.4 JSP的指令标识,指令标识在客户端不可见,由服务器端解释并执行。常用的指令标识有page和include,这两个指令均以“”标记结束,它们的通用格式如下: 下面将分别介绍这两个指令的格式及使用方法。,课件制作人:明日科技,12.4.1 使用page指令,page指令又称为页面指令,用来为JSP页面定义全局属性,使用格式如下: 一个JSP页面可以拥有多个page指令,并且可以放在页面的任意行,但是通常情况下放在页面的最前方,这样可以增强代码的可读性。page指令拥有多个属性,通过设置这些属性可以控制当前的JSP页面。例如,在页面中正确设置当前页面响应的MIME类型为text/html,如果MIME类型设置不正确,则当服务器将数据传输给客户端进行显示时,客户端将无法识别传送来的数据,从而不能正确地显示内容。,课件制作人:明日科技,使用page指令,page指令中除import属性外,其他属性最多只能出现一次,page指令可以具有如下属性:, language=“java“ contentType=“mimeType;charset=CHARSET“ import=“package.class|pageage.*,“ extends=“package.class“ session=“true|false“ buffer=“none|8kb|size kb autoFlush=“true|false“ isThreadSafe=“true|false“ info=“text“ errorPage=“relativeURL“ isErrorPage=“true|false“ isELIgnored=“true|false“ pageEncoding=“CHARSET“ %,课件制作人:明日科技,使用page指令,虽然page指令具有如此多的属性,但是在编程时并不需要一一列出,其中的很多属性可以采用它们的默认值来设置JSP页面。 下面将依次讲解page指令中各个属性的功能。,课件制作人:明日科技,使用page指令,(1)language属性:设置当前页面中编写JSP脚本使用的语言,默认值为java,例如: 上述代码设置了当前页面中使用Java语言来编写JSP脚本,目前只能设置为Java。 (2)contentType属性:设置页面响应的MIME类型,通常被设置为text/html,例如: 如果类属性设置不正确,如设置为text/css,那么客户端浏览器在显示HTML样式时,不能对HTML标识进行解释,而显示HTML代码。 在该属性中还可以设置JSP字符的编码方式,默认编码方式为ISO-8859-1,例如:,课件制作人:明日科技,使用page指令,(3)import 属性:import属性类似于Java中的import语句,用来向JSP文件中导入需要使用的包。在page指令中可多次使用该属性来导入多个包。例如: 或者通过逗号间隔来导入多个包。例如: 在JSP中已经默认导入了包java.lang.*、javax.servlet.*、javax.servlet.jsp.*和javax.servlet.http.*,所以,即使没有通过import属性导入,在JSP页面中也可以调用上述包中的类。 若要在页面中使用编写的JavaBean,也可通过import属性来导入,还可以通过动作标识来创建一个JavaBean实例进行调用。,课件制作人:明日科技,使用page指令,(4)extends属性:extends属性用于指定将一个JSP页面转换为Servlet后继承的类。在JSP中通常不会设置该属性,JSP容器会提供继承的父类。并且如果设置了该属性,可能会影响JSP的编译能力。 (5)session属性:该属性的默认值为true,表示当前页面支持session,设为false表示不支持session。 (6)buffer属性:该属性用来设置out对象(JspWriter类对象)使用的缓冲区的大小。若设置为none,表示不使用缓存,而直接通过PrintWriter对象进行输出;如果将该属性指定为数值,则输出缓冲区的大小不应小于该值,默认值为8KB(因不同的服务器而不同,但大多数情况下都为8KB)。,课件制作人:明日科技,使用page指令,(7)autoFlush属性:该属性默认值为true,表示当缓冲区已满时,自动将其中的内容输出到客户端。如果设为false,则当缓冲区中的内容超出其设置的大小时,会产生“JSP Buffer overflow”溢出异常。 (8)isThreadSafe属性:该属性默认值为true,表示当前JSP页面被转换为Servlet后,会以多线程的方式来处理来自多个用户的请求;如果设为false,则转换后的Servlet会实现SigleThreadModel接口,该Servlet将以单线程的方式来处理用户请求,即其他请求必须等待直到前一个请求处理结束。 (9)info属性:该属性可设置为任意字符串,如当前页面的作者或其他有关的页面信息。可通过Servlet.getServletInfo()方法来获取设置的字符串。例如: 访问该页面将显示“This is index.jsp!”。,课件制作人:明日科技,使用page指令,(10)errorPage属性:该属性用来指定一个当前页面出现异常时所要调用的页面。如果属性值是以“/”开头的路径,则将在当前应用程序的根目录下查找文件;否则,将在当前页面的目录下查找文件。 (11)isErrorPage属性:如果将该属性值设为true,则在当前页面中可以使用exception异常对象。若在其他页面中通过errorPage属性指定了该页面,则当前者出现异常时,会跳转到该页面,并可在该页面中通过exception对象输出错误信息。相反,如果将该属性设置为false,则在当前页面中不能使用exception对象。该属性默认值为false。 【例12-1】 (12)isELIgnored属性:通过设置该属性,可以使JSP容器忽略表达式语言“$”,其值只能为true或false。设为true,则忽略表达式语言。 (13)pageEncoding 属性:该属性用来设置JSP页面字符的编码。默认值为ISO-8859-1。,课件制作人:明日科技,12.4.2 使用include指令,该指令用于在当前的JSP页面中使用该指令的位置嵌入其他的文件,如果被包含的文件中有可执行的代码,则显示代码执行后的结果。 该指令的使用格式如下: file属性:该属性指定被包含的文件,该属性不支持任何表达式,也不允许通过如下的方式来传递参数。 如果该属性值以“/”开头,那么指定的是一个绝对路径,将在当前应用的根目录下查找文件;如果是以文件名或文件夹名开头,那么指定的是一个相对路径,将在当前页面的目录下查找文件。,课件制作人:明日科技,使用include指令,使用include指令引用外部文件,可以减少代码的冗余。例如,有两个JSP页面都需要应用下图所示的网页模板进行布局。其中,这两个页面中的LOGO图片区、侧栏和页尾的内容都不会发生变化。如果通过基本JSP语句来编写这两个页面,会导致编写的JSP文件出现大量的冗余代码,不仅降低了开发进程而且会给程序的维护带来很大的困难。,课件制作人:明日科技,使用include指令,为了降低代码的冗余,可以将这个复杂的页面分成若干个独立的部分,将相同的部分在单独的JSP文件中进行编写。这样在多个页面中应用上述的页面模板时,就可通过include指令在相应的位置上引入这些文件,而只需对内容显示区进行编码即可。类似的页面代码如下:, 在这里对内容显示区进行编码 ,课件制作人:明日科技,12.5 JSP的脚本标识,在JSP页面中,脚本标识使用得最为频繁,因为它们能够方便、灵活地生成页面中的动态内容,特别是Scriptlet脚本程序。JSP中的脚本标识包括以下3种元素:声明标识(Declaration)、JSP表达式(Expression)和脚本程序(Scriptlet)。通过这些元素,就可以在JSP页面中像编写Java程序一样,来声明变量、定义函数或进行各种表达式的运算。在JSP页面中需要通过特殊的约定来表示这些元素,并且对于客户端这些元素是不可见的,它们由服务器执行。,课件制作人:明日科技,12.5.1 JSP表达式(Expression),表达式用于向页面中输出信息,其使用格式为: JSP表达式在页面被转换为Servlet后,成为out.print()方法。所以JSP表达式与JSP页面中嵌入到小脚本程序中的out.print()方法实现的功能相同。如果通过JSP表达式输出一个对象,则该对象的toString()方法会被自动调用,表达式将输出toString()方法返回的内容。,课件制作人:明日科技,12.5.2 声明标识 (Declaration),在JSP页面中可以声明变量或方法,其声明格式为: 特别要注意,在“%”与“!”之间不要有空格。声明的语法与在Java语言中声明变量和方法时是一样的。 在页面中通过声明标识声明的变量和方法,在整个页面内都有效,它们将成为JSP页面被转换为Java类后类中的属性和方法。并且它们会被多个线程即多个用户共享。也就是说,其中的任何一个线程对声明的变量或方法的修改都会改变它们原来的状态。它们的生命周期从创建到服务器关闭后结束。下面将通过一个具体实例来介
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号