Java Web程序设计项目实战(微课版)教案 廖丽 项目4、5 JSP内置对象、JSP内置对象_第1页
Java Web程序设计项目实战(微课版)教案 廖丽 项目4、5 JSP内置对象、JSP内置对象_第2页
Java Web程序设计项目实战(微课版)教案 廖丽 项目4、5 JSP内置对象、JSP内置对象_第3页
Java Web程序设计项目实战(微课版)教案 廖丽 项目4、5 JSP内置对象、JSP内置对象_第4页
Java Web程序设计项目实战(微课版)教案 廖丽 项目4、5 JSP内置对象、JSP内置对象_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

项目四JSP内置对象

主题任务4.1Java中连接数据库

课时2教学手段启发引导法项目教学法任务教学法

教学方法演示法

教学课型□理论□实训10一体化口(其它)

1.熟悉JDBC

知识目标3.掌握JDBC的主要操作类和接口

4.熟悉资源文件中配置数据库

教学目标

能力目标应用JDBC连接数据库

培养学生具有网络安全意识,提升学生民族自豪感

育人目标

和爱国热情

教学重点应用JDBC连接数据库

教学难点应用JDBC连接数据库

教学过程设计备注

一、创建情境,导入新课(5分钟)

当我们登录QQ时,需要先注册,注册以后,我们的个人

信息放在什么地方呢,从而引出本节课的内容。

二、教学实施(80分钟)

.1.任务演示

本任务使用Java语言驱动MySQL数据库,命名为

“jiaqicms”数据库中的表名为“user”的一共的记录数打印到控

制台,如图所示

I*MarkersOPropertiesServers泥DataSourceE>

<terminated>MysqlDemc[JavaApplication]D:\JSP\eclipse-

jq_user及牛一关弯3年

2.知识准备

(1)JDBC简介

(2)JDBC的主要操作类及接口

■Driver接口

■DriverManager类

■Connection接口

■Statement接口

■PrcparcdStatcmcnt接口

■resultSet接口

课堂练习(教师演示、学生操作)

课堂练习1:Java中数据库连接,如图所示。

伍Markers二PropertiesifoServers诙DataSourceExplorerLSnippets*.ProblemsCConsole区、

