




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高等教育自学考试Java语言程序设计(一),海天培训学校,主讲教师:刘波liubocq,第十章网络与数据库编程基础,学习重难点及要求,重点:支持Java程序访问网上资源的类及其方法,网络编程应用。支持Java程序与数据库连接、数据表查询、数据记录修改和插入的类及其方法,数据库编程应用。难点:网络套接字、客户机端与服务器端实现通信的应用程序。支持Java实现数据库编程的类,程序实现数据修改和插入的方法,数据库编程应用。要求:一般掌握。考试分值约占5%,学习内容,10.1Java网络编程基础10.2缓冲式输入输出,Java语言的优势之一是Java程序能访问网络资源1.TCP/IP协议和IP地址为了进行网络通信,通信双方必须遵守通信协议。目前最广泛使用的是TCP/IP协议族TCP(TransportControlProtocol)是一种传输控制协议IP(InternetProtocol)是一种网际协议TCP/IP代表这两个协议的。,10.1.1IP地址和InetAddress类,TCP/IP分为四个层次:网络接口层,负责接收和发送物理帧;网络层,负责相邻节点之间的通信;传输层,负责起点到终点的通信;应用层,提供诸如文件传输、电子邮件等应用程序。事实上,TCP/IP协议族的分层还有多种分法。,10.1.1IP地址和InetAddress类,TCP/IP协议的工作原理(分组交换过程):TCP协议将任何网络信息传输当作信息流。机器上的一个长报文发送到机器,发送端需要将数据分片,然后把一片片数据分别打包发送(数据分组)。数据包有一个头(IP数据报的报头),指明该数据包发往何处(目标IP地址)、包中数据在接收序列中所处的位置。每个包都按照IP地址提供的目的地从一个台机器(路由器)传送到另一台机器(路由器),或从一个网络节点传送到另一个网络节点。即路由与寻址过程。在接收端,这些数据包都能够按照正确的顺序重新组装起来。,10.1.1IP地址和InetAddress类,TCP/IP协议族:Telnet:远程登录,允许一台计算机用户登录到另一台远程计算机上,使远程操作如同在本地计算机上操作一样。FTP(FileTransferprotocol):文件传输协议,允许用户将远程主机上的文件复制到自己的计算机上SMTP(simpleMailTransferProtocol):简单邮件传输协议,用于传输电子邮件NFS(NetworkfileServer),网络文件服务器,使多台计算机透明地访问彼此的目录HTTP是一种超文本传输协议,它是基于TCP/IP协议的,是浏览器和服务器之间应用层的通信协议。HTTP是一种通用、无状态、面向对象的协议。HTTP会话(事务)包括四个步骤:连接(Connection)、请求(Request)、应答(Response)和关闭(Close)。,10.1.1IP地址和InetAddress类,Java语言可编写低层的网络应用。例如,传输文件,建立邮件控制器,处理网络数据。Java语言支持的Internet协议有ftp、telnet、www等,支持网络通信的软件都在包中,例如:.ftp,.www等。,10.1.1IP地址和InetAddress类,IP地址用于指明因特网上的一台计算机在网络中的地址,用32位二进制代码表示一个网络地址。IP地址用点分十进制表示。地址分、五类,常用的是、三类:(.0.0.0-55),0,7位网络号,后24位为主机号。(-55),10,14位网络号,后16位为主机号C(-55),110,21位网络号,后8位为主机号D(-55),1110,28位多点广播组标号.E(-55),1111,保留试验使用。在因特网上,域名服务器(DomainNameServer,DNS)执行文字名称到二进制网络地址的映射。,10.1.1IP地址和InetAddress类,InetAddress类J包中有InetAddress类的定义,InetAddress类的对象用于IP地址和域名,该类提供以下方法:(1)getByName(Strings),获得一个InetAddress类的对象,该对象中含有主机的IP地址和域名,该对象用如下格式表示它包含的信息:,10.1.1IP地址和InetAddress类,I.*;ClassExample10_1Publicstaticvoidmain(Stringargs)Try/以下代码通过域名建立InetAddress对象:InetAddressaddr=InetAddress.getByname(“”);StringdomainName=addr.getHostName();/获得主机名StringIPName=addr.getHostAddress();/获得IP地址System.out.println(domainName);System.out.println(IPName);catch(UnknownHostExceptione)e.printStackTrace();,10.1.1IP地址和InetAddress类,统一资源定位符URL(UniformResourceLocator)是客户机访问Internet时用来标识资源的名字和地址。超文本链路由统一资源定位符URL维持。URL的格式是::/其中:Method是传输协议:HOSTNAME是文档和服务器所在的Internet主机名(域名系统中DNS中的点地址);PORT是服务端口号(可省略);PATH是路径名,FILE是文件名。例如:,10.1.2统一资源定位符URL,1.URL类J包有URL类,一个URL对象可以表示一个网络资源。程序利用URL对象能实现Internet寻址、网络资源的定位连接、在客户机与服务器之间直接访问等。URL类的构造方法是URL(Strings)其中,s指出网络中的一个资源。利用URL对象访问网上资源的方法是:先创建URL对象,如以下代码所示:tryURLmyURL=newURL(“:80/”);catch(MalformedURLExceptione)System.out.println(“有错的URL:”+url+e);因创建URL对象可能会产生MalformedURLException异常。所以,创建URL对象的代码应出现在trycatch语句块中,以便能捕捉网址错误异常。,10.1.2统一资源定位符URL,URLConnection类要接收和发关信息还要用URLConnection类,程序获得一个URLConnection对象,相当于完成对指定URL的一个HTTP连接。URLmu=newURL(“,10.1.2统一资源定位符URL,信息的发送和接收发送和接收信息要获得流对象,并由流对象创建输入或输出数据流对象。然后,就可以用流的方法访问网上资源。网上资源使用结束后,数据流也应及时关闭。用close()关闭建立的流。URLurl=newURL(urlName);/由网址创建URL对象URLConnectiontc=url.openConnectin();/获得URLConnection对象tc.connect();/设置网络连接InptStreamReaderin=newInputStreamReader(tc.getInputStream();BufferedReaderdis=newBufferedReader(in);/采用缓冲式输入while(Stringinline=dis.readLine()!=null)showArea.append(inline+”n”);dis.close();/网上资源使用结束后,数据流及时关闭,10.1.2统一资源定位符URL,网络应用模式主要有:主机/终端模式,集中计算,集中管理;客户机/服务器(Client/Server,/)模式,分布计算,分布管理;浏览器/服务器模式,利用Internet跨平台。(万维网)就是建立在客户机/服务器模式上,以HTML语言和HTTP协议为基础,能够提供各种Internet服务的信息浏览系统。网络信息放在主机的不同位置,服务器利用超文本链路链接各项信息。客户机(浏览器Brower)负责与服务器建立联系,向服务器发送请求,处理HTML超媒体,提供图形用户界面(),显示信息等。,10.1.3客户机/服务器模式,在C/S模式中,在Server端,要准备接受多个Client端计算机的通信。为此,除用IP地址标识Internet上的计算机之外,另还引入端口号,用端口号标识正在Server端后台服务的线程。端口号与IP地址的组合称为网络套接字(socket)。Java语言在实现C/S模式中,套接字分为两类:在Server端,ServerSocket类支持底层的网络通信;在Client端,Socket类支持网络的底层通信。Server机通过端口(总线I/O地址)提供面向Client机的服务;Server机在它的几个不同端口分别同时提供几种不同的服务。Client接入Server的某一端口,通过这个端口提请Server机为其服务。规定:端口号1023供系统专用。例如,HTTP协议在端口80,telnet协议在端口23。端口102465535供应用程序使用,10.1.3客户机/服务器模式,当Client程序和Server程序需要通信时,可以用Socket类建立套接字连接。套接字连接可想象为一个电话呼叫:最初是Client程序建立呼叫,Server程序监听;呼叫完成后,任何一方都可以随时讲话。双方实现通信有流式socket和数据报式socket两种可选方式。流式socket是有连接的通信,即TCP(TransmissionControlProtocol)。每次通信前建立连接,通信结束后断开连接。特点是可以保证传输的正确性、可靠性。数据报式socket是无连接的通信,即UDP(UserDatagramProtocol)。将欲传输的数据分成小包,直接上网发送。无需建立连接和拆除连接,速度快,但无可靠保证。流式socket在Client程序和Server程序间建立通信的通道。每个socket可以进行读和写两种操作。对于任一端,与对方的通信会话过程是:建立socket连接,获得输入/输出流,读数据/写数据,通信完成后关闭socket(拆除连接)。,10.1.3客户机/服务器模式,流式Socket的通信过程【客户端】:利用socket的构造方法,可以在客户端建立到服务器的套接字对象:Socket(Stringhost,intport),host是服务器的IP地址,port是端口号,这些是预先约定的。例如:trySocketmySocket=newSocket(“”,1860);catch(IOExceptione)然后,用getInputStream()方法获得输入流,用这个输入流读取服务器放入“线路”的信息;用getOutputStream()方法获得输出流,用这个输出流将信息写入“线路”。,10.1.3客户机/服务器模式,流式Socket的通信过程【服务端】利用ServerSocket的构造方法可以在服务器建立接受客户套接字的服务器套接字对象:ServerSocket(intport),指定端口号,创建一个ServerSocket对象。port与客户端口号相同。tryServerSocketserverSocket=newServerSocket(1860);catch(IOExceptione)服务器端程序在指定的端口监听,当收到Client程序发出的服务请求时,创建一个套接字对象与该端口对应的Client程序通信。确立了对象serverSocket后,就可能它使用accept()方法,得到Socket对象,接收Client程序来自套接字mySocket的信息。trySocketsc=serverSocket.accept();/ac是一个Socket对象catch(IOExceptione)要撤销服务,可以关闭Socket对象sc;sc.close();【阅读程序:P194-195例10.3和10.4】,10.1.3客户机/服务器模式,一个网络关系数据库应用系统是一个三层结构。客户机与服务器采用网络连接,客户机端应用程序按通信协议与服务器端的数据库程序通信;数据库服务程序通过SQL命令与数据库管理系统通信,10.2Java数据库编程基础,Java程序与数据库连接方法有两种。一种是使用JDBC-ODBC桥接器与数据库连接,一种是用纯Java的JDBC驱动程序实现与数据库连接。1使用JDBC-ODBC桥接器与数据库连接先由数据库应用程序把JDBCAPI调用转换成ODBCAPI调用,再向ODBC驱动管理器发出这个API调用,ODBC驱动管理器将这个调用转换成向数据库管理系统的ODBC驱动程序调用数据库管理系统又将这个调用转换成对操作系统的数据输入/输出调用最后,操作系统从数据库中得到实际数据逐级返回。,10.2.1Java程序与数据库连接,10.2.1Java程序与数据库连接,在设定了数据源的基础上,Java程序要访问数据库表,还要建立JDBC-ODBC桥接器,让程序与数据库连接。以后,程序就可向数据库发送SQL语句,处理数据库返回的结果。Java数据库连接JDBC(JavaDataBaseConnectivity)由一组用Java语言编写的类和接口组成,JDBC是Java程序与数据库连接API。它能做以下三件事情:与某个数据库建立连接向数据库发送SQL语句处理数据库返回的结果。调用类方法Class.forName(Strings)能建立JDBC-ODBC桥接器。tryClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);/加载驱动catch(Exceptione),10.2.1Java程序与数据库连接,连接过程:tryClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);/加载驱动Connectioncon=DriverManager.getConnection(url,username,password);catch(Exceptione)/处理异常catch(SQLExceotuibe)/处理异常,10.2.1Java程序与数据库连接,1用纯Java的JDBC驱动程序实现与数据库连接使用纯Java的JDBC驱动程序实现与数据库连接的过程如下:(1)加载驱动程序(有两种加载驱动程序的方式):一各是将驱动程序添加到java.lang.System的属性jdbc.drivers中。这是一个DriverManager类加载驱动程序类名的列表,表元用冒号分隔。另一种方式是从相关的网站下载驱动程序后,在程序中利用Class.forName()方法加载指定的驱动程序:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);,10.2.1Java程序与数据库连接,(2)创建指定数据库的URL数据库的URL对象类似网络的统一资源定位符,其格式是:jdbc:subProtocol:subName:/hostname:port:Databasename=XXX其中,subprotocol是某种驱动程序支持的数据库连接机制;subName是当前连接机制下的具体名称;hostName是主机名;port是相应的连接端口;DatabaseName是要连接的数据库名称。例如,以下代码可以是一个数据库的URL:jdbc:Microsoft:sqlserver:/localhost:1433;Databasename=ksinfo该数据库的URL说明利用miscrosoft提供的机制,用sqlserve驱动,通过1433端口访问本机上的ksInfo数据库。,10.2.1Java程序与数据库连接,(3)建立连接驱动程序管理器(DriverManager)的方法getConnection()建立连接。Connectioncon=DriverManager.getConnection(url,username,password);,10.2.1Java程序与数据库连接,1DriverManager类DriverManager类处理驱动程序的加载和建立新数据库连接。DriverManager是java.sql包中用于管理数据库驱动程序的类。通常,应用程序只使用类DriverManager的getConnection()静态方法,用来建立与数据库的连接,返回Connection对象:staticConnectiongetConnection(Stringurl,Stringusername,Stringpassword)指定数据的URL、用户名和密码创建数据库连接对象。以Oralce为例:Connectionconn=DriverManager.getConnection(“jdbc:oracle:thin:localhost:1521:DataBaseName”,“用户名”,“密码);,10.2.2几个重要的类和接口,2Connection类Connection类是java.sql包中用于处理与特定数据库连接的类。Connection对象是用来表示数据库连接的对象,Java程序对数据库的操作都在这种对象上进行。Connection类的主要方法有:StatementcreateStatement(),创建一个Statement对象。StatementcreateStatement(intresultSetType,intresultSetConcurrency),创建一个Statement对象,生成具有特定类型的结果集。voidcommit(),提交对数据库的改动并释放当前持有的数据库的锁。voidrollback(),回滚当前事务中的所有改动并释放当前连接持有的数据库的锁。StringgetCatalog(),获得连接对象的当前目录。booleanisClose(),判断连接是否已关闭。booleanisReadOnly(),判断连接是否为只读模式。voidsetReadOnly(),设置连接为只读模式。voidclose(),释放连接对象的数据库和JDBC资源。,10.2.2几个重要的类和接口,3Statement类Statement类是java.sql包中用于在指定的连接中处理SQL语句的类。数据库编程的要点是在程序中嵌入SQL命令。程序需要声明和创建连接数据库的Connection对象,并让该对象连接数据库。调用类DriverManager的静态方法getConnection()获得Connection对象,实现程序与数据库的连。然后,用Statement类声明SQL语句对象,并调用Connection对象的createStatement()方法,创建SQL语句对象。代码如下:Statementsql=null;trysql=con.createStatement();catch(SQLExceptione),10.2.2几个重要的类和接口,4ResultSet类有了SQL语句对象后,调用语句对象的方法executeQuery()执行SQL查询,并将查询结果存放在一个用ResultSet类声明的对象中,如:ResultSetrs=sql.executeQuery(“SELECT*FROMksInfo”);ResultSet对象实际上是一个由查询结果数据的表,是一个管式数据集,由统一形式的数据行组成,一行对应一条查询记录。在ResultSet对象中隐含着一个游标,一次只能获得游标当前所指的数据行,用next()方法可取下一个数据行。用数据行的字段(列)名称或位置索引(自1开始)调用形如getXXX()方法获得记录的字段植。,10.2.2几个重要的类和接口,4ResultSet类以下是ResultSet对象的部分方法:(1)bytegetByte(intcolumnIndex),返回指定字段的字节值。(2)DategetDate(intcolumnIndex),返回指定字段的日期值。(3)floatgetFloat(intcolumnIndex),返回指定字段的浮点值。(4)intgetInt(intcolumnIndex),返回指定字段的整数值。(5)StringgetString(intcolumnIndex),返回指定字段的字符串值。(6)doublegetDouble(StringcolumnName),返回指定字段的双精度值。(7)longgetLong(StringcolumnName),返回指定字段的long型整值。(8)booleannext(),返回是否还有下一字段。以上方法中的columnIndex是位置索引,用于指定字段,columnName是字段名。,10.2.2几个重要的类和接口,4ResultSet类用户需要在查询结果集上浏览,或前后移动、或显示结果集的指定记录,这称为可滚动结果集程序要获得一个可滚动结果集,只要在获得SQL的语句对象时,增加指定结果集的两个参数即可。Statementstmt=con.createStatement(type,concurrency);ResultSetrs=stmt.executeQuery(SQL语句)int型参数type决定可滚动集的滚动方式:ResultSet.TYPE_FORWORD_ONLY,结果集的游标只能向下滚动。ResultSet.TYPE_SCROLL_INSENSITIVE,游标可上下移动,当数据库变化时,当前结果集不变。ResultSet.TYPE_SCROLL_SENSITIVE,游标可上下移动,当数据库变化时,当前结果集同步改变int型参数concurrency决定数据库是否与可滚动集同步更新?ResultSet.CONCUR_READ_ONLY,不能用结果集更新数据库中的表。ResultSet.CONCUR_UPDATETABLE,能用结果集更新数据库中的表。,10.2.2几个重要的类和接口,4ResultSet类可滚动集上另外一些常用的方法如下:booleanprevious(),将游标向上移动,当移到结果集的第一行时,返回false。voidbeforeFirst(),将游标移结果集的第一行之前。voidafterLast(),将游标移到结果集的最后一行之后。voidfirst(),将游标移到第一行。voidlast(),将游标移到最后一行。booleanisAfterLast(),判游标是否在最后一行之后。booleanisBeforeFirst(),判游标是否在第一行之前。booleanisLast(),判游标是否在最后一行。booleanisFirst(),判游标是否在第一行。intgetRow(),获取当前所指的行(行号自1开始编号,结果集空,返回0)。booleanabsolute(introw),将游标移到row行。,10.2.2几个重要的类和接口,利用Connection对象的createStatement方法建立Statement对象,利用Statement对象的executeQuery()方法执行SQL查询语句进行查询,返回结果集,再形如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合成CDO定价模型中违约风险的深度剖析与实证研究
- 合作学习:开启初中语文基础复习课的新引擎
- 2025年教师招聘之《小学教师招聘》练习试题附完整答案详解(典优)
- 2025年教师招聘之《幼儿教师招聘》经典例题附参考答案详解【综合题】
- 2025内蒙古呼伦贝尔旅业旅游集团股份公司招聘5人笔试备考附答案详解
- 教师招聘之《小学教师招聘》考前冲刺测试卷讲解及答案详解(有一套)
- 演出经纪人之《演出经纪实务》每日一练含答案详解(模拟题)
- 教师招聘之《幼儿教师招聘》预测复习含答案详解(综合卷)
- 基于2025年生物技术的植物组织培养在植物育种中的突破报告
- 教师招聘之《幼儿教师招聘》能力测试B卷完整参考答案详解
- 辽宁省名校联盟2025年高三9月份联合考试 物理试卷(含答案解析)
- 新产程解读及产程管理
- 2025高职单招职业适应性测试题库与答案
- 2025至2030中国摩托车保险行业调研及市场前景预测评估报告
- Unit 1 How can I get there?(教学设计)-2024-2025学年人教PEP版英语六年级上册
- 越南货代基本知识培训课件
- 社会学概论教学课件
- 2025-2026学年粤人版(2024)初中地理八年级上册教学计划及进度表
- 2025年上半年系统架构设计师《综合知识》考试真题及答案
- 牧护关镇街道小学2025-2026学年第一学期工作计划
- 失眠抑郁焦虑课件
评论
0/150
提交评论