学生笔记(7--12).ppt_第1页
学生笔记(7--12).ppt_第2页
学生笔记(7--12).ppt_第3页
学生笔记(7--12).ppt_第4页
学生笔记(7--12).ppt_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

1、2020/8/7,1,第7章 小应用程序,2020/8/7,2,本章总体纲要,编写小应用程序 编写网页 应用程序和小应用程序,2020/8/7,3,编写小应用程序,什么是小应用程序? 类的层次结构 JApplet与Applet之间的不同点 小应用程序的生命周期 小应用程序的安全性,2020/8/7,4,什么是小应用程序?,小应用程序是可以嵌入到网页中运行的Java程序 通过appletviewer或各种浏览器运行 一般是 java.applet.Applet ( 或 javax.swing.JApplet)的子类 javax.swing.JApplet是java.applet.Applet的子

2、类 直接利用第二代图形用户界面Swing的组件及其特性,2020/8/7,5,类的层次结构,java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.Panel | +-java.applet.Applet | +-javax.swing.JApplet,2020/8/7,6,JApplet与Applet之间的不同点(P239),类JApplet是类 java.applet.Applet的子类 类JApplet 与Swing组件配套 默认的布局方式不同 JApplet BorderLayout(分成五

3、个区域). Applet FlowLayout(最基础的). 往容器JApplet中添加组件必须通过contentPane(是一个包含除菜单条外所有框架的可视组件的容器) 例如: 给小应用程序添加组件 使用Applet, 代码如下: applet.add(child); 使用 Japplet,代码如下: japplet.getContentPane().add(child);,2020/8/7,7,小应用程序的生命周期,所有的小应用程序具有如下的5个成员方法: public void init(): 用来初始化Java小应用程序。在小应用程序的生命周期中只会被调用一次,而且最先被执行。 pub

4、lic void start(): 当小应用程序在启动或重新启动时,会调用此方法。 public void paint(): 显示小应用程序的内容,2020/8/7,8,小应用程序的生命周期,public void stop(): 使小应用程序进入暂停的状态。当小应用程序被图标化或从当前网页转到其它网页时,会调用此方法。主要功能是为了释放所占用的资源。 public void destroy():完成对小应用程序的结束处理。在小应用程序的生命周期中只会被调用一次,而且是在(关闭网页之前)卸载小应用程序时调用。 注:这5个成员方法的执行过程也常常称为类Applet的生命周期。,2020/8/7,

5、9,小应用程序的生命周期,书上例题:第238页,第240页 或P330,331,2020/8/7,10,小应用程序的安全性 可以做什么?,在网页上画图 创建新的窗口,并画该窗口 播放声音 接收键盘或鼠标的输入 进行网络连接,2020/8/7,11,小应用程序的安全性 不可以做什么?,未经许可,在主机的硬盘上写数据 未经许可,在主机的硬盘上读取数据 未经许可,删除文件 未经许可,直接调用本机的API 读/写内存中未经许可的数据 通过网络连接到未经授权的主机,2020/8/7,12,本章总体纲要,编写小应用程序 编写网页 应用程序和小应用程序,2020/8/7,13,编 写 网 页,HTML文本文

6、件 HTML文本文件一般以开头,以结尾。 组成部分 头部:以开始,以结尾。 正文部分:以开始,以结尾。 小应用程序嵌入到网页 关键字:APPLET 以开始,以结尾。,2020/8/7,14,小应用程序HTML语句,关键字Code 和 codebase 关键字ALT 归档文件:命令JAR和关键字ARCHIVE 给小应用程序传递参数,2020/8/7,15,关键字Code 和 Codebase,CODE用来指定需要运行的小应用程序的文件名 注:所指定的文件名必须是编译后生成的文件名,即文件后缀是“.class”文件 CODEBASE用来指定路径,即 “.class”文件所在的路径 注:缺省情况下,

7、则默认“.class”文件和HTML文件在同一目录下。 语句 WIDTH:小应用程序的宽度 HEIGHT :小应用程序的高度,2020/8/7,16,关键字Code 和 Codebase,实例 1: 实例 2: ,2020/8/7,17,关键字ALT,HTML语句具有 ALT 属性 当HTML浏览器不支持小应用程序时,可以显示ALT中的文本信息 实例: ,2020/8/7,18,命令JAR和关键字ARCHIVE,将小应用程序所需要的所有图像、声音以及“.class”文件压缩成一个JAR归档文件 一般可以大大减少加载小应用程序的时间 每个文件 加载 需要独立的 HTTP 连接 许多文件 许多次连