yterminated)My$qlDemo[JavaApplication]C:\ProgramFile5\J«va\jdk-15.0.1\bin^avdw.exe(2022知月13日下午

|com.mysql.jdbc.3DBC4Connection@64616ca2

课堂练习2:实例化Statement对象,如图所示。

<terminated>MysqlDemo[JavaApplication]D:\JSP\eclipse-

com.mysql.jdbc.Statement工mp述13e39c73

课堂练习3:Statement接口的和executeQueryO方法的应

用。

<terminated>MysqlDemo[JavaApplication]D:\JSP\eclipse

com.mysql.jdbc.JDBC42ResultSet@7e0b85f9

课堂练习4:PreparedStatement。方法的应用。

i*Markers二PropertiesASewsSourceEvpbrer上Snippets£Prob!em$0Console4SearchtErrorlog^Terminal

<term'nated>MysqlDemoOI[JavaApplication]CAProgumRe$VavaWk・15A1\bi旭raw.exe(2022^7^14EJF^156cU)

[elect*fromjq_userwhere'username'=?and'password'=?

com.mysql.jdbc.JDBC42ResultSet03567135c

课堂练习5:next。方法和getXxx()方法的应用。

I?Markers□PropertiesvflServersS务DataSourceExplorerSSnippets艮Problems日Console汽

〈terminated》My^qlDefno04[JavaApplication)G\ProgramFile$Vava\jdk-15.0.1\bin\javaw.exe(2022^7^146

获取到而姓名为:zhangsan

3.任务实施(教师演示、学生操作)

关键代码:

第一步:加载JDBC数据库驱动。

(1)下载MySql的jar包

(2)将下载得到的文件进行解压

(3)Eclipse中使用jar包

第二步在包里面加入连接MySQL数据库的包

第三步在Eclipse中点击项目Project选择属性

Propetieso

第四步选择jar包,添加到项目中,如图所示。

第五步数据库准备

Connectionconn=null;

Statementstint=null;

Stringsql="selectcount(*)fromjq_user";

try{

"1.注册驱动

Class.forNamc("coin.niysql.jdbc.Driver");

〃2.获取连接

conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jiaqicms,,,"root","roo

t");

〃3.实例化Statement对象

stmt=conn.createStatementO;

//System.out.println(stint);

//4.执行SQL语句,返回ResultSet结果集对象

ResukSetrs=stint.executeQuery(sql);

while(rs.next()){

System.out.println("jq_user表中一共有"+rs.geilnl(l)+"行");

}

}catch(Exceptionc){

e.printStackTracei');

}

try{conn.close();

stmt.close();

}catch(SQLExceptione){

e.printStackTracei");

)

})

4.任务拓展

实际开发中不建义在Java程序中把连接数据库的信息写

死,而是写入到配置文件或资源文件中,这样方便修改配置文

件,而不需要重新编译程序。

在工程sre目录下创建名为“pcrties”的文件,输入如

下内容:

driver=com.mysqLjdbc.Driver

url=jdbc:mysql://localhost:3306/jiaqicms

username=root

password=root

【脚小留心】

注意:该XXX.properties文件,必须放在src文件夹下,

不然会出错,而且编译器不会直接提示。

读取后缀名为properties的文件,可以通过ResourceBundle

类来实现。ResourceBundle类是java自带的类,类路径:

java.util.ResourceBundle,主要用来读取项目中后缀为

properties的配置文件。

获取配置文件的名称,使用getBundle()方法,代码如下:

ResourceBundleresourceBundle=

ResourceBundle.getBundle(ndbn);

【教你一招】

注意,上面代码中的后缀名不需要书写。

获取资源文件中的信息:使用getString。方法,比如要读

取数据库的用户名,则代码可以写为:

Stringusername^undle.getStringC'username");

读取其他信息,只需要改变getString()方法中的值就可以

了。

将上面的例子中的配置信息可以写到perties文件

中,Java部分的驱动代码可以修改为如下。

三、教学小结(3分钟)

通过本节课的学习,问学生掌握了哪些知识?

JDBC主要操作类和接口,数据库的连接,加载jar包以

及在资源文件中配置数据库。

作业布置(2分钟)实训一实现数据库的连接

教学反思注重培养学生实践动手能力

项目四JSP内置对象

主题任务4.2数据库查询和模糊查询

课时2教学手段启发引导法项目教学法任务教学法

教学方法演示法

教学课型□理论□实训I0一体化口(其它)

1.掌握数据库的一般查询

知识目标

2.掌握数据库的模糊查询

教学目标能力目标能综合应用JDBC对数据库表进行查询

培养学生具有网络安全意识,提升学生民族自豪感

育人目标

和爱国热情

教学重点能综合应用JDBC对数据库表进行查询

教学难点能综合应用JDBC对数据库表进行查询

教学过程设计备注

一、创建情境,导入新课(5分钟)

微信、腾讯QQ、邮箱、百度网盘…需要先登录,登录时,

需要输入用户名和密码,平台是如何知道我们输入的用户名和

密码是正确的呢,从而引出本节课的内容。

二、教学实施(80分钟)

1.任务演示

将数据库名为“jiaqicms”的数据库中名字为“jqjiser”表

的第一条记录的姓名和邮箱信息查询出来,并打印输出到控制

台,如图所示。

-8-

[?Markers二Properties泉Servers诵DataSourceExpl

〈terminated〉MysqlDemo05[JavaApplication]D:\JSP\eclipse

姓名:zhangsan邮箱:1888@qq.com

使用关键字“san”对名字为“jiaqicms”的数据库进行模

糊查询,将查询到的记录中的“uername”字段的内容输出到控

制台,如图所示。

[?Markers二Properties泉ServersE与DataSourceExp!

〈terminated〉MysqlDemo05[JavaApplication]D:\JSP\eclipse

姓名:zhangsan由E箱:1888@qq.com

2.知识准备

(1)使用PreparedStatement接口实现数据查询

(2)使用PreparedStatement接口实现模糊查询

MySQL中规定的通配符主要有以下三种:

■“%”号通配符:表示任何字符出现任意次数(可以是0

次)

■“,通配符:只能匹配单个字符,不能多也不能少,就

是一个字符。

■like操作符:指MySQL后面的搜索模式是利用通配符而

不是直接相等匹配进行比较,如果like后面没有出现通

配符,则在SQL执行优化时将like等价于执行。

课堂练习(教师演示、学生操作)

课堂练习1:对名为“jq_user”的表进行模糊查询。

3.任务实施(教师演示、学生操作)

-9-

(1)单条或多条记录的查询

下面通过将jq_user表中姓名为“zhangsan”的记录打印输

出到控制台,如果"jq_user”表中有多条记录,那么都可以打印

输出到控制台。

package.cqcvc;

importjava.sql.Connection;

importjava.sqLDriverManager;

importjava.sql.PreparedStatement;

importjava.sqLResultSet;

importjava.sqLSQLException;

importjava.sql.Statemeni;

importjava.util.ResourceBundle;

publicclassMysqlDenio。〉{

publicstaticvoidmain(Stringl]args){

Connectionconn=null;

PreparedStatementstmt=null;

Stringsql="select*fromjq_userwhereusername=?H;

Stringdriver=null;

Stringurl=null;

Stringusername=null;

Stringpassword=null;

ResourceBundlebundle=ResourceBundle.getBundle("db");

driver=bundle.getS(ring("driver");

url=bundle.getString("url");

username=bundle.getString("username");

password=bundle.getSiring("password");

try(

.注册驱动

Class.forName(driver);

〃2.获取连接

conn=DriverManager.getConnection(urkusername,password);

〃3.实例化prepareStatement对象

stmt=conn.prepareStatement(sql);

stmt.setString(k"zhangsan");

//4.执行SQL语句,返【口IResultSel结果集对象

ResultSetrs=stmt.executeQuery();

while(rs.next()){

-10-

System.out.printin("姓名:"+rs.getSlring("usernaine,')+"--"+"

邮箱:"+rs.ge(S(ring("emair'));

I

}catch(Exceptione){

c.printStackTracc();

)

try{

conn.close();

stmt.close();

}catch(SQLExceptione){

e.printStackTraceO;

)

)

)

运行结果如图4・28所示:

I?Markers二Properties泉Servers+电DataSourceExpl

<terminated>MysqlDemo05[JavaApplication]D:\JSP\eclipse

姓名:zhangsan由6箱:1888@qq.com

2.模糊查询

模糊查询主要用在网站的内容的搜索功能上,下面代码实

现对jq_user表中的数据进行模糊查询。

package.cqcvc;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sqLPreparedStatement;

importjava.sql.ResultSet;

publicclassMysqlDemo06{

publicstaticvoidmain(Slring[largs){

Stringsql=,,selecl*frcmjq_userwhereusernamelike

try{

Class.forName("com.mysql.jdbc.Driver");〃1.注册驱动

-11-

〃2.获取连接

Connection

conn=DriverManager.getConnection("jdbc:mysql://localhost:33()6/jiaqicms","root","root"

)

PreparedStatemenlpre=conn.prepareStatement(sql);〃3,实例化Statement对象,

进行预编译

Stringusernamc="%san%";

pre.setString(l,username);〃4.执行SQL语句,返回ResultSet

结果集对象

ResultSetrs=pre.executeQuery();

while(rs.next()){

System.out.printin("获取到的姓名为:,,+rs.getString("useiname"));

)

}catch(Exceptione){

e.priniSlackTraceO;

程序运行结果如图所示:

<terminated>MysqlDemo06[JavaApplication]D:\JSP\eclipse

获取到的姓名为:zhangsan

4.任务拓展

(1)静态代码块

在使用JDBC操作数据库的时候,为了增加代码的通用性,

可以将数据库连接等操作抽象为一个工具类DBUtils。这里需要

用到静态代码块的知识,什么是静态代码块呢?

静态代码块是定义在类中,使用关键字static修饰的代码

块,在类加载时只执行一次,无论类在那个位置,与对象无关,

不论产生多少对象,静态代码块只在类加载时执行一次,如下

是静态代码块的应用。

-12-

(2)工具类DBUtils

有了静态代码块的知识后,我们着手把数据库操作抽成一

个工具类。

三、教学小结(3分钟)

通过本节课的学习,问学生掌握了哪些知识?

数据库的一般查询,通配符,模糊查询。

作业布置(2分钟)完成实训任务和拓展任务

教学反思注重培养学生实践动手能力

-13-

项目四JSP内置对象

主题任务4.3数据库的更新操作

课时2教学手段启发引导法项目教学法任务教学法

教学方法演示法

教学课型□理论□实训I0一体化口(其它)

知识目标掌握数据库的更新操作

教学目标能力目标能灵活对数据库进行更新

培养学生具有网络安全意识,提升学生民族自豪感

育人目标

和爱国热情。

教学重点数据库的更新

教学难点数据库的更新

教学过程设计备注

一、创建情境,导入新课(5分钟)

数据库连接以后,可以对数据进行增、删、改、插操作。

要对数据进行更新操作,可以使用Statement接口完成。该接

口中需要Connection接口提供creatStatement。方法进行实例

化,进而可.以实现相应的操作。

二、教学实施(80分钟)

1.任务演示

本任务使用Java语言驱动MySQL数据库,命名为

“jiaqicms”数据库中的表名为“user”表中增加数据并实现

-14-

修改删除操作,如图所示。

—TT▽idusernamepasswordemailaddress

□「捐辑并复制。删除1zhangsan1231888@重庆城市职业学院

□/编辑举复制©删除2lisi1232222@重庆解放樨

□“舄辑尹复制。删除3klkl123kkk@jjj南滨路

□”编辑并复制。删除5lier123456233@上海东路10增

t_全选/全不选选0安:”修改0删除层导出

2.知识准备

JDBC中的Statement对象用于向数据库发送SQL语

句,想完成对数据库的增删改查,只需要通过这个对象向数据

库发送增删改查语句即可。

Statement对象的executeUpdate()方法,用于向数据库

发送增,删,改,查的SQL语句,executeUpdate()执行完

后,将会返回一个整数,(即增删改语句导致了数据库的记录

数发生了变化)。

Statement.executeQuery()用于向数据库发送查询语句,

executeQuery()方法返回代表查询结果的ResuItSet对象。

课堂练习(教师演示、学生操作)

课堂练习1:使用executeUpdate(Stringsql)方法向数据

中添加数据。

课堂练习2:使用executeUpdate(Stringsql)方法将指定

表中的数据进行删除。

课堂练习3:使用executeUpdate(Stringsql)方法将指定

表中的数据进行修改

3.任务实施(教师演示、学生操作)

-15-

(1)插入数据库表记录。向jq_user表中漕加一条新的记

录,编写一条完整的SQL语句,并通过Statement执行。

package.cqcvc;

importjava.sql.Conncction;

importjava.sql.DrivcrManagcr;

importjava.sql.SQLException;

importjava.sql.Statement;

publicclassMysqlDemo07{

publicstaticvoidmain(String[]args)throwsException{

Connectionconn=null;

Statementstml=null;

Class.forName("com.mysqLjdbc.Driver");

conn

DriverManager.getConnection("jdbc:mysql://localhost:3306/jiaqicnis'\"root'',"root");

stmt=conn.createbtatementO;

Stringsql="insertintojq_uscr(uscrname,password,email,address)

values(」ier」23;233@;南京路了;

intnum=stmt.executeUpdate(sql);

if(num>0){

System.out.println("数据插入成功)

conn.close();

stmt.closeO;

运行结果如下图所示。

+选项

一TTpidusernamepasswordemailaddtess

□“装银尹复制©删除1zhangsan1231888@重云十成市职业学院

□小接辑新复制份删除2lisi1232222@重去岸放褥

□少装辑尹复制O删除3klkl123kkkOJjjj南滨I§|

□/装辑费复制份删除4wangyong123233@南京;

□力编辑孑复制删除lier233@南京:

£©5123各I

(2)修改数据库表记录。将jq_user表中id=5的记录

password字段的值修改为“123456”,将address字段的内容修

-16-

改为“上海东路100号”,对应的程序代码如下。

package.cqcvc;

importjava.sql.Connection;

importjava.sqLDriverManager;

importjava.sqLStatcmcnt;

publicclassMysqlDemo08{

publicstaticvoidmain(String[]args)throwsException{

Connectionconn=null;

Statementstmt;null;

Class.forNanieC'com.niysql.jdbc.Driver");

conn=

DriverManager.getConnec(ion("jdbc:mysql://localhost:3306/jiaqicms","root","root");

stmt=conn.createS(atement();

Stringsql="updatejq_usersei'password='123456','address'='上海东路

100号'whereid=5";

intnum=stmt.executeUpdate(sql);

if(num>0){

System.out.println("数据修改成功)

conn.close();

stmt.close();

)

)}

运行程序,结果如下图所示。

4—T—►▽idusernamepasswordemailaddrBSS

□。冕辑赳爱制o删除1zhangsan1231888@重开龙市职业学院

□/提辑赳复制Q删除2lisi1232222@重为尾放碑

台|

□炉铝辑承复制O删除3klkl123kkk@jjj南圉

□小纭辑部复制份删除4wangyong123233@南京i

□。娓辑承更制O删除5lier123456233@上海,R路100号

3.删除数据库表字段。将jq_user表中id=4的记录给删

除,对应的代码如下。

package.cqcvc;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sqLStatement;

publicclassMysqlDemo09{

publicstaticvoidmain(Slring[largs)throwsException{

Connectionconn=null;

-17-

Statementstmt=null;

Class.forName("com.mysql.jdbc.Driver");

conn

DriverManager.geiConneciion("jdbc:mysql:〃localhost:3306qiaqicms","root"Jroot");

stmt=conn.createStatement();

Stringsql="dclctcfromjq_uscrwhereid=4";

intnum=stmt.cxccutc(Jpdatc(sql);

if(num>0){

System.out.println("数据删除成功");

conn.closeO;

stint.closeO;

)

I

)

运行结果代码如下图所示。

4—"f—>▼idusernamepasswordemailaddress

□/装箱尹爱制Q删除1zhangsan1231888@重庆j成市职业学院

□/装辑炉复制©删除2lisi1232222@重去岸放碑

各|

□少美辑承舁制O删除3klkl123kkk@jjj南滨;

□〃装密*展制©删除5lier123456233@上海;三珞100号

T全选/全不选选内瓦;?修改O删除易导出

4.任务拓展

(1)防止SQL漏洞

Statement接口用于处理不带参数的静态sql语句,

PreparedStatement接口可以处理带参数的sql语句。Statement

中SQL存在漏洞,会被攻击导致数据泄露SQL会被拼接or

字符。在网站开发中特别要注意此问题,如果是因为这个问题,

造成网站数据泄露造成了损失,就是网站开发人员的失职。如

何规避此问题呢?我们使用PreparedStatement可以防止SQL

-18-

注入。PreparedStatement接口防止SQL注入的本质,把传递

进来的参数当做字符,假设其中存在转义字符,会被直接转义。

卜面通过Statement接口与PreparedStatement接口代码进行的

对比

(1)使用Statement接口登录被SQL注入。

(2)使用PreparedStatement接口防止SQL注入

从数据库的jq_user表中知道,我们的password字段没有

为“1”的内容,但是这里登陆成功了,这就是SQL的注入。

为了防止这种情况,可以使用PreparedStatement接口来实现用

户登录防止SQL注入。

三、教学小结(3分钟)

通过本节课的学习,问学生掌握了哪些知识?

数据库的更新操作C

(2分钟)完成实训二设计信贷数据分析可视化平台用户注册

作业布置

界面

教学反思注重培养学生实践动手能力

-19-

项目四JSP内置对象

主题任务4.4应用连接池驱动MySQL数据库

课时2教学手段启发引导法项目教学法任务教学法

教学方法演示法

教学课型□理论□实训I0一体化口(其它)

知识目标掌握JDBC数据库连接池技术

教学目标能力目标能应用JDBC数据库连接池技术

培养学生具有网络安全意识,提升学生民族自豪感

育人目标

和爱国热情。

教学重点JDBC数据库连接池技术

教学难点JDBC数据库连接池技术

教学过程设计备注

一、创建情境,导入新课(5分钟)

前面已经学习了数据库的连接,还可以采用另外一技术技

术实现数据库的连接一连接池技术。

二、教学实施(80分钟)

1.任务演示

本任务在实现JDBC连接池,实现对MySQL数据库的访

问,如图所示。

-20-

13puk>X±cclassDnui.dU'ti.1{

>14pn±va±e±cConnectionconn=null;

pr*±va±eDa^aSounceda±aSounce;

16->s±a±±c<

T7

18七・y{

19

20InputStreamis=

21DnuidU'ti1.class.©wtClassLoader《).Re-tResounceAsS,tneam(•"dnuid.pnopenties");

22Pnopentiespnop=newPnoper,^xes()j

23prop.load(is);

2Ada-taSounce♦DnuidDataSounc^Frictony.cr^^at:^Da-taSounc^(pnop)j

2S:w.tuh(匚Kuup七工onu){

26e.printS,tackTrace();

27}

28}

29

3©//淤取连指

31一publ±c,金a金divConnectiongetConnection()±hr*owsException(

32

Connectxonconn=dataSounce.go±Connectxon()j

34

35r*o±ur*nconn

36

.37}

2.知识准备

(1)JDBC数据库连接池的必要性

我们在前面应用通用方法访问数据库的时候,主要通过以

下三个步骤:

第一在主程序中建立数据库连接;

第二进行SQL操作;

第三断开数据库连接.

应用这种模式开发,主要存在以下问题。

■普通的JDBC数据库连接使用DriverManager来获取,

每次向数据库建立连接的时候都要将Connection加

载到内存中,再验证用户名和密码(得花费0.05s〜1s

的时间)。需要数据库连接的时候,就向数据库要求一

个,执行完成后再断开连接。这样的方式将会消耗大

量的资源和时间。数据库的连接资源并没有得到很好

的重复利用。若同时有几百人甚至几千人在线,频繁

的进行数据库连接操作将占用很多的系统资源,严重

的甚至会造成服务器的崩溃。

-21-

■对于每一次数据库连接,使用完后都得断开。否则,如

果程序出现异常而未能关闭,将会导致数据库系统中

的内存泄漏,最终将导致重启数据库。

■这种开发不能控制被创建的连接对象数,系统资源会被

毫无顾及的分配出去,如连接过多,也可能导致内存

泄漏,服务器崩溃。

■为解决传统开发中的数据库连接问题,可以采用数据库

连接池技术。

(2)数据库连接池技术

数据库连接池的基本思想:就是为数据库连接建立一个

“缓冲池预先在缓冲池中放入一定数量的连接,当需要建立

数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再

放回去。

在项目的resources资源目录下创建druid的properties

配置文件,properties配置文件可以随意命名,但是文件内容

中每项配置的key必须是指定的名称,这里我使用

perties作为配置文件的名称,其文件内容如下所示:

#数据库连接参数

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/tcstdb

username=root

password=123456

#初始化连接的数量initialSize=3

#最大连接的数量maxActive=20

-22-

#获取连接的最大等待时间(毫秒)

maxWait=3000

有了配置文件以后,可以使用如下代码读取配置文件,并

得到数据源对象,然后通过数据源对象获取数据库连接对象。

〃加载配置文件

InputStreamis=

druidtest.class.getClassLoader().getResourceAsStream(pe

rties1');

Propertiesprop=newProperties();

prop.load(is);

//根据配置文件内容,创建出数据源对象

DataSourcedataSource=

DruidDataSourceFactory.createDataSource(prop);

〃通过数据源对象获取数据库连接

〃如果连接池中的连接已经被用完,则会等待一定的时间

(所配置的时间)

〃如果等待超时,就会抛出异常

Connectionconn=dataSource.getConnection();

System.out.println(conn);

有了连接对象以后,就可以很方面的操作数据库了。

3.任务实施(教师演示、学生操作)

第一步创建名为为DruidUtil的工具类,代码如下。

package.cqcvc;

importjava.io.InputStream;

importjava.sql.Connection;

importjava.sql.PreparedStatement;

importjava.sql.ResuhSel;

-23-

importjava.ulil.Properties;

importjavax.sql.DataSource;

importcorn.alibaba.druid.pool.DruidDataSourceFactory;

publicclassDruidUtil{

privatestaticConnectionconn=null;

privatestaticDataSourccdataSourcc;

static{

try(

InputStreamis=

DiuidUtil.class.getClassLoader().getResourceAsStream("drui(.perties");

Propertiesprop=newProperties();

prop.load(is);

dataSource=DruidDataSourceFactory.createDalaSource(prop);

)catch(Exceptione){

//TODOAuto-generatedcatchblock

e.pnntStacklrace();

)

)

〃获取连接

publicstaticConnectiongetConnection()throwsException{

Connectionconn=dataSource.getConnection();

returnconn;

I

publicstaticvoidmyclose(Connectionconn,ResultSetrs.PreparedStatementpmst)

throwsException(

if(conn!=null){

conn.close();

)

if(rs!=null){

rs.closc();

)

if(pmst!=null){

pmst.closeO;

第二步,编写测试代码

package.cqcvc;

importjava.sqLConnection;

importjava.sqLPreparedStatement;

-24-

importjava.sql.ResullSet;

publicclassMysqlDemol1{

publicstaticvoidmain(String[]args)throwsException{

DruidUlildb=newDruidUtil();

Connectionconn=db.getConnection();

Stringsql="sclcct*frcmjq_uscr";

PrcparcdStatcmcntpmst=conn.prcparcStatcmcnt(sql);

ResultSetrs=pmst.executcQuery();

while(rs.next()){

System.out.println("用户名:,,+rs.getString("username")+",邮箱:

,,+rs.getString("email"));

)

db.myclose(conn,rs,pmst);

)

1

运行程序,结果如下图所示。

〈terminated〉MysqlDemol1[JavaApplication]D:\JSP\eclipse

7月16,20224:22:22下午com.alibaba.drui

信息:{dataSource-1}inited

用户名:zhangsan,邮箱:1888@

用户名:lisi,由5箱:2222@

用户名:klkl,邮箱:kkk@jjj

用户名:lier,邮箱:233@

(1)防止SQL漏洞

Statement接口用于处理不带参数的静态sql语句,

PreparedStatement接口可以处理带参数的sql语句。Statement

中SQL存在漏洞,会被攻击导致数据泄露SQL会被拼接or

字符。在网站开发中特别要注意此问题,如果是因为这个问题,

造成网站数据泄露造成了损失,就是网站开发人员的失职。如

何规避此问题呢?我们使用PreparedStatement可以防止SQL

注入。PreparedStatement接口防止SQL注入的本质,把传递

进来的参数当做字符,假设其中存在转义字符,会被直接转义。

-25-

下面通过Statement接口与PreparedStatement接口代码进行的

对比

(3)使用Statement接口登录被SQL注入。

(4)使用PreparedStatement接口防止SQL注入

从数据库的jq_user表中知道,我们的password字段没有

为“1”的内容,但是这里登陆成功了,这就是SQL的注入。

为了防止这种情况,可以使用PreparedStatement接口来实现用

户登录防止SQL注入。

4.任务拓展

1.ResourceBundle.getBundle()方法的应用

对于读取配置文件,我们也可以使用

ResourceBundle.getBundle。方法进行读取,读取方法我们前面

已经给出过了c

第一步创建名为DruidUtils的工具类。

第二步编写测试方法。

运行程序,结果如下图所示。

aX%|BeO融口喇|rf

〈terminated〉MysqlDemolO[JavaApplication]D:\JSP\eclipse-2022-6\plugins\org.ecipse.jus^.op

7月16,20224:26:33下午com.alibaba.druid.pool.DruidDataSource

信息:{dataSource-1}inited

用户名:zhangsan,邮箱:T888,地址:重庆城市融业学院

用户名:lisi,邮箱:2222@,地址:重庆解放碑

用户名:klkl,邮箱:kkk@jjj,地址:南滨路

用户名:lier,由卜箱:233@,地址:上海东路10骋

三、教学小结(3分钟)

通过本节课的学习,问学生掌握了哪些知识?

-26-

数据库连接池技术的应用。

作业布置(2分钟)完成实训一创建数据库并进行相关数据库的操作

教学反思注重培养学生实践动手能力

项目五JSP内置对象

主题任务5.1应用JavaBean计算梯形的面积

课时2教学手段启发引导法项目教学法任务教学法

教学方法演示法

教学课型□理论□实训10一体化口(其它)

1.熟悉JavaBean的基本格式

2.熟悉JavaBean的分类

知识目标

3.掌握JavaBean规范编写

教学目标4.掌握JavaBean的应用

能力目标能综合应用JavaBean完成项目任务

培养学生代码的规范严谨性,提高学生的分析问

育人目标

题,解决问题的能力

-27-

教学重点能综合应用JavaBean完成项目任务

教学难点能综合应用JavaBean完成项目任务

教学过程设计备注

一、创建情境,导入新课(5分钟)

在数学中平行四边形面积、三角形面积、梯形的面积的计

算…,从而引出本节课的内容。

二、教学实施(80分钟)

-1.任务演示

编写一个JSP页面,该页面提供一个表单,用户可以通过

表单设置梯形的上底、下底和高的值,并提交给本JSP页面,

该JSP页面将计算梯形面积的任务交给一个pagebean去完成。

JSP页面使用getProperty动作标记显示pagebean中的数据,

如图所示

B8http://localhost:8080/^@fi/Area.jsp

梯形的上底:20.0

梯形的下底:30.0

梯形的高50

梯形的面积:125.0

2.知识准备

(1)JavaBean介绍

(2)JavaBean的分类

(3)JavaBean的规范

孟子曰“不以规矩,不能成方圆”,同样,在设计JavaBean

-28-

时,需要遵循有关约定:

■使用package语句进行打包

■类中声明的方法的访问属

温馨提示

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

评论

0/150

提交评论