黑马程序员技术交流社区
标题: 【石家庄校区】MVC/事务-JDBC-AJAX [打印本页]
作者: zhouxiaomeng 时间: 2018-5-27 16:31
标题: 【石家庄校区】MVC/事务-JDBC-AJAX
本帖最后由 小石姐姐 于 2018-5-28 15:19 编辑
事务的四大特性:
原子性:强调事务的不可分割.
一致性:强调事务执行前后,数据的完整性
隔离性:一个事务的执行,不应该受到其他事务的干扰.
持久性:事务一旦结束(提交/回滚)数据就持久保持到了数据库.
如果不考虑事务的隔离性,引发一些安全性问题:
一类是读问题:
*脏读;一个事务读到了另一个还没有提交的数据.
*不可重复读;一个事务读到了另一个事务已经提交的update的数据,导致在当前事务中多次查询结果不一致
*虚读/幻读:一个事务读到了另一个事务已经提交的insert的数据,导致了在当前的事务中多次查询结果不一致.
一类的写问题:
*引发两个类丢失更新:
解决引发的读问题:
设置事务的隔离级别:
*read uncommited:未提交读.脏读,不可重复读,虚读都可能发生;
*read commited:已提交读,不可重复读和虚读都有可能发生.
*repeatable read :可重复读,避免脏读,不可重复读,但是虚读有可能发生.
*serializable:串行化,避免脏读,不可重读,虚读的发生.
MYSQL默认隔离级别:repeatable read.
JDBC事务管理setAutoCommit(false)开启事务
commit():提交事务;
rollback():回滚
商品分页代码分析
分页功能的实现:
* 物理分页:一次只查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 关键字.
异步和同步的区别:
异步校验用户名是否存在.
什么是AJAX:异步的JavaScript And XML.
使用的是老的技术,用的是新思想.
了解同步和异步的区别:
*参考图1.
AJAX的功能:完成页面的局部刷新.不中断用户的体验.
EL表达式只能在JSP文件中用,不能再JS文件中用.
JQuery中的AJAX:
load();
get();
post();
* ajax();
* $.ajax({
url:,
data:,
success:function(){
}
});
省市联动:
使用工具生成XML文件:
通常使用xStream工具,将集合 数组 对象转成xml.
步骤分析:
步骤一:使用注册页面中的省市的下拉列表.
步骤二:当省份发送变化,出发一个事件.
步骤三:将选择的省份的信息传入到Servlet中;
步骤四:根据省份信息查询市信息.
步骤五:将查询到的市的信息转成xml.
步骤六:获得xml的指定信息,显示到第二个列表中.
JSON是一种轻量级的数据交换格式.JS可以直接识别.
JSON 的数据格式对象表示为键值对
数据由逗号分隔
花括号保存对象
方括号保存数组
{"id":1,"name":aaa}
[{"id":1,"name":aaa},{"id":3,"name":bbb}]
JSON的生成工具:
JSONLIB转换JSON数据:
*JSONArray:将转数组,list转换成JSON
*JSONObject:将对象和map集合转换成JSON
用json省市联动$.post(
"/Ajax/CityServlet",//跳转路径
{"pid":pid},//传递参数
function (data) {//回调函数,data为本次请求的响应.
var $city = $("#city"); //获得city下拉框的控制权
$city.html("<option value=''>-请选择-</option>");//每次选择前清空下
$(data).each(function(i,n){
$city.append("<option value='"+n.cid+"'>"+n.cname+"</option>")
})
},"json");监听器监听器;就是一个java类,监听其他java的状态的变化.
用途:
主要应用在图形化的界面中比较多.
*GUI,Android.
事件源:值得是被监听的对象(汽车)
监听器:指的是监听的对象(报警器)
事件源与监听器的绑定:就是在汽车上安装报警器.
事件:事件源的改变(踹汽车一脚)
web中的监听器事件源:Servlet中的三个域对象ServletContext,HttpSession,ServletRequest
事件源和监听器的绑定:配置
分类:三类八种.
【ServletContext对象的创建和销毁】:
* 创建:服务器启动的时候,服务器为每个WEB应用创建一个属于该web项目的对象ServletContext.
* 销毁:服务器关闭或者项目从服务器中移除的时候.
配置监听器:
<!-- 配置监听器 -->
<listener>
<listener-class>com.itheima.weblistener.MyServletContextListener</listener-class>
</listener>
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |