avaWeb应用开发ppt课件(完整版)_第1页
avaWeb应用开发ppt课件(完整版)_第2页
avaWeb应用开发ppt课件(完整版)_第3页
avaWeb应用开发ppt课件(完整版)_第4页
avaWeb应用开发ppt课件(完整版)_第5页
已阅读5页,还剩187页未读 继续免费阅读

下载本文档

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

文档简介

1、Java Web应用开发第一章 WEB应用开发概述 目标了解WEB应用体系结构 掌握JAVA WEB 开发环境安装与配置 1.1 B/S结构编程技术1ASP技术 ASP技术是微软公司早期推出的B/S编程技术 2ASP.NET技术 ASP.NET是微软最新的B/S编程技术,ASP.NET可以用三种语言来编写:VB.NET、C#.NET、VJ#.NET。3JSP技术 JSP技术是SUN公司推出的B/S编程技术 .本书主要介绍JSP及相关技术 4PHP技术 PHP是免费的技术,与其配套的数据库MySQL及操作系统Linux也都是免费的 .1.2 WEB应用体系结构1静态网页 静态网页文件中没有程序代

2、码,只有HTML标记,一般以后缀.html或htm保存,开发工具可以是任何纯文本编程器(如记事本) ,下图是静态网页工作原理示意图1.2 WEB应用体系结构2动态网页 所谓动态网页,就是服务器端可以根据客户端的不同请求动态产生网页内容 ,支持客户端和服务器端的交互功能 ,下图是动态网页的体系结构。3三层/N层WEB应用结构 在构建企业级应用时,通常需要大量的代码,这些代码一般可以在逻辑上(在同一机器)或物理上(在不同机器)划分为不同层次,下图是三层B/S结构。在三层结构中,每二层之间都可以添加服务层从而构建N层结构。 1.2 WEB应用体系结构1.3 JAVA WEB 开发环境安装与配置 Ja

3、va Web应用开发需要运行环境和开发工具,运行环境包括JRE(Java Runtime Environment)和Servlet容器(WEB应用服务器) 。 Java Web开发工具很多,但在企业中用得较多的主要有Eclipse和NetBean等免费工具 1.下载并安装JDK建议到/technetwork/java/javase/downloads/index.html下载Java SE Development Kit (JDK) 7.0或其他版本 2.下载并安装TOMCAT 不同版本的Tomcat可以到其官方网站下载,你可以下载Tomcat6.0或Toncat7.0 3. 下载MyEcli

4、pse在MyEclipse官方网站/,你可下载MyEclipse 各种版本的安装包(目前最新的版本是MyEclipse9.0) Java Web应用开发第二章 Java Web编程基础 目标掌握HTML的基本元素掌握HTML的table元素掌握HTML的form元素理解JavaScript的基本原理。掌握JavaScript的基本语法。理解JavaScript事件机制。掌握CSS基本原理掌握CSS在布局中的应用 基本概念HTTP-HyperText Transfer Protocol:超文本传输协议HTML-HyperText Markup Language:超文本标记语言FTP-File T

5、ransfer Protocol:文件传输协议URL-Uniform Resource Locators:统一资源定位器2.1 HTML基础源文件:HelloWorld.html 测试 你好,这是我的web测试!第一个HTML程序2.1 HTML基础SampleHTML基本框架2.1 HTML基础Head中常用元素:用于设置一些头信息用于定义样式用于定义脚本2.1 HTML基础:各级标题:字体的颜色、大小:黑体:斜体:下划线:斜向上表示:斜向下表示:无序号列表:有序号列表:定义段落:换行:分区显示文本格式化2.1 HTML基础链接文字或者图片显示图片与超链接标记HTML表格 :定义表格:定义行

6、:定义列:定义表头Table标记常用属性:width:width属性用于定义表格的宽度height:height属性用于定义表格的高度border:border属性用于定义表格的边框的宽度,默认为0,也就是没有边框;bgcolor:定义表格的背景色。2.1 HTML基础2.2表单(FORM) 文本框 密码框 多选框 单选框 隐藏项 文本域 列表项 列表框文件上传框HTML表单标记2.3 JavaScript JavaScript 是一种脚本语言,可以嵌入到HTML中,主要用于网页动态效果和HTML客户端表单验证客户端的JavaScript 必须要有浏览器的支持通过在网页中加入标记引入外部的以.

7、js作为扩展名JavaScript文件一个页面可以有多个 ,不同部分的方法和变量,可以共享。 document.write(“第一个 JavaScript 页面);在网页中加入JavaScript2.3JavaScript 例2-8:在HTML中嵌入JavaScript源文件:javascriptTest_1.html 在HTML中嵌入JavaScript document.write(这是javascript输出的内容!);1注释 在JavaScript中采用和Java中类似的注释方式:单行注释用“/”,多行注释用“/*”和“*/”括起来: /单行注释 /* 多行注释和Java中类似 */2

8、.3 .1 JavaScript基本语法 2.变量定义:(1)用var来定义简单变量例如:var age;age=100+10;/先定义后使用username=Alex Wen;/直接使用虽然JavaScript可以不需定义即可直接使用变量,但不建议这么做2.3 .1 JavaScript基本语法(2)数组定义 var 数组名= new Array(数组长度) 例如:var arr = new Array(3);数组元素可以通过下标访问例如: arr0=20;通过arr.length可以取得数组的长度2.3 .1 JavaScript基本语法3.运算符 算术运算: +、-、*、/ 关系运算符:

9、 、=、=、= 逻辑运算:&(与) |(或) !(非) 字符串运算符: 连接运算:+ 条件表达式:条件?A:B2.3 .1 JavaScript基本语法4.流程控制语句(if) if(条件表达式) statement; else if(条件表达式) statement; else statement; 2.3 .1 JavaScript基本语法5.循环语句 (1)for语句的基本格式如下: for (initialization; test; increment) statements (2)while循环的基本格式如下: while (expression) statements 2.3 .

10、1 JavaScript基本语法(3) dowhile循环的基本格式如下: do statements while (expression) ; (4)遍历数组或者对象的属性 for (variable in object | array) statements 2.3 .1 JavaScript基本语法例2-9: 使用 for . in 循环遍历数组源文件:scriptTest_2.htm for.in循环 下面是script输出结果: var a,i; / 初始化数组 a = new Array(电子系,计算机系,材料工程系); / 迭代数组 for (i in a) document.w

11、rite(ai+); 2.3 .1 JavaScript基本语法6.函数 函数的定义语法格式如下: function (参数列表) 函数体; return 表达式; 例如: function cal(a,b) return a+b: 2.3 .1 JavaScript基本语法2.3.2 JavaScript常用内置对象1window对象: window对象表示的是一个和浏览器相关的最高级对象 .Window对象最常用的地方在于从一个窗口中新开一个窗口,它的基本语法如下:NewWindow=window.open(url,windowName,windowPros);其中:newWindow为表

12、示这个新开窗口对象的变量名称;url是这个新开窗口所引用的url; windowPros为新开窗口的属性,可以取下面各值:Toolbar:用于指明新开窗口是否需要标准工具栏;status:用于指明新开窗口是否需要状态条;menubar用于指明新开窗口是否需要菜单栏;scrollbar:用于指明当新开窗口中的文档的内容超出窗口大小的时候是否需要滚动条;resizable:是否允许改变新开窗口的大小;width:指定新开窗口的宽度;height:指定新开窗口的高度;top:指定新开窗口距离电脑屏幕上方的像素;left:指定新开窗口距离电脑屏幕左边的像素。例2-10:用window.open()打开

13、一个新窗口源文件:windowOpen.htm 父窗口 function createNewWindow(url) /打开一个新的窗口,窗口内容由url参数决定 window.open(url, width=300,height=120,toolbar=no,resizable=no,top=100,left=100); 2.3.2 JavaScript常用内置对象2document对象:document对象包含当前文档的信息。常用方法:write()/writeln()/在浏览器中输出动态内容 ;getElementById() /在文档中通过html元素的ID属性查找html元素对象;ge

14、tElementsByTagName() /在文档中通过html元素的NAME属性查找html元素对象;2.3.2 JavaScript常用内置对象3form对象:Form对象是document下的一个子对象,表示表单对象 。可以使用document.formName或者document.formsindex的方式来获得对某个form的引用 ; 得到指定的form对象后,就可以使用它来获得form中的各个表单元素,例如:document.myForm.myText表示myForm表单中的myText这个表单元素 。 关于HTML元素的引用请参考例2-11 -例2-1132.3.2 JavaSc

