首页 Java-Web应用程序开发完整版课件全书电子教案教材课件(完整)

Java-Web应用程序开发完整版课件全书电子教案教材课件(完整)

举报
开通vip

Java-Web应用程序开发完整版课件全书电子教案教材课件(完整)异常第一章目标了解使用异常的原因理解Java的异常层次结构掌握try、throw和catch块检测、指出和处理异常掌握finally子句释放资源掌握声明新的异常类概述异常是指程序运行期间出现的问题JAVA语言提供了一套完善的异常处理机制。正确运用这套机制,有助于提高程序的健壮性本章首先概述异常处理的概念,然后举例说明基本的异常处理技术Java异常处理机制处理异常主要考虑两个问题如何表示异常情况如何控制处理异常的流程Java异常处理机制Java异常处理特点对异常情况进行分类,用Java类来表示异常,具有可扩展性和可重...

Java-Web应用程序开发完整版课件全书电子教案教材课件(完整)
异常第一章目标了解使用异常的原因理解Java的异常层次结构掌握try、throw和catch块检测、指出和处理异常掌握finally子句释放资源掌握声明新的异常类概述异常是指程序运行期间出现的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 JAVA语言提供了一套完善的异常处理机制。正确运用这套机制,有助于提高程序的健壮性本章首先概述异常处理的概念,然后举例说明基本的异常处理技术Java异常处理机制处理异常主要考虑两个问题如何表示异常情况如何控制处理异常的流程Java异常处理机制Java异常处理特点对异常情况进行分类,用Java类来表示异常,具有可扩展性和可重用性异常流程的代码和正常流程的代码分离,提高了程序可读性可捕获异常立即处理,也可抛给上一层去处理处理,具有灵活性Java异常处理机制异常类的层次结构Exception代表程序的异常(可以捕获并处理)Error代表运行时的系统异常(不应捕获)Java异常处理机制Exception分为两个分支:派生自RuntimeException的异常普通异常(非运行时异常)RuntimeException非RuntimeException一个错误的类型转换试图读取一个文件结尾后面的数据一个越界数组访问试图打开一个错误的URL一个空指针访问试图根据一个不代表任何存在类的字符串来找到一个Class类Java异常处理机制常见异常类异常类说明Exception异常层次结构的根类ArithmeticException算术错误情形,如以零作除数IllegalArgumentException方法接收到非法参数ArrayIndexOutOfBoundException数组大小小于或大于实际的数组大小NullPointerException尝试访问null对象成员ClassNotFoundException不能加载所需的类NumberFormatException数字转化格式异常,比如字符串到float型数字的转换无效IOException输入输出FileNotFoundException找不到文件EOFException文件结束Java异常处理机制异常处理流程—抛抓模型运用异常处理机制Java提供了try—catch—finally语句来支持异常处理try{//可能产生异常的语句}catch(异常类型e){//捕获指定类型的异常,catch可以有多个//处理异常}finally{//finally块是可选的//无论异常是否发生,都会执行的代码}try…catch语句try—catch语句:捕获异常try{//可能会出现异常情况的代码}catch(异常类型一e1){//处理出现的异常一类型的异常}catch(异常类型二e2){//处理出现的异常二类型的异常}……try…catch语句示例:整型变量相除,可能会产生除零异常//未捕捉异常inti,j,result;i=10;j=0;result=i/j;System.out.println("运算结果是:"+result);System.out.println("程序结束");//运行结果Exceptioninthread"main"java.lang.ArithmeticException:/byzeroatt01.Excepton1.main(Excepton1.java:8)//给程序加上异常捕获try{inti,j,result;i=10;j=0;result=i/j;System.out.println("运算结果是:"+result);}catch(ArithmeticExceptione){System.out.println("发生除零异常");}System.out.println("程序结束");//运行结果发生除零异常程序结束try…catch语句同一段代码中潜在多种异常的情况try{inti,j,result;Stringinput="12w";i=10;//input中保存用户所输入的数字,这里假设输入错误,输入了字母j=Integer.parseInt(input);result=i/j;System.out.println("运算结果是:"+result);}catch(ArithmeticExceptione1){System.out.println("发生除零异常");}catch(NumberFormatExceptione2){System.out.println("所输入的内容非数字");}System.out.println("程序结束");try…catch语句如果对多个异常不需要区分,只希望捕获它们不让程序终止,此时只需给出异常的基类即可try{…………}catch(Exceptione){//所有异常都会在此被捕获……}下面这种写法,编译器将报错try{……}catch(Exceptione1){……}catch(IOExceptione2){//该catch块永远不会被执行到……}finally语句finally:任何情况下都必须执行的代码finally块是可选的finally块通常放置释放资源的代码try{申请资源,如数据库连接,网络连接,打开文件等可能出现异常的代码}catch(异常类型一e1){处理异常一类型的异常}catch(异常类型二e2){处理异常二类型的异常}finally{释放资源}throws子句throws:声明可能出现的异常如果一个方法会出现异常,但没有能力处理它,可以在方法声明处用throws子句来声明抛出异常访问修饰符返回类型方法名(参数列表)throws异常1,异常2publicstaticvoidfun()throwsNumberFormatException{…}方法只负责完成功能,其中产生的异常,就谁调用该方法谁负责处理throws子句方法调用者了解到被调用方法可能抛出的异常,可采取两种措施:捕获并处理异常继续声明抛出异常publicvoidinvoke(){try{fun();}catch(NumberFormatExceptione){//处理异常}}publicvoidinvoke()throwsNumberFormatException{fun();//后续代码}throw语句throw:抛出异常当位于最上层的子系统不需要关心来自底层的异常的细节时,常见的做法是:异常转译publicvoiduploadImageFile(StringimagePath)throwsUploadException{try{//上传图像文件(包括操作文件,操作数据库)……}catch(IOExceptione1){//把原始异常信息记录到日志中去,便于排错……thrownewUploadException();//抛出新异常}catch(SQLExceptione2){//把原始异常信息记录到日志中去,便于排错……thrownewUploadException();//抛出新异常}}用户定义异常通过扩展Exception类来创建自定义的异常//自定义服务器超时异常publicclassServerTimedOutExceptionextendsException{privateStringreason;//异常原因privateintport;//服务器端口publicServerTimedOutException(Stringreason,intport){this.reason=reason;this.port=port;}//抛出自定义异常thrownewServerTimedOutException("不能连接服务器",80);publicStringgetReason(){returnreason;}publicintgetPort(){returnport;}}异常处理原则异常只能用于非正常的情况,不能用异常来控制程序的正常流程。例如:publicstaticvoidinitArray(int[]array){try{inti=0;while(true){array[i++]=1;}}catch(ArrayIndexOutOfBoundsExceptione){}}异常处理原则避免过于庞大的try块代码块try块代码越庞大,出现异常的地方就越多,分析异常原因就越困难有效的做法是分割可能出现异常的程序段落,分别放在单独的try块中,从而分别捕获异常异常处理原则在catch子句中指定具体的异常类型//用Exception捕获所有异常Publicvoidprint(){while(文件未打印完){try{打印一行}catch(Exceptione){……}}以上代码看起来省事,但实际上不是好的编程习惯//正确的做法是指定具体的异常类型publicvoidprint{while(文件未打印完){try{打印一行}catch(OutOfInkExceptione1){do{等待用户更换墨盒}while(用户没有更换墨盒)}catch(OutOfPaperExceptione2){do{等待用户添加打印纸}while(用户没有添加打印纸)}}异常处理原则不要在catch块中忽略被捕获的异常,例如:try{……}catch(Exceptione){}//对异常不采取任何操作try{……}catch(Exceptione){e.printStackTrace();}//仅仅打印异常信息catch块既然捕获了异常,就应提供异常处理措施处理异常重新抛出异常异常转译总结Java的异常处理涉及到5个关键字:try、catch、throw、throws和finally。异常处理流程由try、catch和finally3个代码块组成。其中try代码块包含了可能发生异常的程序代码;catch代码块紧跟在try代码块后面,用来捕获并处理异常;finally代码块用于释放被占用的相关资源。Exception类表示程序中出现的异常,只要通过处理,就可能使程序恢复运行的异常。对于方法中可能出现的受检查异常,要么用try……catch语句捕获并处理它,要么用throws子句声明抛出它,Java编译器会对此作检查。I/O流第二章目标了解I/O流概念理解I/O层次结构掌握使用字节流掌握使用字符流概述绝大部分的编程工作都涉及到数据的传递控制(输入/输出)JAVA中的I/O采用流的方式来实现,即将数据的传递看作为数据在目的和源之间流动I/O类库位于java.io包中,对各种常见的输入和输出流进行了抽象概述按照I/O处理数据的不同分为字节流字符流按照功能的不同分为数据流操作流按实现方式的不同分为底层流高层流字节流将字节作为最小传输单元由相应的数据流和操作流构成字节流类层次图如下(包括输入流和输出流)字节流数据流(底层流):InputStreamOutputStreamFileInputStreamFileOutStream操作流(高层流):BufferedInputStreamBufferedOutputStreamPrintStream数据流负责搭建字节数据传输的通道,负责字节数据的传输,是底层流,只提供了基本的字节数据访问方法InputStream和OutputStram是所有字节流类的基类,都是抽象类,不能实例化,通过定义了若干的方法来 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 派生类的行为,如I/O结束后必须关闭流等数据流InputStream所有字节输入流类的抽象基类,完成将字节从流中读出publicabstractintread()throwsIOExceptionpublicintread(byte[]b)throwsIOExceptionpublicvoidclose()throwsIOExceptionpublicintavailable()throwsIOException重要方法:数据流OutputStream所有字节输出流类的抽象基类,完成将字节写入流中publicabstractvoidwrite(intb)throwsIOExceptionpublicvoidwrite(byte[]b)throwsIOExceptionpublicvoidflush()throwsIOExceptionpublicvoidclose()throwsIOException重要方法:数据流FileInputStreamInputStream的派生类,完成从文件中读取字节数据重要方法:publicFileInputStream(Stringname)throwsFileNotFoundExceptionpublicFileInputStream(Filefile)throwsFileNotFoundException数据流使用FileInputStream基本步骤:建立文件输入流FileInputStreamin=newFileInputStream("c:\\demo.txt");读入字节数据(通常使用循环)while((i=in.read())!=-1){s=s+(char)i;}关闭in.close();在调用I/O流的方法时,注意捕捉异常如IOException数据流FileOutputStreamOutputStream的派生类,完成将字节数据写入文件中重要方法:publicFileOutputStream(Stringname)throwsFileNotFoundExceptionpublicFileOutputStream(Stringname,booleanappend)throwsFileNotFoundException数据流使用FileOutputStream基本步骤:1.建立文件输出流2.写字节数据3.关闭try{FileOutputStreamout=newFileOutputStream(file);Stringcontent="Wishgiveyoubetterfuture";char[]ch=content.toCharArray();//转换成字符数组for(inti=0;i<ch.length;i++){//循环将字符写入文件out.write(ch[i]);}out.close();//关闭文件流,否则文件中没内容}catch(Exceptione){System.out.println("写入文件时出错");}操作流高层流,不从I/O设备中读取或写入数据,仅从其它流中读取或写入数据,提供了普通流所没有提供的方法来简化编程,或提高I/O的效率操作流类利用了“装饰器” 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 模式,本身继承了InputStream类,加入了大量的方法,用来“装饰”其它数据流类,避免了大量创建新的功能类操作流BufferedInputStream一个带缓冲区的输入流重要方法:publicBufferedInputStream(InputStream)publicBufferedInputStream(InputStream,int)操作流BufferedOutputStream一个带缓冲区的输出流重要方法:publicBufferedOutputStream(OutputStream)publicBufferedOutputStream(OutputStream,int)操作流PrintStream提供了print和println方法,使输出不再被限制于单个字节。且带有缓冲区重要方法:publicPrintStream(OutputStreamout)publicPrintStream(OutputStreamout,booleanautoFlush)publicvoidflush()publicvoidprintln(类型x)操作流importjava.io.*;publicclassT24{publicstaticvoidmain(Stringargs[]){try{//创建带有缓冲的字节输入流BufferedInputStreambi=newBufferedInputStream(System.in);Strings="";inti;//利用循环读取键盘上的输入,并将其转换成字符判断是否不为回车while((char)(i=bi.read())!='\n'){s=s+(char)i;}//创建字节打印输出流,套接系统默认输出流PrintStreamout=newPrintStream(System.out);out.println(s);}catch(Exceptione){System.out.println("I/O错误");}}}字符流数据流(底层流):—ReaderWriterFileReaderFileWriter操作流(高层流):BufferedReaderBufferedWriterPrintWriter数据流Reader字符输入流的抽象基类重要方法publicintread()throwsIOExceptionpublicabstractintread(charcbuf[],intoff,intlen)throwsIOExceptionpublicabstractvoidclose()throwsIOException数据流Writer字符输出流的抽象基类重要方法publicvoidwrite(intc)throwsIOExceptionpublicabstractvoidwrite(charcbuf[],intoff,intlen)throwsIOExceptionpublicabstractvoidflush()throwsIOExceptionpublicabstractvoidclose()throwsIOException数据流FileReader完成基本的文件I/O访问。能以字符方式从文件中读数据重要方法publicFileReader(StringfileName)throwsFileNotFoundExceptionpublicFileReader(Filefile)throwsFileNotFoundException数据流FileWriter使用缺省字符编码构造文件流,向文件输出字符数据。如果文件不存在则创建该文件;如果该文件已存在,则缺省为覆盖该文件publicFileWriter(StringfileName)throwsIOExceptionpublicFileWriter(StringfileName,booleanappend)throwsIOExceptionpublicFileWriter(Filefile)throwsIOException数据流示例FileReaderin=newFileReader(file);//建立字符文件输入流,可显示中文while((i=in.read())!=-1){//循环依次读取文件中的所有字节s=s+(char)i;}in.close;FileWriterout=newFileWriter(file);//建立字符文件输出流,可输出中文char[]ch=content.toCharArray();System.out.println(ch);for(inti=0;i<ch.length;i++){//循环依次读取字符串中的字符写入文件out.write(ch[i]);}out.close();//关闭文件流,否则文件中没内容操作流高层流,采用装饰器设计模式创建提供了普通流所没有提供的方法来简化编程,或提高I/O的效率操作流BufferedReader从字符输入流中读取文本并将字符存入缓冲区以便能提供字符的高效读取。提供了非常重要的读取一行的方法重要方法publicBufferedReader(Readerin)publicBufferedReader(Readerin,intsize)publicStringreadLine()throwsIOException操作流BufferedWriter将数据写到缓冲区内,当缓冲区满时,把数据写到字符输出流publicBufferedWriter(Writer)publicBufferedWriter(Writer,int)操作流PrintWriter将格式化对象打印到一个文本输出流。publicPrintWriter(OutputStream)publicPrintWriter(Writer)publicPrintWriter(OutputStream,boolean)publicPrintWriter(Writer,boolean)publicvoidprintln(类型x)特殊的I/O--字节字符桥接流InputStreamReader采用适配器设计模式,把InputStream类型转换为Reader类型重要方法publicInputStreamReader(InputStreamin)publicInputStreamReader(InputStreamin,Stringenc)字节字符桥接流OutputStreamWriter采用适配器设计模式,把OutputStream类型转换为Writer类型重要方法publicOutputStreamWriter(OutputStreamin)publicOutputStreamWriter(OutputStream,String) 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 I/Ojava.lang.System类中提供了三个静态变量inInputStream类型outPrintStream类型errPrintStream类型标准I/O对System.in的适配转换InputStreamReaderreader=newInputStreamReader(System.in);BufferredReaderbr=newBufferedRader(reader);对System.out的适配转换PrintWriterpw=newPrintWriter(System.out,true);File类File类并不在I/O的继承结构中,用于表示主机文件系统中的文件名或路径名重要方法:publicFile(Strings)publicFile(Stringpath,Stringname)publicbooleandelete()publicbooleanexists()……File类示例publicclassIO4{publicstaticvoidmain(Stringargs[]){Filef=newFile("c:\\demo.txt");System.out.println(f.getAbsolutePath()+"\n");System.out.println("是否是目录"+f.isDirectory()+"\n");System.out.println("是否隐藏文件"+f.isHidden()+"\n");f.delete();}}总结JavaI/O类库对各种常见的数据源、数据目的地及处理过程进行了抽象。客户程序不必知道最终的数据源或数据目的地是一个磁盘上的文件还是一个内存中的数组,都可以按照统一的接口来处理程序的输入和输出。JavaI/O类库具有两个对称性,他们分别是:输入和输出字节流和字符流JavaI/O类库中的高层流在设计中主要采用了装饰器设计模式。File类用于管理文件系统JDBC(一)第三章目标了解JDBC的四类驱动理解JDBC的访问方式掌握基本数据库访问理解JDBC中异常概述大多数开发语言都提供了数据库的访问JDBC是由SUN公司提供的一组接口和类,被封装在java.sql包中,用于访问数据库数据库厂商所提供的第三方驱动程序和类包,可以访问特定数据库JDBC概述JDBC允许大型应用程序把数据写到JDBC接口上,通过接口与数据库交换信息。因而编程人员不必太关心与该应用程序一起使用的是那种数据库JDBC概述一个完整的JDBC应用由三部分组成驱动程序驱动程序管理器应用程序JDBC概述JDBC的四类驱动JDBC-ODBC桥加ODBC驱动程序本地APIJDBC网络纯JAVA驱动程序本地 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 纯JAVA驱动程序基本数据库访问通过JDBC的接口和类进行数据库访问基本数据库访问JDBC访问数据库的一般步骤引入必要的类加载注册JDBC驱动程序标示数据源分配一个Connection对象分配一个Statement对象使用该Statement对象执行查询从返回的ResultSet对象中检索数据关闭ResultSet对象关闭Statement对象关闭Connection对象基本数据库访问java.sql包接口(类)名说明Connection此接口表示与数据的连接Statement此接口执行SQL语句并将数据检索到ResultSet中PreparedStatement此接口执行预编译的SQL语句CallableStatement此接口执行已存储过程ResultSet此接口表示了查询出来的数据库数据结果集DriverManager此类加载和卸载各种驱动程序并建立与数据库的连接Date此类包含将sql日期格式转换成java日期格式的各种方法…………数据库驱动程序注册J2EE的商业开发一般会搭配MySql数据库//加载MySql驱动程序Class.forName("com.mysql.jdbc.Driver");数据库连接对象建立连接Connectioncon=DriverManager.getConnection(url,user,password);url为连接字符串,语法格式如下:jdbc:mysql://[host:port]/[database][?参数名1][=参数值1][&参数名2][=参数值2]...语句对象创建Statement对象Statementstmt=conn.createStatement();执行INSERT、UPDATE或者DELETE语句stmt.executeUpdate(query);//query为所要执行的sql语句执行SELECT语句ResultSetrs=stmt.executeQuery(query);//rs为记录集对象记录集对象ResultSet接口来操纵结果集中的记录ResultSet对象主要提供三大类方法1.当前记录指示器移动方法rs.next();//当前记录指针移动到下一条记录上2.当前记录字段值获取方法getXXXStringname=rs.getString("ename");//通过字段名访问Stringname=rs.getString(2);//通过字段位置访问3.更新当前字段值的方法updateXXXrs.update("ename","jack");//通过字段名更新rs.update(2,"jack");//通过字段位置访问记录集对象关闭数据库对象关闭ResultSet对象rs.close();关闭Statement对象stmt.close();关闭Connection对象con.close();记录集对象从数据库emp表中读取员工的编号(empno)和姓名(ename)Statementstmt=con.createStatement();Stringquery="SELECTempno,enameFROMEMP";stmt.execute(query);ResultSetrs=stmt.getResultSet();while(rs.next()){inti=rs.getInt(1);//得到当前记录的第一个字段(empno)的值Stringname=rs.getString(2);//得到第二个字段(ename)的值System.out.println(Integer.toString(i)+""+name);}特殊记录集返回结果记录集分为两大类仅向前、不可更新记录集Statementstmt=Con.createStatement();ResultSetrs=stmt.executeQuery("selectempno,enamefromemp");可滚动、可更新记录集Statementstmt=Con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSetrs=stmt.executeQuery("selectempno,enamefromemp");特殊记录集可滚动、可更新记录集记录集类型描述TYPE_FORWARD_ONLY不可滚动TYPE_SCROLL_INSENSITIVE可滚动,但看不到外部对数据库的修改TYPE_SCROLL_SENSITIVE可滚动,但能看到外部对数据库的修改记录集并发性描述CONCUR_READ_ONLY指定ResultSet对象不能修改数据库CONCUR_UPDATABLE指定ResultSet对象可以修改数据库指定以上两种模式时要求select语句不能带*号特殊记录集可滚动、可更新记录集可以使用的移动记录集指针的方法next()移动到记录集的下一条,没有返回false,否则返回trueprevious()移动到前一条记录first()移动到第一条记录last()移动到最后一条记录absolute(introwNumber)移动到rowNumber指定的行relative(intrelativeRowNumber)移动到相对于当前纪录位置的某一行可使用update()方法对指定字段进行更新使用updateRow()方法将修改发送到数据库特殊记录集特殊记录集对于可更新结果集使用的查询的限制:只能使用一个表必须选择这个表的主键和所有其他NOTNULL列不能使用ORDERBY子句必须只选择列值,不能包含计算列不能使用SELECT*。你必须分别指定列,或者使用表别名,如SELECTcustomers.*fromcustomers特殊处理处理数据库中的null值Stringname=rs.getString(2);name=name.toUpperCase();如果name获得的是null值,则第二句调用方法时出现异常。ResultSet的wasNull()方法可以检测上一个获取的字段值是否为空Stringname=rs.getString(2);if(rs.wasNull())name="";name=name.toUpperCase();处理异常当数据库或JDBC驱动程序中发生错误时,将抛出一个java.sql.SQLExceptionSQLException类是Exception类的子类必须使用try—catch对该异常进行处理SQLException类定义了2个方法,它们有助于查找造成异常的原因getErrorCode()返回错误编号getMessage()返回错误消息处理异常捕获并处理SQLExceptiontry{//输入错误的密码con=DriverManager.getConnection(url,“sa",“123123");……}catch(SQLExceptione){if(e.getErrorCode()==1017){System.out.println("登录用户名/密码错误");}else{System.out.println(e.getMessage());}}总结JDBCAPI的主要接口包括Connection、Statement和ResultSet接口注册一个驱动,建立起连接对象,在这个连接对象的基础上执行SQL语句,返回纪录集,然后利用getXXX方法获得数据。记录集包括仅向前、不可更新记录集和可滚动、可更新记录集ResultSet的wasNull方法可以检测数据库字段的空值。通过捕获SQLException来处理数据库异常总结JDBC(二)第四章目标了解预制语句的原理掌握预制语句的使用理解JDBC中事务的处理掌握JavaBean的创建概述封装数据库访问连接工厂类JavaBean类高级数据库访问预制语句元数据事务预置语句PreparedStatement接口继承自Statement编译一次可重复执行的语句接口在sql语句中通过使用占位符来代替常量字段值,setXXX方法来填充字段值,取代掉占位符,形成完整的可执行的sql语句预置语句创建预置语句对象,在sql语句中使用占位符StringSQL="insertintodept(deptno,dname)values(?,?)";PreparedStatementps=con.prepareStatement(SQL);预置语句使用setXXX()方法为参数赋值用executeUpdate()方法执行SQL语句ps.setInt(1,60);ps.setString(2,"客服部");ps.executeUpdate();预置语句示例:使用预置语句插入数据Stringsql="insertintoemp(empno,ename,hiredate)values(?,?,?)";PreparedStatementpstmt=con.prepareStatement(sql);pstmt.setInt(1,2234);pstmt.setString(2,"张三");pstmt.setDate(3,Date.valueOf("2004-3-3"));pstmt.executeUpdate();System.out.println("行已添加");元数据元数据是描述一个RDBMS提供何种功能和数据库中数据类型的数据(数据字典)JDBC提供了两个元数据接口:DatabaseMetaData数据库元数据ResultSetMetaData结果集元数据元数据DatabaseMetaData对象提供关于数据库的信息:数据库与用户、数据库标识符以及函数与存储过程数据库支持与不支持的功能数据库限制,如数据库中名称的最大长度架构、编目、表和列元数据ResultSetMetaData对象可以获得关于结果集对象的元数据信息:结果集中列的名称、类型、是NULL还是NOTNULL、精度等信息获取ResultSetMetaData对象:ResultSetrs=stmt.executeQuery(sql);ResultSetMetaDatarsmd=rs.getMetaData();元数据读取结果集元数据的方法方法名描述getColumnCount()返回结果集中的列数getColumnName(intn)返回n指定的位置上的列的名称getColumnType(intn)返回指定列的类型(用整数表示)getColumnTypeName(intn)返回指定列的类型名称(用字符串表示)isNullable(intn)如果列被定义为NOTNULL,那么返回0;否则返回1元数据查看emp表的字段名和字段类型Stringsql="select*fromemp";PreparedStatementpstmt=con.prepareStatement(sql);ResultSetrs=pstmt.executeQuery();ResultSetMetaDatarsmd=rs.getMetaData();intcount=rsmd.getColumnCount();for(inti=1;i<=count;i++){System.out.print(rsmd.getColumnName(i)+"("+rsmd.getColumnTypeName(i)+")\t");}事务事务的主要用途:把数据库从一个一致状态带到下一个一致状态事务具备的属性:原子性、一致性、隔离性、耐久性控制事务的主要语句:提交、回退事务JDBC通过Connection对象的setAutocommit(boolean)方法决定是否启用自动提交当自动提交模式被设置成false时,事务管理必须由代码来明确控制调用连接对象的commit()方法和rollback()方法来提交和回退事务事务利用事务完成两条记录的插入try{……con=DriverManager.getConnection(url,"scott","tiger");con.setAutoCommit(false);Stringsql="insertintoemp(empno,ename,hiredate)values(?,?,?)";pstmt=con.prepareStatement(sql);//插入第一条记录//插入第二条记录con.commit();……}catch(Exceptione){……con.rollback();……}封装数据访问在一个工程中可以定义出一个类专门用于完成数据库连接,这个类可以当作工厂类publicclassConnectionFactory{//静态变量,用于调用私有构造方法privatestaticConnectionFactoryref=newConnectionFactory();//私有构造方法,用于加载驱动程序privateConnectionFactory(){…}//获取连接对象publicstaticConnectiongetConnection()throwsSQLException{…}publicstaticvoidclose(ResultSetrs){…}//关闭结果集对象publicstaticvoidclose(Statementstmt){…}//关闭语句对象publicstaticvoidclose(Connectioncon){…}//关闭连接对象}连接工厂类获取一个连接对象Connectioncon=ConnectionFactory.getConnection();释放数据库资源ConnectionFactory.close(rs);ConnectionFactory.close(stmt);ConnectionFactory.close(con);JavaBean类JavaBean是基于可重用的软件组件模型开发出来的。被用于封装各种操作的细节JavaBean的要求:类中数据成员不能直接访问,必须通过access方法来访问accessor方法通常成对出现:setXXX(),getXXX()JavaBean中必须包含无参构造函数JavaBean类JavaBean对数据的映射映射单个实体:即映射表中的一条记录映射实体集:即映射数据库中的一张表或映射一张视图JavaBean类映射单个实体classCustomer{protectedStringcustomerID;protectedStringcustomerName;protectedStringcustomerType;protectedStringcomments;publicvoidsetCustomerID(StringvCustomerID){customerID=vCustomerID;}publicStringgetCustomerID(){returncustomerID;}……publicvoidupdateToDB(){//将当前对象中的数据更新至数据库}JavaBean类映射实体集ResultSet对象的维持需要占用数据库连接,不利于多用户并发访问数据库。可以将记录集的数据按行读取出来,保存在集合中,由JavaBean维持该集合该JavaBean中还提供实体集所对应数据库的数据处理功能JavaBean类映射实体集publicclassSQL06{//获得所有的员工数据publicArrayListgetAllEmp()throwsException{…}//根据特定字段获得纪录publicArrayListgetEmpBySomeField(StringfieldName,StringfieldValue)throwsException{…}//插入纪录publicvoidinsertToDB(intempno,Stringename)throwsException{…}//根据员工编号删除纪录publicvoiddeleteFromDB(intempno)throwsException{//根据员工编号更新纪录publicvoidupdateToDB(intempno,Stringename)throwsException{…}}总结预制语句:编译一次可重复运行。通过预制语句对数据库进行增加、删除、修改、查询,效率更高。预制语句的核心思想是通过使用占位符来代替sql语句的常量字段值,再利用该对象的setXXX()方法来填充字段值通过元数据可以反向获取了数据库中表的结构:字段数目、字段名称、字段类型等JDBC的事务处理主要包括提交和回退,JDBC的默认事务处理方式:自动事务Web运行模式:Tomcat第五章目标理解C/S和B/S开发模式了解B/S的多种开发方式理解JSP运行原理掌握部署JSP概述程序网络计算模式:C/S,B/SB/S模式技术介绍JSP运行原理Web服务器Tomcat样例程序部署JSP文件EclipseWeb插件程序网络计算模式C/S模式B/S模式程序网络计算模式B/S模式的优点客户端基于统一的WEB浏览器系统功能模块化灵活性和可扩展性简易性:操作直观、简单,培训方便,对使用人员的计算机操作水平要求不高实施成本低程序网络计算模式B/S模式技术介绍CGI(CommonGatewayInterface,通用网关接口)缺点:每次请求CGI程序都要重新启动程序,影响了响应得速度CGI程序不能被多个客户请求共享,影响资源的使用效率B/S模式技术介绍ASP(ActiveServerPages)脚本语言VBScript,JavaScript支持COM/DCOM构建模型微软的Web服务器IIS(因特网信息服务)ASP技术目前已发展到.Net版缺点:只能建立在微软平台上,使用成本较高微软平台本身的问题也造成这种B/S平台的效率不高B/S模式技术介绍B/S模式技术介绍改善的CGI:ServletServlet是CGI程序的Java实现版本它是遵循一定的编码标准的java类运行在一个Servlet容器中只启动一次服务器端进程,只加载一次JVM,处理所有到来的请求请求客户端响应Servlet运行在Web服务器的Servlet容器中B/S模式技术介绍B/S模式技术介绍Servlet实现步骤编写Java代码编译通过Servlet容器注册和执行Servlet的用途生成HTML页面对请求进行转发B/S模式技术介绍用Servlet生成HTML页面publicclassHelloWorldExampleextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{response.setContentType("text/html");PrintWriterout=response.getWriter();Stringmsg="HelloWorld!";out.println("<html>");out.println("<head>");out.println("<title>JSP2.0HelloWorld</title>");out.println("</head>");out.println("<bodybgcolor=\"white\">");out.println("<h1>"+msg+"</h1>");out.println("</body>");out.println(“</html>”);}}B/S模式技术介绍JSP(JavaServerPages)开发动态网站的重要而快速有效的技术具有良好的动态与静态页面分离的能力JSP的实质就是Servlet的文本化B/S模式技术介绍JSP相对于其他B/S模式下的动态网页技术有诸多的优势跨平台性一次编写,到处运行可重用性JSP运行原理JSP运行过程当一个JSP页面第一次被请求时,JSP引擎先将JSP文件转译成一个Java文件(Servlet),再将其编译成字节码,然后执行字节码文件响应用户请求。当这个JSP页面再次被请求时,将直接执行字节码文件来响应,从而加快了执行的速度。JSP运行原理JSP运行原理JSP是在HTML页面中嵌入脚本代码来组织的<%@pagelanguage="java"import="java.util.*"pageEncoding="ISO-8859-1"%><html><head><title>MyJSP'MyJsp.jsp'startingpage</title></head><body><H1><center><%="HelloWorld"%><br></center></H1></body></html>JSP运行原理Web服务器JakartaTomcat服务器是sun公司出品的优秀的开源Web服务器是sun公司官方推荐的Servlet和容器JSP是完全免费的软件Web服务器Tomcat软件下载网址:http://tomcat.apache.org/Web服务器Tomcat安装后的目录结构Web服务器Tomcat目录结构说明:bin:存放启动和关闭Tomcat脚本conf:存放不同的配置文件(server.xml和web.xml)doc:存放Tomcat文档lib/japser/common:存放Tomcat运行需要的库文件(JARS)logs:存放Tomcat执行时的LOG文件src:存放Tomcat的源代码webapps:Tomcat的主要Web发布目录(包括应用程序示例)work:存放jsp编译后产生的class文件Web服务器通过配置server.xml文件来设置Tomcat<Server><Service><Connector/><Engine><Host><Context></Context></Host></Engine></Service></Server>Web服务器Connector元素<Connectorport="8080"acceptCount="100"connectionTimeout="20000"/>Port:指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。默认是8080。Web服务器Context元素代表了单个WEB应用<Contextpath="/demo"docBase="e:/jsp"debug="0"reloadable="true"></Context>docBase应用程序的路径或者是WAR文件存放的路径path表示此Web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****Tomcat样例程序Tomcat软件中还包含了一个重要的内容,就是它的样例程序部署JSP文件在Tomcat中部署JSP在webapps目录中建立一个文件夹将编写好的JSP文件拷贝到该文件夹启动Tomcat服务EclipseWeb开发插件Eclipse是一个基于插件的Java集成开发环境(IDE)J2EE开发插件MyEclipse所具备的集成度高,配置简单等特点使其成为J2EE开发的首选MyEclipse下载网址http://www.myeclipseide.com/总结C/S(Client/Server)结构,充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销B/S(Browser
本文档为【Java-Web应用程序开发完整版课件全书电子教案教材课件(完整)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
知识改变命运的轨迹
Java开发工程师
格式:ppt
大小:3MB
软件:PowerPoint
页数:311
分类:管理学
上传时间:2022-09-07
浏览量:14