十九JNDI、连接池、javaBean
1.JNDI
Java Naming and Directory Interface java命名和目录接口
是一组在java应用中访问命名和目录
通过名将将资源与服务进行关联
1.修改context.xml
tomcat\conf\context.xml或WebContent\META-INF/\context.xml文件
<Context>
<Environment name= "tjndi" value= "hello JNDI"
type= "java.lang.String" />
</Context>
2.取出资源
<%
//1. 取得Context对象
Context ct=new InitialContext();
//2. 查找资源(java:comp/env格式是固定的 )
String res=(String)ct.lookup("java:comp/env/tjndi");
//3. 输出资源内容
out.println("内容为: "+res);
%>
2.传统JDBC
1.步骤
1.加载数据库驱动,数据库驱动程序通过CLASSPATH配置
2.通过DriverManager类取得数据库连接对象
3.通过Connection实例化PrepareStatement对象,编写SQL命令操作数据库
4.数据库属于资源操作,操作完成后要进行数据库的关闭以释放资源
2.缺点
每一次请求时均需与数据库进行连接,资源占用较多
每当并发访问数量较大时,网站速度受到极大影响
在访问结束时必须要关闭连接释放资源
系统的安全性和稳定性相对较差
3.连接池
在一个对象池中保存多个数据库的连接,操作数据库直接从链接池中取出一个数据库连接,操作完成直接放回不用关闭
在内存中预设一定的连接数量,以备用户在进行数据量操作时直接使用
1.性能
通过连接池管理数据库的连接与释放、提高了系统资源的使用效率
数据库操作性能得到提升
2.工作原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vuOmYCDa-1604148970044)(C:\Users\lgm\AppData\Roaming\Typora\typora-user-images\1604141109123.png)]
4.连接对象的创建
1.数据源(DataSource)
javax.sql.DataSource接口负责建立与数据库的连接
从Tomcat的数据源获得连接
把连接保存在链接池中
使用JNDI获得DataSource引用
常用方法
Connection getConnection() 建立与Data对象表示的数据源的连接
Connection getConnection(String name,String password) 建立与DataSource对象表示的数据源的连接
2.创建连接步骤
1.配置 META-INF/context.xml
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name= "jdbc/stu"
auth= "Container"
type= "javax.sql.DataSource"
maxActive= "100"
maxIdle= "30"
maxWait= "10000"
username= "root"
password= "123"
driverClassName= "com.mysql.jdbc.Driver"
url= "jdbc:mysql://localhost:3306/student" />
name 指定 Resource 的 JNDI 名称auth指定管理 Resource 的 Manager(Container:由容器创建和管理
Application 由 Web 应用创建和管理)
type 指定 Resource 所属的 Java 类
maxActive 指定连接池中处于活动状态的数据库连接的最大数目
maxIdle 指定连接池中处于空闲状态的数据库连接的最大数目
maxWait 指定连接池中的连接处于空闲的最长时间,超过这个时间会抛出异常,取值为-1,表示可以无限期等待
2.配置web.xml
<resource-ref>
<res-ref-name>jdbc/stu</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref
3.得到连接
<body>
<%
//1. 取得Context对象
Context ct=new InitialContext();
//2. 查找资源(java:comp/env格式是固定的 )
DataSource res=(DataSource)ct.lookup("java:comp/env/jdbc/stu");
//3. 从数据源中取出连接对象
Connection conn=res.getConnection();
//4. 测试
if(conn!= null)
out.println("数据库连接成功!");
else
out.println("数据库连接失败!");
%>
</body>
5.javaBean
可重用的组件,减少代码的重复
1.满足条件
类用public修饰
属性须私有化,get及set方法
必须存在一个无参的构造方法
2.优点
- 减少代码冗余
- 功能区分明确
- 提高代码维护性
3.分类
-
封装数据
表名–>类名
字段名–>属性名
属性私有化,get/set方法
-
封装业务
实现特定功能的方法
通常与一个封装数据的javaBean对应
4.业务分层
数据层(DAO)----将数据库的数据进行封装
业务层(Service)----根据实际业务需求调用DAO层相关操作
视图层(JSP页面)----显示有关数据的页面