15、ript常用内置对象2.3.3 JavaScript的对话框警告框(alert):用于显示JavaScfipt的警告对话框;例2-14 询问框(prompt):用于接收用户输入的询问对话框,返回输入的值;例2-15 确认框(confirm):用于显示javascript确认对话框,返回true/false例2-162.3.4JavaScript事件处理1窗口文档事件 onLoad:出现在一个文档完成对一个窗口的载入时。 例2-17 2焦点事件onfocus和 onblur当光标的焦点移到页面的某些元素时,将会发生“聚焦事件(onfocus)”,失去焦点的元素将发生“失去焦点事件(onblur)

16、” 。 例2-18 -例2-193单击事件(onclick) 当在某个表单元素上单击的时候,将会发生点击(click)事件 。 例2-20 4内容改变事件(onchange) 当某些表单的内容发生改变的时候,将发生“(内容)改变”事件(onchange) 例2-21 5选择事件(onselect) 当选中表单元素中的文本内容时,将会发生“选择(onselect)”事件 。 例2-22 6提交事件(onsubmit) 当表单提交的时候,会发生“表单提交”事件 例2-23 7鼠标事件(onMouseOver / onMouseOut) 当鼠标移到某个对象上时,该对象会触发onMouseOver事件

17、,当鼠标移开某个对象上时会触发onMouseOut事件。 例2-24 2.3.4JavaScript事件处理2.4JavaScript正则表达式 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 在JavaScript中,正则表达式主要应用于表单数据的客户端验证。例如:校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字符串 function isRegisterUserName(s)var patrn= /a-zA