8、接 许多文件组成一个文件 一次连接 数据被压缩 减少数据本身的传输时间 例题:P245(P349),2020/8/7,19,实例: (ARCHIVE),javac *.java jar -cvf all.jar *.class, An applet Example ,命令,AppletExample.html,2020/8/7,20,给小应用程序传递参数,给小应用程序传递参数,在HTML文件中 介于 和 之间 给小应用程序传递参数,在程序代码中 public String getParameter(String name) 类java.applet.Applet的成员方法,书上例题:P248(

9、P352),2020/8/7,21,实例: J_Applet.java,import java.awt.*; import javax.swing.*; public class J_Applet extends JApplet public void paint(Graphics g) String s= getParameter(TestPara); g.drawString(Value of TestPara is + s + ., 10, 50); / End of method: paint / End of class: J_Applet, An applet Example ,V

10、alue of TestPara is TestValue.,J_Applet.java,AppletExample.html,程序输出,2020/8/7,22,本章总体纲要,编写小应用程序 编写网页 应用程序和小应用程序,2020/8/7,23,应用程序与小应用程序,可以编写一个程序,它既是应用程序,又是小应用程序。 单个“.class”文件既可以按应用程序执行,又可以按小应用程序执行 例:P250 P252(P354),2020/8/7,24,本章小结,小应用程序 编写网页 应用程序和小应用程序,2020/8/7,25,第8章 多线程程序设计(新书:第11章),2020/8/7,26,为什

11、么需要多线程编程?,一台计算机可以同时执行多个程序,如一边播放音乐,一边进行编辑文字。 一个java程序也可以同时包含多个线程。 合理的进行多线程编程,可以更充分的利用计算机资源,提高程序执行效率。 但进行多线程编程时要慎重,因为理解多线程执行过程的并发性是有一定难度的。,2020/8/7,27,本章总体纲要,编写线程程序 线程的生命周期 多线程的同步处理,2020/8/7,28,构造线程类的方式,两种 通过继承类Thread构造线程类 通过继承接口Runnable构造线程类,2020/8/7,29,通过继承类Thread构造线程类,类声明形式 public class A extends T

12、hread /. 线程程序执行代码 public void run( ) 启动线程 public void start( ) 例:P257(P386),2020/8/7,30,通过继承接口Runnable构造线程类,类声明形式 public class A extends B implements Runnable public void run( ) / . ,2020/8/7,31,构造和启动线程的方法 A a = new A( ); Thread t = new Thread(a); t.start( ); 例子P261(P389),A为实现接口Runnable的类,通过继承接口Runn

13、able构造线程类,2020/8/7,32,本章总体纲要,编写线程程序 线程的生命周期 多线程的同步处理,2020/8/7,33,线程的生命周期(P262或P397),2020/8/7,34,给线程设置优先级: public final void setPriority(int newPriority) 获取优先级: public final int getPriority() 进入睡眠状态: public static void sleep(long millis) 注意sleep是static的,是让当前线程进入睡眠状态,线程的生命周期(P262或P397),2020/8/7,35,本章总

14、体纲要,编写线程程序 线程的生命周期 多线程的同步处理,2020/8/7,36,多线程的同步处理,使多个线程协调地并发处理 同步方法:synchronized 同步语句:P271synchrionized (引用类型的表达式) /程序块 例:P269、P273(P400、P402) 成员方法:wait/notify/notifyAll 死锁问题,2020/8/7,37,死锁问题,死锁问题:资源实际上并不短缺,但由于程序设计不合理而造成程序中所有的线程都陷入等待态或阻塞态。 死锁问题是JAVA虚拟机无法自动处理的,而只能由程序员自己去分析并设计合理的程序,人为的避开这些问题。,2020/8/7,

