MVC:
M:Model:模型层
V:View:视图层
C:Controller:控制层
事务指的是逻辑上的一组操作,组成这组操作的各个逻辑单元要么一起成功,要么一起失败
MYSQL的事务管理有两种方式:(MYSQL数据库事务默认是自动提交的.Oracle数据库事务默认是不自动提交.)
手动开启事务
start transaction; -- 开启事务
多条sql;
commit/rollback;
设置一个自动提交参数
show variables like '%commit%'; -- 查看与commit相关参数.
set autocommit = 0; -- 将autocommit参数设置为OFF
事务特性:原子性:强调事务的不可分割.
一致性:强调的是事务的执行的前后,数据的完整性要保持一致.
隔离性:一个事务的执行不应该受到其他事务的干扰.
持久性:事务一旦结束(提交/回滚)数据就持久保持到了数据库.
如果不考虑事务的隔离性,引发一些安全性问题:一类读问题:
脏读 :一个事务读到另一个事务还没有提交的数据.
不可重复读 :一个事务读到了另一个事务已经提交的update的数据,导致在当前的事务中多次查询结果不一致.
虚读/幻读 :一个事务读到另一个事务已经提交的insert的数据,导致在当前的事务中多次的查询结果不一致.
一类写问题:
引发两类丢失更新:
解决引发的读问题:设置事务的隔离级别:
read uncommitted :未提交读.脏读,不可重复读,虚读都可能发生.
read committed :已提交读.避免脏读.但是不可重复读和虚读有可能发生.
repeatable read :可重复读.避免脏读,不可重复读.但是虚读有可能发生.
serializable :串行化的.避免脏读,不可重复读,虚读的发生.
MYSQL隔离级别:repeatable read Oracle隔离级别:read committed
创建工程导入jar包.
msysql驱动
c3p0的包
dbutils的包
beanUtils的包:两个.
JSTL的包:两个
分页功能的实现:物理分页:一次只查10条记录,点击下一页,再去查询后10条.使用SQL语句进行控制的分页.
缺点:经常需要和数据库交互.
优点:数据量特别大,不会导致内存的溢出.
逻辑分页:一次性将所有数据全都查询出来,根据需要进行截取.List集合进行控制. subList();
缺点:数据量如果特别大,容易导致内存溢出.
优点:与数据库交互次数少.
不同的数据库对分页的语句也是不一样的:
MYSQL进行分页: 使用limit关键字.
select * from xxx where .. Group by ... Having ... Order by ... limit a,b; -- a:从哪开始 b:查询的记录数.
根据页数计算 limit后面的两个参数:
currPage begin pageSize
1 0 10
2 10 10
3 20 10
begin = (currPage - 1) * pageSize;
参数的传递:
前台--->后台:currPage
后台--->前台:currPage,totalPage(总页数),totalCount(总记录数),pageSize,List集合.
使用JavaBean封装参数:
后台--->前台:传递一个JavaBean就可以.
Oracle进行分页: 使用SQL语句嵌套.
SQL Server数据库进行分页: 使用 top 关键字.
JDBC的添加,修改,删除查询.查询:
在首页点击查询:提交到Servlet--调用业务层--调用DAO
添加:
在首页点击添加:提交到添加的JSP.在JSP中输入一些信息.提交到Servlet.
在Servlet中接收参数,封装参数,调用业务层,调用DAO.
使用令牌机制完成重复提交的问题.
修改:
在列表页面中点击编辑:提交到Servlet.查询某个商品.显示到页面.
在页面中输入一些信息,点击确定.提交到修改的Servlet.
接收参数,封装,调用业务层,调用DAO.
删除:
在列表页面中点击删除:提交到Servlet.
在Servlet中接收id,调用业务层,调用DAO.
使用JS进行提示.
分页查询:
分页分类:
一次性查询几条记录.
一次性查询所有记录.对记录进行切分.
一次性查询几条:limit
封装一个分页的Bean:
提供参数:currPage,pageSize,totalCount,totalPage,List.
在业务层需要将PageBean进行封装.
使用AJAX: XMLHttpRequest:
属性:
onreadystatechange :当对象的状态改变的时候会触发.
readyState :记录的是对象的状态.
status :状态码.
responseText :响应文本.
responseXML :响应的XML.
方法:
open(“请求方式”,”请求路径”,”是否异步”);
send(“提交的参数”);
setRequestHeader(“头信息”,”头的值”);
JQuery的AJAX部分的API:$(“”).load(url,data,function(){});
$.get(url,data,function(){},dataType);
$.post(url,data,function(){},dataType);
$.ajax();
Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将javaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件,使得XML序列化不再繁琐
JQuery的AJAX
JQuery的AJAX部分方法:
Jq的对象.load(路径,参数,回调函数);
$.get(路径,参数,回调函数,数据类型);
$.post(路径,参数,回调函数,数据类型);
$.ajax();
serialize(); -- JQ的AJAX传递参数的时候需要使用的方法.
JSONLIB 转换JSON数据:
JSONArray :将数组或List集合转成JSON.
JSONObject :将对象或Map集合转成JSON.