## 多表操作 (DBUtils框架)##
# 基本概念
	即数据库中一对多及多对多的表之间的操作;
# 基本开发步骤;
	>> 添加jar包;
	>> 添加Util工具类;
	>> 添加domain中的基础类;
		|-- customer
		|-- orders
		|-- 添加素材中的表;
	>> 分析问题;
		|-- 类与类之间没有外键关系;
		|-- 那么如何完成表与表之间的关联呢?
			|-- 类与类之间有的关系
				|-- 继承;
				|-- 包含与引用;
			|-- 可以通过一个List集合来包含用户的多个订单;
				|-- 在订单类中加入顾客的对象属性,即可
				确认该订单是哪位顾客下的;
	>> 建立一个Test包;
	>> 建立一个Dao的实现类;
		|-- 在当中添加实现级联的方法;
		|-- 实现关联查询方法;
			|-- 解释;
				当查询客户的时候,连同客户的订单一起查询出来;
	>> 分析问题;
		|-- 希望将查询顾客和顾客订单分离开;
			
		|-- 解决
			|-- 在方法中设置flag;
# 多对多关系的维护;
	>> 基本分析;
		|-- 老师的类中添加一个集合用于存放学生的信息;
		|-- 学生的类中添加一个集合用于存放老师的信息;
	
	
## 分页 ##
# 基本概念;
	因为数据库中的数据很多,如果一次性全部加入到内存中,
	会导致内存溢出;所以需要将我们指定的内容加载到内存中
	来进行操作;
# 如何做分页;
	>> 从数据库层面的思考;
		|-- select * from account limit startInde,size;
			startIndex:
>> 将分页的sql语句发送到服务器上,自然会分页进行处理并返回;
>> 在内存中进行处理,只加载前10条(该方法并未解决本质问题);
# 代码的问题;
	>> 新建一个web项目;
	>> 导入jar包,配置文件,Util工具类;
	>> 新建一个分页主键 PageBean.java 并序列化;
		|-- 定义当前页变量;
		|-- 定义当前页显示的数量变量;
		|-- 定义上一页的变量;
		|-- 定义下一页的变量;
		|-- 定义总页数变量;
		|-- 定义总记录数的变量;
		|-- 定义当前页的记录集合;
		|-- 定义当前页第一条记录的索引 --- 用于给limit startIndex 使用;
	>> 问题:
		页面的计算代码需要放在什么地方?
		|-- 放在get方法中,因为EL表达式会默认调用get方法;
	>> 定义DAO层;
		|-- 在实现类中定义获取总记录数的方法;
		|-- 定义查询当前页的总记录数;
	
	>> 定义业务逻辑层;
	>> 定义Servlet层,实现视图代码;
		
## 监听器 (web三大组件之一)##
	# 基础知识;
		
	# 自定义监听器;
		>> 定义一个事件;
		>> 定义一个用于存储事件源的对象;
		>> 定义一个学生监听器的接口;
			|-- 定义监听学生学习的方法;
			|-- 定义监听学生吃饭的方法;
>> 定义一个学生类;
	# 监听器的编写步骤;
		>> 写类,实现相应的Listener接口;
		>> 配置web.xml文件;
		
	# Servlet中的8个监听器;
		|-- 第一组;
			>> ServletContextListener;
			>> HttpSessionListener;
			>> ServletReuestListener;
		|-- 第二组;
			>> ServletContextAttributeListener;
			>> HttpSessionAttrbuteListener;
			>> ServletRequestAttributeListener;
		|-- 第三组 --- 这两个监听器不用注册;
			>> HttpSessionBindingListener;
			>> HttpSessionActivationListener;
## 踢人综合示例(使用监听器实现) ##
# 开发步骤;
	>> domain包中建立User类
	>> 建立LoginServlet类;
	>> 建立一个监听器类;
原文:http://www.cnblogs.com/bwcx1375/p/7134323.html