15、38,本章小结,编写线程程序 线程的生命周期 多线程的同步处理,2020/8/7,39,第9章 编程规范(新书:第10章),2020/8/7,40,第9章 编程规范,在软件的生命周期中,大约80%的时间是用在软件维护上。,2020/8/7,41,本章总体纲要,程序编写规范 程序调试 文档注释,2020/8/7,42,程序编写规范,目标是为了尽量使程序代码的风格保持一致,增强程序的可读性,缩短程序的编写时间和维护时间。 内容 命名规范 排版规范 语句规范 文件组织规范,2020/8/7,43,命名规范内容,包 文件 类/接口 方法 变量 常量,2020/8/7,44,包的命名规范,包的名称一般全

16、部采用小写,单词之间用“.”分割开。 包名的前缀一般是域名单词序列的逆序 实例 com.sun.eng com.apple.quicktime edu.cmu.cs.bovik.cheese,2020/8/7,45,文件的命名规范,Java源程序文件的命名规范 必须与该文件中public类的类名同名 后缀必须是 .java,2020/8/7,46,类/接口的命名规范,类名一般是名词/名词词组,类名应当尽量简单,其含义应当能够尽量准确地刻画该类或接口的含义。 每个单词的首字母大写,其它字母小写 一般采用全称尽量少用缩写词 在类名前加“J_”表示这里构造的是Java类或接口 实例 J_Clock

17、J_Circle Time ImageSprite (图版精灵),2020/8/7,47,方法的命名规范,方法名一般是动词/动词性词组 首字母小写,中间单词的首字母大写,其它字母小写。 实例: run( ); getBackground( ); getTime( ); 常在方法名前面加前缀“mb_”表示成员方法 mb_update( );,2020/8/7,48,变量的命名规范,变量名一般是名词或名词性词组 首字母小写,中间单词的首字母大写,其它字母小写 变量名的首字母尽量不要用字符: _ 或 $ 变量名应当简短、有含义、且便于记忆 实例: int i; char c; double widt

18、hBox; 类成员域的变量常带前缀“m_” private int m_button;,2020/8/7,49,变量的命名规范,变量名常常由表示其所扮演的角色与数据类型组成 实例: Point startingPoint, centerPoint; Name loginName;,2020/8/7,50,常量的命名规范,常量名一般全大写,单词之间用下划线分隔 (“_”) 实例: static final int MIN_WIDTH = 4; static final int MAX_WIDTH = 999;,2020/8/7,51,排 版 规 范,特殊字符 行数/每行的字符数 缩排方式(Ind

19、entation) 空白符/行,2020/8/7,52,不要含有特殊字符 文件本身长度一般不要超过2000行 文件一般至少含有一个类,其中有且仅有一个public类 每行一般不要超过80个字符,超过80个字符时,要考虑分行 P289(P364) 一般推荐采用4个空格的缩排方式 空白行用来划分程序的层次结构 P289(P365),排 版 规 范,2020/8/7,53,语 句,编写语句的关键-保证代码的简单性 每行最多只有一条语句 少用复合语句 P290(P366) 适当增加括号“()” P291(P367) 增加必要的注释 程序代码优化:去掉不必要的代码以及错误的注释,简化某些语句等等,202

20、0/8/7,54,文件组织,源程序文件一般采用如下的组织顺序: 头部注释 包语句和包导入语句 类和接口的定义,2020/8/7,55,本章总体纲要,程序编写规范 程序调试 文档注释,2020/8/7,56,assert语句,第一种格式 assert 布尔表达式; 例题:P294(P380) 第二种格式 assert 布尔表达式 : 字符串; 例题:P295(P382) 注意事项 为了使assert语句起作用,必须在编译选项中加入“-source 1.4”,在执行的时候,加上运行选项“-ea”,2020/8/7,57,本章总体纲要,编程规范 程序调试 文档注释,2020/8/7,58,文档注释,

21、文档注释:介于 /* 和 */ 之间的内容。它可以是单行,也可以是多行。 实例 /* Sorts integer array using MySort algorithm */ 文档注释是与Java语言的工具Javadoc相关联的。工具Javadoc可把文档注释自动生成HTML在线帮助文件 文档注释可以包含:HTML各种标记、文档标签,2020/8/7,59,文档注释的一般格式,实例: /* * This is the description part of a doc comment * * tag Comment for the tag */,2020/8/7,60,常用的 文档标签,au

22、thor param return see,throws deprecated link since version,2020/8/7,61,运行 javadoc,在命令行下执行 javadoc options packages sources options : 选项列表 packages : 包列表 sources : 源文件列表 实例:P306 javadoc -d . -author Time3.java,2020/8/7,62,本章小结,编程规范 程序调试 文档注释,2020/8/7,63,第10章 网络程序设计,2020/8/7,64,第10章 网络程序设计,网络资源定位器 URL

23、:指向网络上的各种资源 最常用的网络通信协议 TCP:传输控制协议 UDP:用户数据报协议,2020/8/7,65,本章总体纲要,URL 基于TCP的网络程序设计 基于UDP的网络程序设计,2020/8/7,66,Internet地址,在Internet上的计算机通过IP (Internet Protocol)地址标识,一般由四个整数组成 实例: 00 域名: 类 .InetAddress:可用该类的实例对象来记录网络地址,并获取相关信息,2020/8/7,67,创建类InetAddress的实例对象,类 InetAddress 的实例对象可以通过下列方法构造 publ

24、ic static InetAddress getByAddress(byte addr) :通过网络地址构造 public static InetAddress getByName(String host) :通过域名构造 实例:P309,2020/8/7,68,URL,URL 是网络资源定位器(Uniform Resource Locator), 指向网页(World Wide Web) 上的一个资源 这里的资源可以是文件/目录,也可以是一些复杂的对象,如数据库或搜索引擎(search engine),2020/8/7,69,5个组成部分 协议:获取网络资源的网络传输协议 主机:网络资源所

25、在的主机 端口号:与主机通信的端口号 文件:指广义的文件,包括路径目录 引用:指向文件内部的某一节的指针 排列格式 协议:/主机:端口号/文件#引用 Protocol:/Host:Port/File#Reference,URL的组成部分,2020/8/7,70,说明,大多数URL可以分成五个部分: Protocol Host Port File Reference 但并不都是必需的,2020/8/7,71,URL的实例,:8080/demoweb/urlprimer.html#INSTALL http:/localhost:8080/index.h

26、tml#bottom 43/java/ mailto:,2020/8/7,72,网络资源定位器(URL)对应于Java的类 .URL 类 .URL 具有五个成员方法,可以用来获取URL的五个部分: public String getProtocol() public String getHost() public int getPort() public String getFile() public String getRef() 例子:P311,类: .URL,2020/8/7,73,从URL获取网络资源,通过类.URL的成员方法 public fina

27、l InputStream openStream( ) throws IOException 读取网络资源数据的步骤 P312 实例:P313,2020/8/7,74,本章总体纲要,URL 基于TCP的网络程序设计 基于UDP的网络程序设计,2020/8/7,75,传输控制协议TCP,传输控制协议TCP (Transfer Control Protocol) 是一种基于连接的协议,可以在计算机之间提供可靠的数据传输 基于连接的协议(类似于电话连接) 服务器端与客户端通过TCP协议进行通讯 套接字(Socket):是指连接通道的两端,2020/8/7,76,通过TCP进行网络数据通信的程序模型,

28、服务器端 ServerSocket(port#) ServerSocket.accept() OutputStream InputStream Socket.close(),客户端 Socket(host, port#) OutputStream InputStream Socket.close(),2020/8/7,77,类 .Socket,类.Socket允许如下的四种基本操作: 连接到远程的机器 发送数据 接收数据 关闭连接,2020/8/7,78,创建类 Socket 的实例对象,构造方法 Socket() Socket(InetAddress address, int port) S

29、ocket(InetAddress address, int port, InetAddress localAddr, int localPort) Socket(String host, int port) Socket(String host, int port, InetAddress localAddr, int localPort) 实例: Socket javaSite = new Socket(, 80);,2020/8/7,79,类.Socket中的成员方法,getInputStream() 返回该socket所对应的输入流 getOutputStream() 返回该socke

30、t所对应的输出流 实例:P315(P441),2020/8/7,80,本章总体纲要,URL 基于TCP的网络程序设计 基于UDP的网络程序设计,2020/8/7,81,基于UDP的网络程序设计,UDP是一种简单的不可靠的无连接的网络数据传输协议 类似于日常生活中的“邮局”,2020/8/7,82,DatagramSocket(相当于邮局):表示发送或接收数据包的Socket 类.DatagramPacket:对传输的数据进行封装。数据包就对应于类.DatagramPacket的实例对象,基于UDP的网络程序设计,2020/8/7,83,.DatagramPacket,构造方法 public D

31、atagramPacket(byte buf, int offset, int length, InetAddress address, int port) 成员方法 public InetAddress getAddress( ) public int getPort( ) public void send(DatagramPacket p) throws IOException public void receive(DatagramPacket p) throws IOException 实例:P323(P455),2020/8/7,84,本章小结,URL 基于TCP的网络程序设计 基于

32、UDP的网络程序设计,2020/8/7,85,第12章 数据库程序设计,2020/8/7,86,本章总体纲要,基本原理 开发环境的建立 数据库程序设计 JDBC的API简介 性能优化,2020/8/7,87,第12章 数据库程序设计,JDBC(Java Database Connection, Java数据库连接):Java语言通过JDBC统一地处理各种类型的数据库。 JNDI(Java Naming and Directory Interface ,Java 命名和目录接口):获取数据源 API(Application Programming Interface,应用编程接口):提供一套标准

33、的访问数据库的程序设计接口,2020/8/7,88,基本原理,基于JDBC的数据库程序设计方法通常由三个步骤组成 连接数据库 执行SQL语句和处理查询结果 关闭连接,2020/8/7,89,JDBC驱动程序是实现对底层数据库的操作。 JDBC驱动程序负责将这些程序调用转化成为符合底层数据库交互协议的信息,并将这些信息发送给相应的数据库管理系统。,JDBC驱动程序类型,2020/8/7,90,根据JDBC驱动程序的实现机制,将JDBC分为4类: 第一类JDBC驱动程序 JDBC-ODBC桥 第二类JDBC驱动程序 本地化方法实现JDBC的API 第三类JDBC驱动程序 通过中间件实现JDBC的A

34、PI 第四类JDBC驱动程序 直接采用Java语言实现与特定数据库交互的协议,直接访问数据库,JDBC驱动程序类型,2020/8/7,91,JDBC驱动程序类型,第一类JDBC驱动程序(JDBC-ODBC桥) 通过JAVA本地化方法将JDBC的API映射为ODBC的API,然后再通过ODBC来访问数据库 图12.2 P352 (图1.2 P540) 缺点:受到ODBC一些局限性的限制,2020/8/7,92,JDBC驱动程序类型,第二类JDBC驱动程序(本地化方法实现JDBC的API) JDBC驱动程序直接通过本地化方法与数据库交互 图12.3 P352(图1. P540) 缺点:其兼容性较差

35、,2020/8/7,93,JDBC驱动程序类型,第三类JDBC驱动程序 通过中间件实现JDBC的API,即访问数据库时要借助中间件 图12.4 P353 (图1. P540) 缺点:执行效率往往较低,2020/8/7,94,JDBC驱动程序类型,第四类JDBC驱动程序 直接采用Java语言实现与特定数据库交互的协议,直接访问数据库 图12.5 P353 (图1. P54) 优点:执行效率最高 缺点:通用性差,2020/8/7,95,JNDI原理(第一版)P600,JNDI(Java Naming and Directory Interface ,Java 命名和目录接口) 管理数据源 数据源:

36、指向指定的数据库。数据源中记录了指定数据库的各种属性(数据库名称、用户名和密码等) 图12.6 P353 “命名/目录”服务器 建立新的数据源需要在“命名/目录”服务器中绑定一个名称 “命名/目录”服务器对数据源的管理是与目录结构相对应的 图12.7 P354,2020/8/7,96,本章总体纲要,基本原理 开发环境的建立 数据库程序设计 JDBC的API简介 性能优化,2020/8/7,97,开发环境的建立(第一版),安装数据库和建立测试数据 选择、获取和安装JDBC驱动程序 不同的JDBC驱动程序可能会有不同的安装方法 SUN公司在其网站上有一份各种JDBC驱动程序的列表 P357 图12.13 P357 安装与设置JNDI JNDI驱动程序可以在SUN公司网站上找到,2020/8/7,98,本章总体纲要,基本原理 开发环境的建立 数据库程序设计 JDB

温馨提示

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

评论

0/150

提交评论