DBUtils框架

主要知识点:
一、多表关联操作(DBUtils框架)
1.一对多关系 ***
2.多对多关系 ***
3.一对一关系
二、分页
三、监听器组件(web三大组件之一)
四、踢人综合示例(监听器实现)

一.分页核心类总结:
1.分页必要性
select * from account;

分页的结果就是要让指定的记录加载到内存
1.人的习惯
2.内存的限度(核心问题)
3.屏幕的限度

2.如何做分页?
1.数据库层面的考虑
select * from account limit startIndex,size;//只是针对MySql而言
startIndex:起始索引(从0开始),代表第一行
size:记录数

select * from account limit 0,3; 第一页(1,2,3)
select * from account limit 3,3; 第二页(4,5,6)
startIndex:(pageNo:第几页) (pageNo-1)*size

2.程序代码上思考
1. 直接发送这样的sql语句
select * from account limit startIndex,size;
ResultSet中存的数据就是指定的记录

2. 发送一个查询所有的sql语句(一般不考虑,因为没有解决内存本质问题)
select * from account;
ResultSet 结果集中
在内存中处理结果(只加载前10条)

3.代码怎么写?

public class PageBean {
private int pageNo=1;
private int pageSize=3;
private int prep;
private int nextp;
private int startIndex;
private int totalRecordes;
private int totalPage;

private int startPageNo;
private int endPageNo;

private String url ;
private List recordes;

public int getStartPageNo() {
if(getTotalPage()<9){
startPageNo = 1;
endPageNo =getTotalPage();
}else{
startPageNo = pageNo-4;
endPageNo = pageNo+4;
if(startPageNo<1){
startPageNo = 1;
endPageNo = startPageNo+8;
}
if(endPageNo>getTotalPage()){
endPageNo=getTotalPage();
startPageNo = endPageNo-8;
}
}
return startPageNo;
}

public int getPrep() {
if(pageNo<=1){
prep=1;
}else{
prep=pageNo-1;
}
return prep;
}

public int getNextp() {
if(pageNo>=getTotalPage()){
nextp=totalPage;
}else{
nextp=pageNo+1;
}
return nextp;
}

public int getStartIndex() {
startIndex = (pageNo-1)*pageSize;
return startIndex;
}

public int getTotalPage() {
if(totalRecordes%pageSize==0){
totalPage = totalRecordes/pageSize;
}else{
totalPage = totalRecordes/pageSize+1;
}
return totalPage;
}

分离出去的页面:
<div style="text-align:center;">
第${pb.pageNo }/共${pb.totalPage }页 <a href="${pageContext.request.contextPath }${pb.url}?pageNo=${pb.prep}">上一页</a> &nbsp;&nbsp;&nbsp;
<c:forEach begin="${pb.startPageNo }" end="${pb.endPageNo }" var="vv">
<a href="${pageContext.request.contextPath}${pb.url}?pageNo=${vv}">${vv }</a> &nbsp;&nbsp;
</c:forEach>

<a href="${pageContext.request.contextPath }${pb.url}?pageNo=${pb.nextp}">下一页</a>
<select onchange="jump(this)">
<c:forEach begin="1" end="${pb.totalPage }" var="v">
<option value="${v }" ${pb.pageNo==v?‘selected‘:‘‘ }>${v }</option>
</c:forEach>
</select>
<script>
function jump(cobj){
window.location.href="${pageContext.request.contextPath}${pb.url}?pageNo="+cobj.value;
}
</script>
</div>

五、监听器概述(观察者模式)
事件:踢
事件源:人
事件处理程序: 女主人出来了,我跑了
监听器:相当于报警器

写一个自定义的监听程序,用于监听学生的学习状态
六、Servlet规范中的8个监听器
1、监听ServletContext、HttpSession、ServletRequest对象的创建和销毁的监听器
ServletContextListener:
HttpSessionListener:
ServletRequestListener:

//写一个Listener基本步骤:
// 1.写类 (实现相应Listener接口)
// 2.配置web.xml <listener><listener-class>包名.类名</listener-class></listener>

2、监听ServletContext、HttpSession、ServletRequest域中数据变化的监听器
ServletContextAttributeListener:
HttpSessionAttributeListener:user
ServletRequestAttributeListener:

3、感知型监听器。这些监听器不需要注册.给普通类用的。
HttpSessionBindingListener:普通类实现了该接口,感知自己何时被HttpSession绑和解绑
HttpSessionActivationListener:普通类实现了该接口,感知自己何时随着HttpSession钝化和激活。

七、显示在线用户,并能踢人
login.jsp(提供登录界面)--------------->LoginServlet----------------->HttpSession(存入登录的用户信息)

显示用户列表(所有登录在线的用户都要显示出来)------------>ServletContext域(何时加入到这个域中???)

------------>登录的时候就要加入到ServletContext---------->为了在登录时就可以向servletContext域中加入数据
------------>加入一个监听器(加什么样监听器?)-------->HttpSessionAttributeListener

时间: 2024-12-28 01:51:03

DBUtils框架的相关文章

Apache—DBUtils框架简介

转载自:http://blog.csdn.net/fengdongkun/article/details/8236216 Apache—DBUtils框架简介.DbUtils类.QueryRunner类 .ResultSetHandler接口 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能.因此dbutils成为很多不喜欢hibernat

javaweb学习总结(四十一)——Apache的DBUtils框架学习

一.commons-dbutils简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能.因此dbutils成为很多不喜欢hibernate的公司的首选. commons-dbutilsAPI介绍: org.apache.commons.dbutils.QueryRunner org.apache.commons.dbutils.Resul

Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用

前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WH 一.JDBC是什么? Java Data Base Connectivity,java数据库连接,在需要存储一些数据,或者拿到一些数据的时候,就需要往数据库里存取数据,那么java如何连接数据库呢?需要哪些步骤? 1.注册驱动 什么是驱动? 驱动就是JDBC实现类,通俗点讲,就是能够连接到数据库功能的东西就是驱动,由于市面上有很多数据库,Oracle.MySql等等,所以java就有一个连接数据库

深入分析JavaWeb Item34 -- DBUtils框架学习

一.commons-dbutils简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能.因此dbutils成为很多不喜欢hibernate的公司的首选. commons-dbutilsAPI介绍: org.apache.commons.dbutils.QueryRunner org.apache.commons.dbutils.Resul

Apache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口

Apache—DBUtils框架简介.DbUtils类.QueryRunner类 .ResultSetHandler接口 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能.因此dbutils成为很多不喜欢hibernate的公司的首选. API介绍: org.apache.commons.dbutils.QueryRunner --BDMa

JDBC【数据库连接池、DbUtils框架、分页】

1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的... 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接池 编写连接池需实现java.sql.DataSource接口 创建批量的Connection用LinkedList保存[既然是个池,当然用集合保存..LinkedList底层是链表,对增删性能较好] 实现getConnetion(),让getConnection()每次调用,都是在LinkedLi

你不知道的DBUtils框架

DBUtils能干啥 Commons DbUtils库是 Apache 组织提供的一个开源 JDBC工具类库,它是结合连接池 C3P0 使用工具类.它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能.它有三个核心功能,刚好用于解决项目实践中很容易碰到的问题. QueryRunner 中提供对 sql 语句操作的 api ResultSetHandler 接口,用于定义 select 操作后,怎样封装结果集 定义了关闭资源与事务处

DBUtils框架的使用(下)

刚才讲了使用QueryRunner插入.修改.更新数据,现在来学习一下使用QueryRunner进行数据库表查询. 通过QueryRunner类的query()方法即可完成数据库表的查询操作,但是在查询的时候需要实现ResultSetHandler接口来将结果集封装成对象.可以通过自己实现接口,但很显然,我们应该使用DBUtils工具包提供的实现类来实现封装. 在DBUtils框架中,共提供了九个ResultSetHandler的实现类. ArrayHandler:把结果集中的第一行数据转成对象

DBUtils框架的使用(上)

昨天做了这么多的铺垫,当然就是为了引出今天的DBUtils框架了,它的实现原理跟我们编写的简易框架是类似的. 话不多说,进入正题. commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能.因此dbutils成为很多不喜欢hibernate的公司的首选. jar包下载地址:链接:https://pan.baidu.com/s/1BKtq_VoBw5