18、-Z1(a-zA-Z0-9|._ )4,19$/; if (!patrn.exec(s) return false;elsereturn true ; 定位符限定符操作符元字符1建立正则表达式 构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式。对 JavaScript 而言,分隔符为一对正斜杠 ( / ) 字符。 例如:/s t*$/ 用于匹配一个空白行。/a-z/ 用于匹配任何从小写 a 到小写 z 的字符。2.4.1正则表达式基本语法2正则表达式中的特殊字

19、符-元字符参考教材中的表2-12.4.1正则表达式基本语法3限定符 正则表达式支持限定符的概念。这些限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。下表给出了各种限定符及其含义的说明:字符描述*匹配前面的子表达式零次或多次。例如,zo* 能匹配 z 以及 zoo。 * 等价于0,。 + 匹配前面的子表达式一次或多次。例如,zo+ 能匹配 zo 以及 zoo,但不能匹配 z。+ 等价于 1,。 ? 匹配前面的子表达式零次或一次。例如,do(es)? 可以匹配 do 或 does 中的do 。? 等价于 0,1。nn 是一个非负整数。匹配确定的 n 次。例如,o2 不能匹配 B

20、ob 中的 o,但是能匹配 food 中的两个 o。 n,n 是一个非负整数。至少匹配n 次。例如,o2, 不能匹配 Bob 中的 o,但能匹配 foooood 中的所有 o。o1, 等价于 o+。o0, 则等价于 o*。 n,mm 和 n 均为非负整数,其中n = m。最少匹配 n 次且最多匹配 m 次。刘, o1,3 将匹配 fooooood 中的前三个 o。o0,1 等价于 o?。请注意在逗号和两个数之间不能有空格。 2.4.1正则表达式基本语法4定位符 定位符可以将一个正则表达式固定在一行的开始或结束。也可以创建只在单词内或只在单词的开始或结尾处出现的正则表达式。下表包含了正则表达式中

21、定位符及其含义的列表:字符描述 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性, 也匹配 n 或 r 之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 n 或 r 之前的位置。 b 匹配一个单词边界,也就是指单词和空格间的位置。 B 匹配非单词边界。2.4.1正则表达式基本语法2.4.2Javascript正则表达式对象1创建正则表达式对象 创建正则表达式对象有两种语法格式: 语法1: re = /pattern/flags 语法2: re = new RegExp(pattern,flags

22、) 其中: re :必选项。将要赋值为正则表达式模式的变量名,它保存正则表达式对象。 pattern:必选项。要使用的正则表达式模式。 如果使用语法 1,用 “/” 字符分隔模式。如果用语法2,用引号将模式引起来。 flags:可选项 ,可用的有: g :(全文查找出现的所有 pattern) i :(忽略大小写) m :(多行查找) 2正则表达式对象常用方法(1)exec方法 用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组 。例:2-25 说明了exec()方法的使用。(2)test方法 返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式 。2.4.2Ja

23、vascript正则表达式对象1校验是否全由数字组成 function isDigit(s) var patrn=/0-91,20$/; if (!patrn.exec(s) return false else return true 说明:在JavaScript中,空值(NULL)和非空可以用来在条件表达式中表示“false”和“true”。exec()方法本来是返回一个数组,当数组为空(NULL)时代表“false”,说明字符串(s)与正则表达式模式不匹配,否则代表“true”。当然这里也可以用test()方法。2.4.3常用正则表达式2校验登录名:只能输入5-20个以字母开头、可带数字、

24、“_”、“.”的字符串 function isRegisterUserName(s)var patrn=/a-zA-Z1(a-zA-Z0-9|._ )4,19$/; if (!patrn.exec(s) return false;elsereturn true 正则表达式的使用请参考例2-29(验证表单)2.4.3常用正则表达式2.5 CSS样式表基础251 CSS基本概念 CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于为HTML文档定义布局的样式表语言。 CSS涉及字体、颜色、边距、高度、宽度、背景图像、高级定位等 2.5.2 CSS基本语法CSS 规则

25、由两个主要的部分构成:选择器,以及一条或多条声明。selector declaration1; declaration2; . declarationN 例如:h1 color:red; font-size:14px; 选择器(selector)通常是需要改变样式的 HTML 元素。 声明(declaration)由一个属性和一个值组成。2.5.3 在HTML文档中应用CSS1内联样式表:内联样式表是使用HTML元素的style属性。Style属性可以应用于任意body元素(包括body本身)。例如: 例子 这一段是红色的 2.5.3 在HTML文档中应用CSS2内部样式表:内部样式表是采用H

26、TML元素style把样式表的内容定义在HTML文件的标记内。 例子 body background-color: #FF0000;这个页面是红色的2.5.3 在HTML文档中应用CSS3外部样式表(引用一个样式表文件)外部样式表是一个扩展名为.css的文本文件-样式表文件 。引用方法:在HTML文件的区域内使用标记进行链接,语法格式如下:其中url为样式表文件的地址,可以是相对地址,也可以是绝对地址。2.5.4 CSS高级语法1选择器的分组:定义选择器时,可以对选择器进行分组 。例如: h1,h2,h3,h4,h5,h6 color: green; 2派生选择器:派生选择器允许根据文档的上下

27、文关系来确定某个标签的样式 。例如: li strong font-style: italic; font-weight: normal; /该样式只作用于标记内的3类选择器:在定义类选择器时,在自定义类名称前面加上一句点“.”。语法格式如下:标记名.类名 declaration1; declaration2; . declarationN 例如:p.red color: redp.blue color:blue.center text-align: center 其中: red、blue和center称为类选择器。red和blue这两个类选择器只能用于段落标记p,而center类选择器可以用

28、于任何HTML元素。2.5.4 CSS高级语法4id 选择器id 选择器可以为指定特定 id 的 HTML 元素指定特定的样式。 id 选择器以 # 来定义。语法格式如下:标记名# id选择器名 declaration1; declaration2; . declarationN 例如:#red color:red;#green color:green;注意:同一个id 属性在同一个HTML 文档中只能出现一次,因为在HTML文档中,ID属性必须具有唯一性。2.5.4 CSS高级语法5.伪类 :伪类(pseudo-class)可以在为HTML元素定义CSS属性的时候将条件和事件考虑在内 .例如

29、: a:link color: blue; /伪类:link用于浏览者从未访问过的链接 a:visited color: red; /伪类:visited用于浏览者已访问过的链接 a:active background-color: #FFFF00; /伪类:active用于活动的链接 a:hover color: orange; font-style: italic; /伪类:hover用于有鼠标悬停的链接 2.5.4 CSS高级语法2.5.5 CSS 样式属性1CSS 背景属性:CSS 背景属性用于改变元素的背景色彩或背景图片 ,参考表2-42CSS字体属性:字体属性用于定义文本的字体系列

30、、大小、加粗、风格 , 参考表2-53CSS文本属性:文本属性用于定义文本的外观,如文本的颜色、字符间距,对齐文本,装饰文本,对文本进行缩进等等 , 参考表2-64CSS列表属性:列表属性用于设置、改变列表项标志 , 参考表2-7 5CSS边框属性:边框属性用于设置元素边框的样式、宽度和颜色 ,参考表2-72.5.6 CSS 盒状模型1CSS盒状模型 CSS盒状模型(box model,也有称之为框模型)用于描述一个HTML元素形成的矩形盒子(任何一个HTML元素都是一个矩形盒子)。盒状模型为各个元素调整外边距(margin)、边框(border)、内边距(padding)等 2CSS边距属性

31、 边距属性用来设置元素的内边距和外边距 。CSS边距属性、作用、语法及示例参考表2-9 2.5.6 CSS 盒状模型例2-26设置边框、边距 css框模型 p /*定义段落背景 */ background-color:blue ; /*定义字体大小 */ font-size: 20px; /*定义边框为红色双粗线 */ border: thick double red;/* 内边距都为100px */padding: 100px; /*上、下外边距为20px,左右外边距为80px */ margin: 20px 80px ; 这里的文本位于框中 2.5.6 CSS 盒状模型2.5.7 CSS

32、定位CSS 定位机制 CSS 有三种基本的定位机制:普通流(默认)、浮动(float)和定位 (position)定位又可以分为:绝对定位(absolute )和相对定位(relative )CSS定位的原理 把浏览器窗口想象成一个坐标系统;可以将任何盒子(box)放置在坐标系统的任何位置上。 2.5.7 CSS 定位1.普通流: 如果没有特别指定,所有框都在普通流中定位,普通流中的元素的位置由元素在 (X)HTML 中的位置决定 2.浮动:可以通过CSS属性float令元素向左或向右浮动。也就是说,令盒子及其中的内容浮动到文档(或者是上层盒子)的右边或者左边 由于浮动框不在文档的普通流中,所

33、以文档的普通流中的块框表现得就像浮动框不存在一样,右图是浮动示意图 浮动的应用案例:假如我们想让一张图片被一段文字围绕着,那么其显示效果将如下所示: causas naturales et antecedentes, idciro etiam nostrarum voluntatum. #picture float:left; width: 100px; 2.5.7 CSS 定位2.5.7 CSS 定位3绝对定位:绝对定位的元素框从文档流中完全删除,并相对于其包含块定位 .要对元素进行绝对定位,应将position属性的值设为absolute 。下图是绝对定位示意图例2-27绝对定位的应用 c

34、ss框模型 div background-color:gray; border: thick solid red; margin: 0; width: 200px; height:50px;position:absolute; top:0; left:0; 这是div内容 2.5.7 CSS 定位4相对定位:采用相对定位的元素,其位置是相对于它在文档中的原始位置计算而来的。通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动 。要对元素进行相对定位,应将position属性的值设为relative 2.5.7 CSS 定位5定位与布局属性 与定位有关的CSS样式属性请参考教材中的表2-

35、10。26 实用案例 参考教材的代码,用div+css完成右图界面布局设计2.5.7 CSS 定位Java Web应用开发中国水利水电出版社第三章 JDBC数据库编程长沙民政职业技术学院WEB应用开发精品课程本章任务使用JDBC实现学生信息的增删改查(以下为学生信息表结构)字段名字段说明字段类型其 他sno学号char(14)主键sname姓名char(10)非空sage年龄integerssex性别char(2)spe_id专业编号char(4)phote照片longBlob本章目标JDBC概念和特点JDBC体系结构JDBC URLODBC数据源配置JDBC数据库开发环境配置JDBC访问数据

36、库的基本步骤常用的JDBC类与方法JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力311 JDBC的概念及特点Java应用程序JDBCJDBCJSP/Servlet客户端数据库服务器应用服务器数据库服务器客户端JDBC API提供者:Sun公司内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:DriverManager类Connection接口Statement接口ResultSet接口DriverManager提供者:Sun公司作用:管理各种不同的JDBC驱动JDBC 驱动提供者:数据库厂商作用:负责连接各种不同的数据库312 JDBC体系

37、结构Sql ServerOracleJDBC API JDBC Driver Manager JDBC 驱动 JDBC 驱动 Java 应用程序 JDBC API可做三件事:1与数据库建立连接、2执行SQL 语句、3处理结果DriverManager :依据数据库的不同,管理JDBC驱动Connection :负责连接数据库并担任传送数据的任务 Statement :由 Connection 产生、负责执行SQL语句ResultSet:负责保存Statement执行后所产生的查询结果JDBC APIConnectionDriverManagerStatementResultSet客户端数据库服

38、务器1234JDBC驱动由数据库厂商提供在个人开发与测试中,可以使用JDBC-ODBC桥连方式在生产型开发中,推荐使用纯Java驱动方式313 JDBC的种类DB ServerDBServerJDBC APIJDBC Driver Manager纯Java 驱动 JDBCODBC桥Java 应用程序 ODBC使用JDBC-ODBC桥方式连接数据库将对JDBC API的调用,转换为对另一组数据库连接API的调用优点:可以访问所有ODBC可以访问的数据库缺点:执行效率低、功能不够强大JDBC-ODBC桥Java 应用程序 JDBC APIODBC APIODBC层DBServer313 JDBC的

39、种类使用纯Java方式连接数据库 由JDBC驱动直接访问数据库优点:100% Java,快又可跨平台缺点:访问不同的数据库需要下载专用的JDBC驱动JDBC 驱动 Java 应用程序 JDBC API DBServer313 JDBC的种类314 JDBC URLJDBC URL提供了一种标识数据库的方法,可以使相应的驱动程序能够识别该数据库并与它建立连接。标准的JDBC URL的格式如下: jdbc:JDBC URL由三个部分组成,各个部分之间用冒号分隔。是指数据库连接的方式。可以根据子协议的改变而变化。(1)Oracle(thin连接方式)jdbc:oracle:thin:服务器名/IP地

40、址:1521:数据库实例名(2)SQL Server 2000jdbc:microsoft:sqlserver:/ 服务器名/IP地址:1433;databaseName=数据库名(3)SQL Server 2005jdbc:sqlserver:/ 服务器名/IP地址:1433;databaseName=数据库名(4)MySQLjdbc:mysql:/ 服务器名/IP地址:3306/数据库名(5)JDBC-ODBC桥jdbc:odbc:mydb ;user=用户名;password=密码(数据源名称:mydb)315 ODBC数据源配置(1)在Access中创建一个数据库(2)进入ODBC数据

41、源配置程序315 ODBC数据源配置(3)创建新的数据源(4)为新数据源命名316 JDBC数据库开发环境配置(1)安装并配置数据库(2)下载相关驱动程序(3)设置驱动程序类路径(4)创建数据库和表(5)输入测试用数据321 JDBC访问数据库的基本步骤1加载JDBC驱动程序Class.forName(DriverName);2创建数据库连接Connection conn=DriverManager.getConnection(String url,String user,String password);3创建Statement对象Statement smt=conn.createState

42、ment();4执行SQL语句,返回结果集对象ResultSetResultSet rs=smt.executeQuery(SELECT * FROM students);5处理SQL的返回结果String studentName=rs.getString(“sno”);/按列名取值或:rs.getString(1);/按索引号取值6关闭创建的各个对象conn.close();例3-1:创建数据库连接类,并测试连接是否成功源程序Test.javapackage com.csmy;import java.sql.*;public class Test public static void mai

43、n(String args) Connection conn=null; try conn=Dbconn.getconn();/利用连接类的静态方法获得连接 if(conn!=null)/获取连接对象成功 System.out.print(恭喜你,你已成功连接到MySQL数据库); catch (SQLException e) e.printStackTrace(); 例3-2: 查询studens表中所有数据,并打印出来。322常用的JDBC类与方法1DriverManager类2Connection接口(1)Statement createStatement() (2)PreparedSt

44、atement prepareStatement(String sql) (3)CallableStatement prepareCall(call stored_proc)(4)void close()(5)boolean isClosed()Statement接口常用方法方法名说 明ResultSet executeQuery(String sql)执行SQL查询并获取到ResultSet对象int executeUpdate(String sql)可以执行插入、删除、更新等操作,返回值是执行该操作所影响的行数boolean execute(String sql) 可以执行任意SQL语句,

45、然后获得一个布尔值,表示是否返回ResultSetResultSet接口常用方法方法名说 明boolean next()将光标从当前位置向下移动一行boolean previous()游标从当前位置向上移动一行void close()关闭ResultSet 对象int getInt(int colIndex)以int形式获取结果集当前行指定列号值int getInt(String colLabel)以int形式获取结果集当前行指定列名值float getFloat(int colIndex)以float形式获取结果集当前行指定列号值float getFloat(String colLabel)

46、以float形式获取结果集当前行指定列名值String getString(int colIndex)以String 形式获取结果集当前行指定列号值String getString(String colLabel)以String形式获取结果集当前行指定列名值 PreparedStatement接口 (预编译的 SQL 语句) Statement 接口 提高了代码的可读性和可维护性 PreparedStatement 接口继承 Statement接口PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率 PreparedStatement接口提高了SQL语句执

47、行的性能 提高了安全性CallableStatement 对于高级数据库,一般都会提供存储过程的功能,以加快SQL语句的执行。那么,在JDBC中如何去调用一个存储过程呢?JDBC中的CallableStatement接口提供了调用存储过程的方法。 CallableStatement接口继承了Statement接口和PreparedStatement接口,因此它具有两者的特点:可以处理一般的SQL语句,也可以处理带IN(输入)参数的SQL语句。它还自己定义了OUT(输出)参数以及INOUT(输入输出)参数的处理方法。通过Connection对象的prepareCall()方法,可以创建Calla

48、bleStatement对象,如: conn.prepareCall(call stored_proc);其中,stored_proc为存储过程名称。如果存储过程有参数(比如有两个参数),可以使用如下的方式调用: conn.prepareCall(call stored proc(?,?);其中,占位符“?”是IN、OUT还是INOUT取决于存储过程定义。而如果存储过程有返回值,使用下面的方式调用: conn.prepareCall(?=call stored proc(?,?);例3-5 调用存储过程的例子 首先需要在MySQL中创建一个存储过程,该存储过程接收一个系部ID参数,通过输出参数

49、返加系部名称,SQL语句如下:delimiter / -设置MySQL的结束标志为“/”create procedure finddepnamebyid(id char(2),out depname char(40)begin select dep_name into depname from department where dep_id=id;end; delimiter ; -把MySQL的结束标志改回为“;”例3-5 调用存储过程的例子 在JDBC中,事务默认是自动提交的通过Connection的setAutoCommit()方法来设置事务的提交属性通过Connection的getAu

50、toCommit()方法来获得当前事务的提交方式通过Connection的commit()方法来提交事务通过Connection的rollback()方法来回滚事务3.2.3事务处理try Statement stmt = conn.createStatement(); Statement stmt1 = conn.createStatement(); String strSql,sql,strParameter; conn.setAutoCommit(false); strSql = delete from File_List where Type_ID=+request.getParame

51、ter(Type_ID)+; stmt.executeUpdate(strSql); sql = delete from Type_List where Type_ID=+request.getParameter(Type_ID)+; stmt1.executeUpdate(sql); mit(); stmt1.close(); stmt.close(); conn.close(); response.sendRedirect(OperationSuccess.jsp?msg=删除目录+request.getParameter(Type_Name)+成功!&ref=Y&tar=servlet/

52、dbclass.ManagerTree&frame=epost_menu);catch(Exception e)conn.rollback();response.sendRedirect(OperationFail.jsp?msg=删除目录+request.getParameter(Type_Name)+失败!);设置事务的提交属性提交事务回滚事务事务要使用可滚动的结果集,必须使用不同于前面所定义的Statement:Statement stmt = conn.createStatement(type,concurrency);PreparedStatement stmt = conn.pre

53、pareStatement(sql,type,concurrency)3.2.4可滚动和可更新的结果集ResultSet的Type说明TYPE_FORWARD_ONLY结果集不能滚动TYPE_SCROLL_INSENSITIVE结果集可滚动,但对数据库的变化不敏感TYPE_SCROLL_SENSITIVE结果集可以滚动,并且对数据库的变化敏感3.2.4可滚动和可更新的结果集ResultSet的Concurrency说明CONCUR_READ_ONLY结果集不可用于更新数据库CONCUR_UPDATABLE结果集可以用于更新数据库3.2.4可滚动和可更新的结果集可滚动结果集中的方法:firstl

54、astbeforeFirstafterLastisFirstisLastisBeforeFirstisAfterLastrelativenextpreviousabsolute3.2.4可滚动和可更新的结果集可更新的结果集:可以直接通过结果集来更新(insert/update/delete)数据库表rs.updateXXX(String name,Xxx value)/rs.updateRow();rs.moveToInsertRow()/rs.updateXxx()/rs.insertRow();rs.deleteRow();rs.cancelRowUpdates();3.2.4可滚动和可更

55、新的结果集3.2.5批处理在JDBC2中,加入了批处理(batch)的功能。所谓批处理,就是将很多的命令(此处是SQL语句)集合到一起执行,以提高效率。要使用JDBC的批处理,首先需要使用Statement对象的addBatch()方法向其中加入SQL语句,然后,使用Statement对象的executeBatch()方法来一次执行加入到批处理中的SQL语句。注意,在使用addBatch()加入SQL语句的时候,语句并不会执行,只有在调用了executeBatch()方法后,才会执行。通常,会将批处理和事务处理结合起来使用。 3.2.5批处理3.2.6操作数据库中的BLOBCLOB类型数据有时

56、候,需要将图片、声音等内容保存到数据库中,或者要将一个内容较大的文本文件保存到数据库中。这些数据在数据库系统中一般使用的数据类型为:BLOB(Binary Large OBject) 或 BINARY:用于保存大的二进制数据;CLOB(Character Large OBject) 或TEXT::用于保存大的文本数据;在JDBC中,保存图片、声音、文本等大数据到数据库,主要用到PreparedStatement接口提供的下列setXXX()方法: (1)void setBinaryStream(int parameterIndex, java.io.InputStream in, int le

57、ngth); 其中length为输入流长度,一般可以通过输入流的.available()方法计算(即in.available()。这个方法最常用,适合任何SQL类型。(2)void setAsciiStream(int parameterIndex, java.io.InputStream in, int length);主要用于处理文本对象。(3)void setBytes(int parameterIndex, byte x);(4)void setBlob(int parameterIndex , java.sql.Blob x);3.2.6操作数据库中的BLOBCLOB类型数据(5)v

58、oid setClob(int parameterIndex , java.sql.Clob x);从数据库中读取图片、声音、文本等大数据,主要使用ResultSet接口提供的下列getXXX()方法:(1)java.io.InputStream getBinaryStream(int columnIndex);/读取二进制数据(2)java.io.InputStream getAsciiStream(int columnIndex);/读取大文本(3)byte getBytes(int columnIndex);(4)java.sql.Blob getBlob(int columnIndex

59、 );(5)java.sql.Clob getBlob(int columnIndex );3.2.6操作数据库中的BLOBCLOB类型数据3.2.7获得数据库元数据所谓“元数据(Meta Data)”,就是有关数据库和表结构的信息。在JDBC中,DatabaseMetaData类保存了数据库的所有特性,而ResultSetMetaData类保存了结果集的所有特性,它们提供许多的方法来取得这些信息。 1DatabaseMetaData类 2ResultSetMetaData类DatabaseMetaData相关方法getDatabaseProductName()getDatabaseProdu

60、ctVersion()getDriverName()getDriverVersion()getURL()getUserName()getColumnCount()getColumnName() 3.2.7获得数据库元数据总结JDBC常用API及其作用是什么?JDBC访问数据库的步骤有哪些?如何遍历结果集中数据?PreparedStatement比Statement好在哪里?Java Web应用开发第三章 JDBC数据库编程本章任务使用JDBC实现学生信息的增删改查(以下为学生信息表结构)字段名字段说明字段类型其 他sno学号char(14)主键sname姓名char(10)非空sage年龄in

温馨提示

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

评论

0/150

提交评论