A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 账号随机生成 于 2018-5-27 16:49 编辑

day19-MVC和事务


JSP的模式:
* JSP的设计模式:
    * JSP的模式一:JSP + JavaBean设计模式:
    * JSP的模式二:JSP + Servlet + JavaBean设计模式:MVC设计模式.
        * M:Model
        * V:View
        * C:Controller
    * MVC和EE开发三层结构的关系:
    * 反射:(*****)
        * 获得类的字节码对象:Class对象.三种获得的方式.
            * 类名.class;
            * 类的实例.getClass();
            * Class.forName();
        * 获得构造器:Constructor
        * 获得属性:Field
        * 获得方法:Method
JDBC的事务管理:
    * 事务的概念:指的是逻辑上的一组操作,要么一起成功,要么一起失败.
    * 事务的特性:
        * 原子性:事务的不可分割
        * 一致性:事务执行的前后,数据完整性保持一致.
        * 隔离性:一个事务的执行不应该受到另一个事务的干扰
        * 持久性:事务一旦结束,将会永久修改到数据库.
    * 如果不考虑隔离性:
        * 脏读                :一个事务读到另一个未提交的数据.
        * 不可重复读        :一个事务读到另一个事务已经提交的update的数据,导致多次的查询结果不一致.
        * 虚读                :一个事务读到另一个事务已经提交的insert的数据,导致多次的查询结果不一致.
    * 解决读问题:
        * 未提交读:以上情况都能发生.
        * 已提交读:解决脏读,但是不可重复读和虚读有可能发生
        * 重复读:解决脏读和不可重复读,但是虚读有可能发生.
        * 串行化:可以解决以上的所有情况.
    * JDBC进行事务的管理:
        * Connection:
            * setAutoCommit(boolean flag);
            * commit();
            * rollback();
    * DBUtils进行的事务的管理:
事务
        概念
                是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行。
        My SQL中操作事务
                注意:MySQL中的事务默认是自动提交的
                事务相关命令
                        show variables like '%commit%';
                        SET autocommit=0;
                        start transaction;
                        commit/rollback;
                        显示事务模式
                        设置事务模式 0/1  不自动提交/自动提交
                        开始事务
                        提交/回滚
                操作步骤
                        * 一种:使用命令的方式.
start transaction;
update account set money = money - 1000 where name = 'zhangsan';
update account set money = money + 1000 where name = 'lisi';
rollback;
                        * 二种:设置autocommit参数.
set autocommit = 0;
update account set money = money - 1000 where name = 'zhangsan';
update account set money = money + 1000 where name = 'lisi';
rollback;
        JDBC中操作事务
                相关方法
                        void setAutoCommit(boolean flag);
                        void commit();
                        void rollback();
                        void rollback(SavePoint sp);
                        SavePoint setSavePoint();
                        设置自动提交
                        提交
                        回滚
                        回滚到保存点
                        设置保存点
        事务的特性
                1原子性

整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
//-----------------------
2一致性

在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
//-----------------------
3隔离性

隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
//-----------------------
4持久性
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
由于一项操作通常会包含许多子操作,而这些子操作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新以及修改的资料一次操作完毕,但实际上并不可行。
目前主要有两种方式实现ACID:第一种是Write ahead logging,也就是日志式的方式。第二种是Shadow paging。
        事务并发时的问题
                脏读:                        一个事务读到了另一个事务未提交的数据.
                不可重复读:        一个事务读到了另一个事务已经提交的数据(update),导致两次查询的结果不一致.
                幻读(虚读):        一个事务读到了另一个事务已经提交的数据(insert),导致查询的总记录数变化.
        隔离级别
                read uncommitted :未提交读.脏读、不可重复读、虚读都有可能发生.
                read committed:提交读.避免脏读,但是不可重复读和虚读是有可能发生的.
                repeatable read        :可重复读.避免脏读不可重复读但是虚读有可能发生
                serializable:串行的.避免脏读、不可重复读和虚读.
                相关命令
                        MySQL的默认隔离级别为Repeatable read,可以通过下面语句查看:
select @@session.tx_isolation
select @@global.tx_isolation

也可以通过下面语句来设置当前连接的隔离级别:
set global transaction isolation level [4选1]
set session transaction isolation level [4选1]

                        void setTransactionIsolation(int level);
day20-商品增删改查&分页




JDBC的添加,修改,删除查询.
* 查询:
    * 在首页点击查询:提交到Servlet--调用业务层--调用DAO
* 添加:
    * 在首页点击添加:提交到添加的JSP.在JSP中输入一些信息.提交到Servlet.
        * 在Servlet中接收参数,封装参数,调用业务层,调用DAO.
        * 使用令牌机制完成重复提交的问题.
* 修改:
    * 在列表页面中点击编辑:提交到Servlet.查询某个商品.显示到页面.
        * 在页面中输入一些信息,点击确定.提交到修改的Servlet.
        * 接收参数,封装,调用业务层,调用DAO.
* 删除:
    * 在列表页面中点击删除:提交到Servlet.
        * 在Servlet中接收id,调用业务层,调用DAO.
        * 使用JS进行提示.
* 分页查询:
    * 分页分类:
        * 一次性查询几条记录.
        * 一次性查询所有记录.对记录进行切分.
    * 一次性查询几条:limit
    * 封装一个分页的Bean:
        * 提供参数:currPage,pageSize,totalCount,totalPage,List.
    * 在业务层需要将PageBean进行封装.
JDBC的案例:
* 商品信息的查询:
* 商品信息的插入:
    * 插入功能的实现:
    * 防止表单的重复提交:令牌机制:
* 商品信息的修改:
    * 根据ID查询商品:
    * 将数据回显到表单元素中:
* 商品信息的删除:
    * 删除多条记录:使用事务管理.
* 商品信息的条件查询:
    * 模糊查询:
    * 多个条件:拼接SQL语句.
* 商品信息的分页:
    * MYSQL分页:limit关键字:   limit a,b;   --a:从哪开始   b:查询多少条记录.   limit 10


day21-jQuery&Ajax
【AJAX的概述】:
什么是AJAX:
* AJAX:异步的 JavaScript And XML.
    * 使用的是老的技术,用的是新的思想.
了解同步和异步的区别:
* 参考图一:
AJAX的功能:完成页面的局部刷新,不中断用户的体验.
* 早期的时候JS技术根本不受重视.后台开发人员经常将JS当成一种玩具式语言.JS中有一个对象XMLHttpRequest对象可以向服务器异步发送请求.传统的B/S结构的软件,所有实现功能都需要在服务器端编写代码(胖服务器).现在有了AJAX以后,可以将部分代码写到客户端浏览器(RIA:Rich Internet Application).FLEX:AS脚本编程.
* XML:使用XML做为数据传递的格式: JSON:
【XMLHttpRequest】:
属性:
* readyState                        :XMLHttpRequest的状态

* onreadystatechange        :当XMLHttpRequest状态改变的时候触发一个函数.
* status                                :获得响应的状态码. 200 , 404 ...
* responseText                        :获得响应的文本数据.
* responseXML                        :获得响应的XML的数据.
方法:
* open(请求方式,请求路径,是否异步)                :异步去向服务器发送请求.
* send(请求参数)                                                :发送请求.
* setRequestHeader(头信息,头的值)                :处理POST请求方式的中文问题.
创建XMLHttpRequest对象:
* IE                :将XMLHttpRequest对象封装在一个ActiveXObject组件.
* Firefox        :直接就可以创建XMLHttpRequest对象.
function createXmlHttp(){
   var xmlHttp;
   try{ // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e){
           try{// Internet Explorer
                 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
              }
            catch (e){
              try{
                 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
              }
              catch (e){}
              }
    }

        return xmlHttp;
}
AJAX:
* AJAX:异步的JavaScript And XML.
* XMLHttpRequest:
    * 属性:
        * onreadystatechange        :当对象的状态改变的时候会触发.
        * readyState                        :记录的是对象的状态.
        * status                                :状态码.
        * responseText                :响应文本.
        * responseXML                :响应的XML.
    * 方法:
        * open(“请求方式”,”请求路径”,true);
        * send(“请求参数”);
        * setRequestHeader(“头名称”,”头的值”);
JQuery中的AJAX:
* load();
* get();
* post();
* ajax();
    * $.ajax({
        url:,
        data:,
        success:function(){
        }
    });


* AJAX中的数据的格式:
    * 文本,HTML代码,XML,JSON.
day22-jQuery和listener

Listener        :
    * 监听器就是一个JavaBean用来监听其他Bean变化.
    * 事件源:被监听的对象.
    * 监听器:监听的对象.
    * 事件源与监听器的绑定:
    * 事件:事件源改变.通过事件对象获得事件源对象.
    * Servlet的监听器:
        * 事件源:三个域对象.ServletContext,HttpSession,ServletRequest
    * 三类:
        * 一类:监听三个域对象的创建和销毁的监听器.
        * 二类:监听三个域对象的属性变更监听器.
        * 三类:监听HttpSession中的JavaBean的状态的改变的监听器.
Filter                :
    * 过滤器就是对从客服端发送到服务器的请求进行过滤的.
    * FilterConfig:过滤器配置.
        * 获得初始化参数
        * 获得ServletContext
        * 获得过滤器的名称
   * FilterChain:过滤器链.
   * 生命周期:服务器启动的时候进行创建,服务器关闭的时候销毁.
   * 过滤器的配置:
        * <url-pattern>的配置
        * <servlet-name>的配置
        * <dispatcher>的配置:
            * REQUEST
            * FORWARD
            * INCLUDE
            * ERROR
   * 自动登录:
   * 网站乱码的解决:

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马