《JSP与JavaBean编程.ppt》由会员分享,可在线阅读,更多相关《JSP与JavaBean编程.ppt(83页珍藏版)》请在三一办公上搜索。
1、2023/11/7,1,|海 有|壁 无|一切为了学生。|纳 容|立 欲|为了学生一切。|百 乃|千 则|岂能事事如意,但求无愧于心。|川 大|仞 刚|把微笑留给世界,让世界因你微笑!,2023/11/7,2,温故而知新!,2023/11/7,3,第1章 Web技术简介,1.1 Web基础知识 1.1.1 Web技术的由来与发展 1.1.2 Web动态网页技术1.1.3 Java Web编程的主要组件技术1.2 JSP技术1.2.1 JSP特点与优势1.2.2 JSP的工作原理,2023/11/7,4,1.3 JSP开发Web的方式与体系结构1.3.1 JSP开发Web站点的主要方式1.3.2
2、 JSP两种体系结构1.4 MVC设计模式1.4.1 MVC设计模式思想1.4.2 MVC优缺点,2023/11/7,5,第2章 JSP开发运行环境,2.1 JSP环境介绍2.2 JDK安装配置2.2.1 JDK简介与下载2.2.2 JDK安装与配置2.3 Netbeans开发环境2.3.1 NetBeans简介与下载2.3.2 NetBeans安装与使用,2023/11/7,6,2.4 Eclipse开发环境2.4.1 Eclipse 简介与下载2.4.2 Eclipse的使用2.5 MyEclipse开发环境2.5.1 MyEclipse简介与下载2.5.2 MyEclipse安装与使用2
3、.6 Tomcat服务器2.6.1 Tomcat简介与下载2.6.2 Tomcat安装与配置,2023/11/7,7,第3章 脚本语言,3.1 HTML3.1.1 HTML简介3.1.2 HTML基本标签3.1.3 列表3.1.4 多媒体和超链接3.1.5 表格3.1.6 框架3.1.7 表单,2023/11/7,8,3.2 CSS3.2.1 CSS简介3.2.2 CSS样式表定义3.2.3 在HTML中加入CSS的方法3.2.4 CSS样式表继承性3.2.5 CSS基本属性3.3 JavaScript脚本语言3.3.1 JavaScript简介3.3.2 语言基础知识3.3.3 JavaSc
4、ript对象3.3.4 JavaScript事件,2023/11/7,9,第4章 基于脚本语言的项目实训,4.1 项目需求说明4.2 项目总体结构与构成4.3 项目页面开发4.3.1 登录页面4.3.2 项目的框架页面4.3.3 用户管理模块页面,2023/11/7,10,第5章 JSP基础知识,5.1 JSP的基本页面结构5.2 JSP中的脚本元素5.2.1 变量、方法的声明5.2.2 表达式5.2.3 脚本5.3 JSP中的注释5.3.1 隐藏注释5.3.2 HTML注释5.3.3 Java注释,2023/11/7,11,5.4 JSP的指令5.4.1 page指令5.4.2 includ
5、e指令5.4.3 taglib指令5.5 JSP中的常用动作5.5.1 动作5.5.2 动作5.5.3 动作5.5.4 动作5.5.5 动作5.5.6 动作5.5.7 动作,2023/11/7,12,第6章 JSP的内置对象,6.1 out对象6.1.1 out对象的方法6.1.2 out对象实例6.2 page对象6.2.1 page对象的方法6.2.2 page对象实例6.3 request对象6.3.1 request对象的方法6.3.2 request对象实例6.4 response对象6.4.1 response对象的方法6.4.2 response对象实例,2023/11/7,13
6、,6.5 session对象6.5.1 session对象的方法6.5.2 session对象实例6.6 pageContext对象6.6.1 pageContext对象的方法6.6.2 PageContext对象实例6.7 config对象6.7.1 config对象的方法6.7.2 config对象实例6.8 exception对象6.8.1 exception对象的方法6.8.2 exception对象实例6.9 application对象6.9.1 application对象的方法6.9.2 application对象实例,2023/11/7,14,第7章 JSP中数据库操作,7.1
7、JDBC介绍7.1.1 什么是JDBC7.1.2 JDBC的结构7.2 通过JDBC-ODBC桥访问数据库7.2.1 通过桥访问Access7.2.2 通过桥访问Excel7.3 通过JDBC驱动访问数据库7.3.1 通过JDBC驱动使用MySQL数据库7.3.2 通过JDBC驱动使用Microsoft SQL Server数据库7.3.3 通过JDBC驱动使用oracle数据库,2023/11/7,15,7.4 查询数据库7.5 更新数据库7.5.1 更新的SQL语句7.5.2 JSP更新数据库7.6 JSP在数据库应用中的相关问题7.6.1 JSP的分页浏览7.6.2 汉字处理7.7 JS
8、P中数据库应用实例7.7.1 学生信息系统主页面设计7.7.2 学生信息查询7.7.3 学生信息添加7.7.4 学生信息删除7.7.4 学生信息修改,2023/11/7,16,第8章 个人信息管理系统实训,8.1 项目需求说明8.2 项目系统分析8.3 系统设计与实现8.3.1 数据库设计8.3.2 项目代码实现8.3.2.1登录功能实现8.3.2.2主界面功能实现8.3.2.3个人信息管理功能实现8.3.2.4通讯录管理功能实现8.3.2.5日程安排管理功能实现,2023/11/7,17,第9章 JSP与JavaBean编程,9.1 JavaBean概述9.2 JavaBean的基本用法9.
9、3 Bean的作用域9.4 JavaBean的使用,2023/11/7,18,9.1 JavaBean概述,组件技术在现代软件业中扮演着越来越重要的角色,目前代表性的软件组件技术有COM、COM+、JavaBeans、EJB和CORBA。其中,JavaBean 是一种Java语言写成的可重用组件。用户可以使用JavaBean将功能、处理、值、数据库访问和其它任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其它JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任
10、何改变。本章主要介绍javabean及其使用方法。,2023/11/7,19,JavaBean原来是为了能够在一个可视化的集成开发环境中可视化、模块化地利用组件技术开发应用程序而设计的。在JSP中,不需要使用可视化的功能,可以实现一些比较复杂的事务处理。JavaBean定义的任务通常为“一次编写,随处运行,随处可用”。简单的说,JavaBean是遵循特殊规范的Java类。按功能分,可以分为可视Bean和不可视两类。可视Bean是在画面上可以显示的Bean,通过属性接口接收数据并显示在画面。不可视Bean即Jsp中时常使用的Bean,在程序的内部起作用,如用于求值、存储用户数据等。,2023/1
11、1/7,20,对于JavaBean,四项简单的内容需要被了解。(1)Bean类必须具有不带参数的构造函数。通过直接定义这样的构造函数或忽略所有的构造函数就可以满足这样的需求,在JSP元素创建Bean时会调用空的构造函数。(2)Bean类应该没有任何公共实例变量。私有的属性以及对这些属性提供公有的访问方法是我们应当遵循的编程经验。(3)通过setXxx和getXxx方法应该获得一致的值。如果类具有getXxx方法,而没有相应的setXxx方法,就认为该类只有一项只读属性,称为xxx。这种命名规范的一种异常情况是布尔属性,可使用isXxx查询其值。例如Car类有一个布尔型属性leased,setL
12、eased方法接受一个布尔型参数,isLeased方法不接受任何参数并返回布尔型值。(4)实现Serializable或Externalizable接口。,2023/11/7,21,使用JavaBean的好处是简化了页面设计,并帮助将表示层和业务逻辑层分离。,2023/11/7,22,第9章 JSP与JavaBean编程,9.1 JavaBean概述9.2 JavaBean的基本用法9.3 Bean的作用域9.4 JavaBean的使用,2023/11/7,23,9.2 JavaBean的基本用法,9.2.1 JavaBean的属性9.2.2 访问Bean属性9.2.3 设置Bean属性,20
13、23/11/7,24,下面是一个简单JavaBean的示例,用于存储登录时的用户ID和密码。Java编程提倡面向接口的编程,因此定义一个接口LoginInfoIF。,2023/11/7,25,【例9-1】JavaBean示例,package ch09;public interface LoginInfoIF String getId();String getPassword();void setId(String id);void setPassword(String password);,2023/11/7,26,public class LoginInfo implements Login
14、InfoIF private String id;private String password;public String getId()return id;public void setId(String id)this.id=id;public String getPassword()return password;public void setPassword(String password)this.password=password;,2023/11/7,27,在JSP页面中加载示例Bean的最简单用法是:这通常意味着实例化LoginInfo类,并将其绑定到由id指定名称的变量。因
15、此,此操作可以认为等价于小脚本:虽然jsp:useBean等价于创建一个对象,但其还有其它选项,使其功能更加强大,我们将在以后看到其用法。,2023/11/7,28,在多数情况下,局部变量具有与所创建对象相同的类型。在某些情况下,可能希望将变量声明为实际Bean类型的超类类型,或Bean使用的接口类型,可以使用type属性来控制,示例如下。,2023/11/7,29,9.2 JavaBean的基本用法,9.2.1 JavaBean的属性9.2.2 访问Bean属性9.2.3 设置Bean属性,2023/11/7,30,JavaBean的属性与一般Java程序中所指的属性,或者说与所有面向对象的
16、程序中对象的属性是一个概念,在程序中的具体体现就是类中的变量。在JavaBean中按照属性的不同作用又细分为4类:Simple、Index、Bound与Constrained 属性。,2023/11/7,31,1.Simple属性 一个Simple 属性表示一个伴随有一对get/set方法的变量。属性名与和该属性 get/set方法名对应。例如,如果有setX和getX方法,则暗指有一个名为X的属性。如果有一个方法名为isX,则通常暗指X是一个布尔属性(即X的值为true或false)。,2023/11/7,32,package ch09;public class JavaBeanPro1 p
17、rivate String name;private String sex;public JavaBeanPro(String name,String sex)this.name=name;this.sex=sex;public void setName(String name)this.name=name;public String getName()return name;public void setSex(String sex)this.sex=sex;public String getSex()return sex;,2023/11/7,33,2.Indexed属性 一个Indexe
18、d属性表示一个数组值。使用与该属性对应的set/get方法可取得数组中的数值。该属性也可一次设置或取得整个数组的值。,2023/11/7,34,package ch09;public class JavaBeanPro private int StudentGrade;public JavaBeanPro()public void setStudentGrade(int StudentGrade)this.StudentGrade=StudentGrade;public int getStudentGrade()return StudentGrade;,2023/11/7,35,3.Const
19、rained属性 JavaBean的constrained属性是指当这个属性的值要发生变化时,与这个属性己建立某种连接的其它Java对象可否决属性值的改变。Constrained属性的监听者通过抛出PropertyVetoException来阻止该属性值的改变。,2023/11/7,36,4.Bound属性 一个Bound属性是指当该种属性的值发生变化时,要通知其他的对象。,2023/11/7,37,9.2 JavaBean的基本用法,9.2.1 JavaBean的属性9.2.2 访问Bean属性9.2.3 设置Bean属性,2023/11/7,38,一旦拥有了Bean,就可以使用jsp:ge
20、tProperty访问其属性,例如:或者在此标签中,name属性的取值li和中id属性的值一致,property属性的取值password是JavaBean的属性(实例变量)password。等价的Java代码是:或者,2023/11/7,39,9.2 JavaBean的基本用法,9.2.1 JavaBean的属性9.2.2 访问Bean属性9.2.3 设置Bean属性,2023/11/7,40,使用标签可以设置JavaBean属性的值。使用之前也需获得一个可操作的Bean实例。标签可以通过三种方式设置JavaBean属性的值。,2023/11/7,41,1.将Bean属性的值设置为一个表达式
21、的值或字符串或/表达式值的类型必须和Bean属性值的类型一致。如果用字符串的值设置Bean属性值,这个字符串会自动转换为Bean属性类型。,2023/11/7,42,2023/11/7,43,2.通过HTTP表单参数设置Bean属性值要求表单参数的名字与Bean属性的名字相同,JSP引擎会自动将字符串转换为Bean属性的类型。例如此标记不用具体指定哪个Bean属性和表单中哪个参数对应,系统会根据名字自动进行匹配。,2023/11/7,44,输入ID 输入密码,2023/11/7,45,ID是:密码是:,2023/11/7,46,package ch09;public class LoginIn
22、fo implements LoginInfoIF private String id;private String password;public String getId()try byte b=id.getBytes(ISO-8859-1);id=new String(b);return id;catch(Exception e)return id;public void setId(String id)this.id=id;public String getPassword()return password;public void setPassword(String password
23、)this.password=password;,2023/11/7,47,2023/11/7,48,2023/11/7,49,3.通过request的参数值设置Bean属性的值要求request参数名字必须与Bean属性的名字相同,JSP引擎会将request获取的字符串数据类型转换为JavaBean相应属性的类型。例如:,2023/11/7,50,输入ID 输入密码,2023/11/7,51,ID是:密码是:,2023/11/7,52,9.*在JSP中使用JavaBeans,在JSP上可以通过操作指令、来应用JavaBeans。用定义要应用的JavaBeans。用来存储属性值。用提取存储的
24、属性值。,2023/11/7,53,1.的作用是定义生成和使用Bean的环境。可以定义Bean的名称、类型、以及使用期限等内容。它的基本操作是首先使用id和作用域查找一个现有的对象,如果在指定的作用域中没有找到具有指定id的对象,那么它会试图使用其他属性创建一个新实例。格式如下:,2023/11/7,54,3.动作用于从一个JavaBeans中获取某个属性的值,无论原先这个属性是什么类型的,都将被转换为一个String类型的值。语法格式为:,2023/11/7,55,4.JavaBean的作用域JavaBeans组件不仅可以封装许多信息供JSP调用,而且还可以将一些数据处理的逻辑隐藏到Java
25、Beans的内部。除此之外,还可以设定JavaBeans的Scope属性,使得JavaBeans组件对于不同的任务具有不同的作用域。在前面已经提到过Scope属性具有4个可能的值分别是:pagerequestSessionapplication,2023/11/7,56,第9章 JSP与JavaBean编程,9.1 JavaBean概述9.2 JavaBean的基本用法9.3 Bean的作用域9.4 JavaBean的使用,2023/11/7,57,9.3 Bean的作用域,至此,jsp:useBean创建的对象,只绑定到_jspService方法(即由页面生成的Servlet的service
26、调用的局部变量),但这不是唯一行为。利用标签的scope属性,还可以存储在其它位置。例如:scope属性具有以下值:,2023/11/7,58,(1)page这是默认值,表示在当前请求持续的时间中,Bean对象被绑定到局部变量,还位于Pagecontext对象中。这样,通过预定义变量pageContext的getAttribute方法,我们可以访问此Servlet代码。实际上,总能够通过同一页面的jsp:getProperty和jsp:setProperty来访问具有page作用域的Bean。,2023/11/7,59,(2)application 这意味着Bean除了被绑定到局部变量外,还可
27、存储在共享的ServletContext中,通过预定义application变量或调用。getServletContext()方法可以访问ServletContext。在Web应用程序中所有Servlet(如果没有明确定义Web应用程序,就是同一服务器或Server引擎中的所有Servlet)都共享使用ServletContext。通过getAttribute()方法可以检索ServletContext中的值。这种共享行为具有两种结果。首先,它为多个Servlet和JSP页面提供了一种机制,可以访问同一对象。其次,它允许Servlet创建用于JSP页面的Bean,而不是访问以前创建的Bean。
28、这种方式允许Servlet通过创建Bean将它们存储在ServletContext中,然后将请求转发到几个可 能的JSP页面之一,以得到对应于请求数据的结果,从而处理复杂的用户请求。,2023/11/7,60,(3)session 该值意味着除了绑定到局部变量,Bean还存储在与当前请求相关的Http Session对象 中,可以使用getValue进行检索。如果page指令指明当前页面不加入会话,则在页面转换时试图使用scope=session就会发生错误。,2023/11/7,61,(4)request 该值表示在当前请求的过程中,Bean对象除了被绑定到局部变量外,它还位于Serv le
29、tRequest对象中,通过getAttribute()方法可以进行访问。该值只是scope=page 提供的每个请求的作用域的轻微变体(或者默认情况下没有指定任何scope)。,2023/11/7,62,【例9-7】application作用域实例,该例有一个JavaBean,即ApplicationtScopeBean.java和3分JSP页面,applicationscope1.jsp、applicationscope2.jsp 和applicationscope3.jsp。3个页面共享同一个ApplicationtScopeBean.java,即作用域都是application。,20
30、23/11/7,63,ApplicationtScopeBean.java代码如下:package ch09;public class ApplicationtScopeBean private String firstPage;private int accessCount=1;public String getFirstPage()return(firstPage);public void setFirstPage(String firstPage)this.firstPage=firstPage;public int getAccessCount()return(accessCount+
31、);,2023/11/7,64,applicationscope1.jsp代码如下:访问第1个页面 访问第1个页面,2023/11/7,65,applicationscope1.jsp(页面)applicationscope2.jsp applicationscope3.jsp,2023/11/7,66,第1个页面的访问.3个页面共访问了次。,2023/11/7,67,applicationscope2.jsp代码如下:访问第2个页面 访问第2个页面,2023/11/7,68,applicationscope2.jsp(页面)applicationscope1.jsp applications
32、cope3.jsp,2023/11/7,69,第2个页面的访问.3个页面共访问了次。,2023/11/7,70,applicationscope3.jsp代码如下:访问第3个页面 访问第3个页面,2023/11/7,71,applicationscope3.jsp(页面)applicationscope1.jsp applicationscope2.jsp,2023/11/7,72,第3个页面的访问.3个页面共访问了次。,2023/11/7,73,9.4 JavaBean的使用,9.4.1 使用JavaBean访问数据库9.4.2 JavaBean应用实例,2023/11/7,74,在实际开发
33、中,可以定义JavaBeans来封装对数据库的访问。【例9-11】示例数据库访问package ch09;import java.sql.*;public class DBConnectionManager/驱动程序 private String driverName=;/设置数据库连接URL private String url=jdbc:mysql:/localhost:3306/ExampleDB;private String user=root;/数据库登录用户名 private String password=;/数据库登录密码,2023/11/7,75,public void se
34、tDriverName(String newDriverName)driverName=newDriverName;public String getDriverName()return driverName;public void setUrl(String newUrl)url=newUrl;public String getUrl()return url;public void setUser(String newUser)user=newUser;public String getUser()return user;,2023/11/7,76,public void setPasswo
35、rd(String newPassword)password=newPassword;public String getPassword()return password;public Connection getConnection()try Class.forName(driverName);return DriverManager.getConnection(url,user,password);catch(Exception e)e.printStackTrace();return null;,2023/11/7,77,在页面调用此JavaBeans可以获取数据库连接。用户可以使用属性
36、的set方法改变需要连接数据库的驱动、URL、用户名和密码。在MVC模式中,交互系统的组成分解成模型、视图、控制三种部件。模型部件是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的界面表达和I/O操作。JavaBeans一般充当Model(模型)角色。,2023/11/7,78,视图部件把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。这往往由JSP充当。控制部件是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面与模型
37、间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。通常一个视图具有一个控制器,由一个Servlet实现。为了满足可扩展、可复用的需要,如何设计系统的控制器,可以参考J2EE设计模式。,2023/11/7,79,9.4 JavaBean的使用,9.4.1 使用JavaBean访问数据库9.4.2 JavaBean应用实例,2023/11/7,80,该程序实现一个在线书店的简单功能。客户在页面选择书,提交后,购物信息被保存在JavaBean中;客户也可以将图书删除。下面是购书的代码。代码,2023/11/7,81,总结与回顾!,2023/11/7,82,第9章 JSP与JavaBean编程,9.1 JavaBean概述9.2 JavaBean的基本用法9.2.1 JavaBean的属性9.2.2 访问Bean属性9.2.3 设置Bean属性9.3 Bean的作用域9.4 JavaBean的使用9.4.1 使用JavaBean访问数据库9.4.2 JavaBean应用实例,2023/11/7,83,请复习前9章!预习第10章!,