Java语言知识学习程序设计-JSP程序设计.ppt





《Java语言知识学习程序设计-JSP程序设计.ppt》由会员分享,可在线阅读,更多相关《Java语言知识学习程序设计-JSP程序设计.ppt(104页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1,第十二章 JSP程序设计,JAVA语言程序设计,2,目录,12.1 JSP简介 12.2 JSP与JavaBean 12.3 JSP标签库 12.4 JSP与Servlet 12.5 本章小结,3,12.1 JSP简介,servlet和JSP(JavaServer Page) 已成为开发电子商务等动态网站的首选技术,它们都是运行在服务器上的Java程序 servlet HTML的编写和维护都比较困难,使用print语句生成HTML并不容易,非Java开发人员很难处理这些HTML JSP 静态内容的输出都采用标准的HTML,只用java语言编写页面中生成动态内容的代码 提供了对Java编程语
2、言以及针对动态部分的servlet技术的完全访问,4,12.1.1 什么是JSP程序,JSP 简单的说,就是嵌入了Java代码的HTML,由静态HTML、专用的JSP标签和Java代码组成 服务器端的技术。在后台被自动转换成servlet 仅在修改后的第一次被访问时,才会被转换成servlet并进行编译,创建JSP唯一的一个一实例,并调用_jspInit完成初始化,之后每个用户请求都会创建一个调用JSP实例的_jspService方法的线程。因而多个并发请求会导致多个线程同时调用_jspService Tomcat中,默认目录下的JSP文件被转换生成的servlet文件及编译后生成的class
3、文件被放在install_dir/work/ Catalina/ localhost/ _/org/apache/jsp目录下,JSP简介,5,12.1.1 什么是JSP程序 JSP页面被请求后的操作,JSP简介,6,JSP文件在服务器的部署 可以和常规的HTML页面放在相同的目录中,并使用和常规HTML相同的URL访问它们 除了不允许将WEB-INF和META-INF作目录名之外,可以使用任何喜欢的目录名 Tomcat中JSP的默认目录是install_dir/webapps/ROOT,我们只要把编写好的JSP文件直接放在此目录下即可 例如install_dir/webapps/ROOT/S
4、omeDirectory/SomeFile.jsp 则对应的URL为http:/host:port/SomeDirectory/SomeFile.jsp,12.1.1 什么是JSP程序 JSP文件在服务器的部署,JSP简介,7,12.1.2 JSP语法概述,除了标准的HTML以外,JSP主要包括三类组件 脚本元素(scripting elements) 使你可以向JSP文件产生的servlet文件中插入代码 指令标签(directives) 将影响由JSP页产生的servlet的总体结构 动作标签(actions) 影响JSP运行时的功能,JSP简介,8,脚本元素向JSP文件产生的servle
5、t文件中插入代码,主要有三种形式 表达式 一个JSP页面可以有许多,它们将被插入到生成的servlet文件的_jspService方法中 每次客户端请求都会新开一个线程,调用servlet的service方法,service方法再调用_jspService方法,JSP简介,12.1.2 JSP语法概述 脚本元素,9,声明语句 声明的内容包括变量和方法,将被插入到生成servlet的类体中,在_jspService方法之外,成为类变量和类方法,直到服务器关闭才被释放 当多个客户请求一个JSP页面时,多个线程将共享这些变量和方法,因而任何一个用户对这些变量操作的结果,都会影响到其他用户,12.1.
6、2 JSP语法概述 脚本元素,JSP简介,10,指令标签 将影响由JSP页产生的servlet的总体结构 其格式为 directive代表指令名称 attribute代表该指令中可选的属性名称 value代表属性值并且总是用单引号或双引号括起来,要想在属性值value中输出引号,可在该引号前用一个反斜杠“” 在JSP中,有三种类型的指令 page include taglib,JSP简介,12.1.2 JSP语法概述 指令标签,11,page指令 可放在文档内的任何位置,该指令对整个页面有效 可以定义一个或多个大小写敏感的属性,包括import、contentType、isThreadSafe
7、、Session、buffer等 import属性 为JSP页面引入Java核心包中的类,这样就可以在脚本部分使用这些类,如: 可以为import属性指定多个值,这些值用逗号分割,这样就可以引入若干个包或类,如: JSP页面默认import属性已经有如下的值:java.lang.*, javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*“ 除import属性外,Page指令的其它属性只能指定一个值,JSP简介,12.1.2 JSP语法概述 指令标签/page指令,12,contentType属性 定义JSP页面相应的MIME(Mult
8、ipurpose Internet Mail Extension,多用途Internet 邮件扩展)类型和JSP页面字符编码 其属性使用以下两种格式之一 或者 例如 其属性默认值为 ,JSP简介,12.1.2 JSP语法概述 指令标签/page指令,13,isThreadSafe属性 用来设置JSP页面是否可多线程访问 设为true时,JSP页面能同时响应多个客户的请求 设为false时,同一时刻只能处理一个客户的请求,其它客户须等待 其默认值为true session属性 表示当前的JSP页面是否参与HTTP会话 设为true时,可以使用内置的javax.Servlet.HttpSessio
9、n类型的一个名为session的对象 设为false时,则该对象不被创建 默认值为true,JSP简介,12.1.2 JSP语法概述 指令标签/page指令,14,buffer属性 指定jsp内置输出流out变量使用的缓冲区的尺寸,如果设置为none,则不使用缓冲区 默认值是8kb out变量是JspWriter类型的,JspWriter是java.io.Writer类的子类。累计输出内容超过了这里设定的大小、完成了此页、或者输出被明确清除(如使用response. flushBuffer),文档才被发送给客户显示 例如 autoflush属性 控制out的缓冲区在装满时的处理,默认为true
10、 设为true时,装满时则自动清除缓冲区 设为false时,装满后则会出现异常 buffer的值是none时将autoflush设为false是不合法的,JSP简介,12.1.2 JSP语法概述 指令标签/page指令,15,info属性 定义了一个通过getServletInfo方法可从servlet中检索到的串 格式为 isErrorPage属性 指明当前页是否能充当其它JSP页面的错误页。采用以下两种格式之一 或者 。 errorPage属性 指定一个处理当前页未被捕获的任何异常的页面 格式为 这个URL指定的错误页的isErrorPage属性必须被设为true方可使用,JSP简介,12
11、.1.2 JSP语法概述 指令标签/page指令,16,include指令 与page指令不同,该指令应该放在你想要将外部文件插入的位置,它可以将文件整体插入到该处 其格式为 Jsp文件被转换成servlet文件时,外部文件就被插入了,然后统一进行编译 当外部文件发生改变时,当前页面无法得到通知,要想得知外部文件的任何改变,当前页面必须重新编译,由上一节jsp的操作过程可知,必须重新保存该jsp文件,12.1.2 JSP语法概述 指令标签/include指令,JSP简介,17,taglib指令 JSP1.1规范中新增的 指定一个标记库,用于扩充标准的JSP标记集 完成三个任务 首先,它通知JS
12、P服务器,页面使用一个标记库 其次,它指定包含标记库标志符的特殊jar文件的位置 最后,它指定一个用于唯一区分这些新标记的标记前缀 格式为: uri属性:一个引用标记库描述符文件(后缀名为TLD:Tag Library Descriptor)的绝对或相对URL prefix属性:指定一个将要在TLD文件定义的标记名前面使用的前缀 如果TLD文件定义了一个名为tag1的标记,并且prefix属性的值设为test,那么实际的标记名将为test:tag1,12.1.2 JSP语法概述 指令标签/taglib指令,JSP简介,18,动作标签 一种特殊的标签,影响JSP运行时的功能 格式为 action
13、_name代表动作名称 attribute代表属性名称 value代表属性值 分为两类 Resource动作 JavaBean动作,JSP简介,12.1.2 JSP语法概述 动作标签,19,Resource动作 include动作标签 告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入,例如: 如果包含的是普通的文本文件,就将文件的内容发送到客户端,由客户端负责显示 如果包含的是JSP文件,JSP引擎就执行这个文件,然后将执行的结果发送到客户端显示 如果修改了被包含的文件,那么运行时将看到修改后的结果, 这一点和include指令不同 可结合param指令,向要包含的文件传送信息,
14、被包含的文件通过JSP的内置对象request调用getParameter方法获得参数值。格式为: ,JSP简介,12.1.2 JSP语法概述 动作标签/Resource动作,20,forward动作标签 告诉JSP页面从该指令处停止当前页面的继续执行,而转向其他的一个页面,当前页面后边的内容将不被执行,例如: 该标签也可结合param指令,向要转到的页面传送信息,格式同include标签,JSP简介,12.1.2 JSP语法概述 动作标签/Resource动作,21,plugin动作标签 用于插入Applet或JavaBean到JSP页面,组件必须被下载到浏览器并且在客户端执行 param元
15、素可以用于发送参数到Applet或JavaBean(一个可重复使用的软件组件,实际上就是一个Java类)如: prompt message 当客户访问含该段代码的JSP文件时,如果客户端不支持applet,将导致下载Java plug插件,出现客户选择是否下载插件的界面。用户下载安装后,就可以使用Java虚拟机加载执行Java applet小应用程序A.class了 fallback元素可用于指定组件失败时发送到客户端的错误信息字符串,12.1.2 JSP语法概述 动作标签/Resource动作,JSP简介,22,JavaBean动作 useBean动作标签 格式为 或者 服务器将加载该bea
16、n类的一个对象 setProperty动作标签 设置bean的属性 getProperty动作标签 获取bean属性的值并输出,12.1.2 JSP语法概述 动作标签/JavaBean动作,JSP简介,23,12.1.3 JSP内置对象,JSP的内置对象 在JSP页面的脚本元素中,有些不用声明就可以使用的对象 包括out、request、response、session、application等 out对象 是javax.servlet.jsp.JspWriter类的实例,JspWriter包含的方法大多数与java.io.PrintWriter类一样 这个输出流对象用来向客户端输出数据,其可
17、调用的方法如下表,JSP简介,24,12.1.3 JSP内置对象(续) out对象可使用的方法,JSP简介,25,request对象 是javax.servlet.http.HttpServletRequest的实例 客户每次请求页面时,JSP引擎创建一个request对象代表该请求 封装了用户提交的信息,这些信息包括 HTTP请求的请求行 HTTP头 信息体 调用相应的方法可以获取封装的信息,最常用的方法是request.getParameter(param_name),12.1.3 JSP内置对象(续) request对象,JSP简介,26,12.1.3 JSP内置对象(续) reques
18、t对象的常用方法,JSP简介,27,response对象 javax.servlet.http.httpServletResponse的实例 与request对象相对应,我们可以用response对象对客户的请求做出动态响应,向客户端发送数据。类似于HTTP请求,HTTP响应也由三个基本部分组成 状态行:包括使用的协议以及状态代码,表示请求是否成功 头:包含关于服务器和返回的文档的消息,例如服务器名称和文档类型等 信息体 使用这个对象的一些方法可以完成如下任务 动态设置contentType属性 页面重定向 设置返回状态码等,JSP简介,12.1.3 JSP内置对象(续) response对象
19、,28,JSP简介,12.1.3 JSP内置对象(续) resnponse对象的常用方法,29,会话的概念 从一个客户打开浏览器连接到服务器的某个服务目录,到客户关闭浏览器离开该服务目录称为一个会话 每个会话只对应于一个客户,并且可以跨多个页面 session对象 javax.servlet.http.HttpSession的实例,对应于会话的概念 用于在使用无状态连接协议(如HTTP)的情况下跟踪关于某个客户的信息,对识别客户是非常重要的 在客户首次访问某服务目录中的任何一个JSP页面时创立,并且具有一个独一无二的Id号,直到客户关闭浏览器或这个session对象达到了最大生存时间,服务器端
20、该客户的session对象才被取消 调用相应的方法可以存储客户在访问各个页面期间提交的各种信息,比如姓名、编号等,JSP简介,12.1.3 JSP内置对象(续) session对象,30,JSP简介,12.1.3 JSP内置对象(续) session对象的常用方法,31,application对象 javax.servlet.ServletContext的实例。 比session对象的生存时期更长。服务器启动后,就产生了这个application对象,直到服务器关闭,该对象才被取消 所有客户共享这个内置的application对象,所以任何客户对该对象中存储的数据的改变都会影响到其他客户,因此
21、,在某些情况下,对该对象的操作需要同步处理,12.1.3 JSP内置对象(续) application对象,JSP简介,32,12.1.3 JSP内置对象(续) application对象的常用方法,JSP简介,33,12.1.4 一个简单的JSP程序,在表单中输入一个自然数,计算从1到该数的累加和 ,JSP简介,34,12.1.4 一个简单的JSP程序(续), 计算连续和 请输入一个自然数 的连续和是 ,JSP简介,35,12.1.4 一个简单的JSP程序(续) 例12_1运行结果,JSP简介,36,12.2 JSP与JavaBean,指令标签和动作标签 都可以嵌入代码。前者实际上是将代码插
22、入行内,后者是将另一个页面的输出插入原来的页面 这些方法无助于分离表示逻辑和业务逻辑,它们都造成了显著的可伸缩性问题,不利于开发人员分工合作 JavaBean 解决了这个问题,它将一系列相关的属性和方法组合在一个Java类中,构成了一个组件 在JSP程序中,只要使用JavaBean动作标签调用该组件就可以了,37,12.2.1 JavaBean简介,JavaBean 其实就是Java类 必须使用一组相当简单而又标准的设计和命名约定,因而调用它们的应用程序无须理解其内部工作原理,就可以很容易的使用JavaBean的方法 JavaBean类的一个实例叫做一个bean 通常我们将JavaBean文件
23、取名为XxxBean,JSP与JavaBean,38,12.2.1 JavaBean简介(续) JavaBean的设计要求,对于JSP中使用的JavaBean,有三个设计要求 必须拥有一个默认(无参数)的构造函数 如果未声明任何构造函数,默认的构造函数会被自动创建 JSP元素创建bean时,会调用默认构造函数 类中不应该有公开的属性 对于类内的属性,通常应该提供设置和获取其值的方法 public void setXxx(Objec_type value)方法进行设置 public Object_type getXxx()方法进行获取,如果该属性是布尔类型的,允许使用public boolean
24、 isXxx()获取属性值 如果某个属性只有getXxx或isXxx方法 ,叫做只读属性,JSP与JavaBean,39,可以使用JSP脚本元素访问类的任意方法 访问bean的标准JSP动作只能使用那些遵循getXxx/setXxx或isXxx/setXxx命名约定的方法,12.2.1 JavaBean简介(续)JSP对JavaBean的访问,JSP与JavaBean,40,设计一个描述员工信息的JavaBean类。包括编号、姓名、性别、工资、职务属性 package myBeans; public class EmployeeBean private int id=0,salary=0; p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 语言 知识 学习 程序设计 jsp

限制150内