黑马程序员技术交流社区
标题:
[石家庄校区]web第四次笔记
[打印本页]
作者:
雪落
时间:
2018-5-27 16:03
标题:
[石家庄校区]web第四次笔记
本帖最后由 雪落 于 2018-5-27 16:21 编辑
[石家庄校区]
web第四次笔记
## 反射
###反射介绍
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法
对于任意一个对象,都能够调用它的任意一个方法
这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制.
通过反射技术, 我们可以拿到该字节码文件中所有的东西, 例如成员变量, 成员方法, 构造方法, 而且还包括私有
### 获得类的字节码对象
Class对象.三种获得的方式.
1.类名.class; 这是一个静态的属性, 只要知道类名, 就可以获取
Class clazz1 = Person.class;
2.类的实例.getClass(); 此方法来自于Object 对象已经存在的情况下, 可以使用这种方式
Person person = new Person();
Class clazz2 = person.getClass();
3.Class.forName(“com.itheima_01.Student”); 通过Class类中的静态方法, 指定字符串, 该字符串是类的全类名(包名+类名)
Class clazz3 = Class.forName("com.itheima.demo3.reflect.Person");
### 获得构造器:Constructor
Constructor c = clazz.getConstructor(String.class,Integer.class);
### 获得属性:Field
Field field1 = clazz.getDeclaredField("name");
### 获得方法:Method
Method method = clazz.getDeclaredMethod("run");
## JDBC的事务管理
事务的管理的对象:Connection conn
### 事务管理的核心的思想:
逻辑上的一组操作使用的是同一个Connection对象
### 事务管理的核心步骤:
开启事务:conn.setAutoCommit(false)
业务逻辑的操作
所有的业务逻辑操作都成功后提交事务:conn.commit()
一旦有异常回滚事务:conn.rollback()
### 事务特性及问题(面试)
#### ACID特性
原子性 事务的不可分割
一致性 事务执行的前后,数据完整性保持一致
隔离性 一个事务的执行不应该受到另一个事务的干扰
持久性 事务一旦结束,将会永久修改到数据库
#### 不考虑隔离性引发的问题
脏读:一个事务读到了另一个事务未提交的数据
不可重复读:一个事务读到了另一个事务已经提交的update数据,导致前后查询结果不一致
虚读/幻读:一个事务读到了另一个事务已经提交的insert数据,导致前后查询结果不一致
#### 隔离级别
read uncommitted 未提交读.脏读,不可重复读,虚读都可能发生
read committed 已提交读.避免脏读.但是不可重复读和虚读有可能发生
repeatable read 可重复读.避免脏读,不可重复读.但是虚读有可能发生
serializable 串行化的.避免脏读,不可重复读,虚读的发生
MYSQL隔离级别:repeatable read Oracle隔离级别:read committed
##JDBC的添加,修改,删除查询.
###查询:
在首页点击查询:提交到Servlet--调用业务层--调用DAO
###添加:
在首页点击添加:提交到添加的JSP.在JSP中输入一些信息.提交到Servlet.
在Servlet中接收参数,封装参数,调用业务层,调用DAO.
使用令牌机制完成重复提交的问题.
###修改:
在列表页面中点击编辑:提交到Servlet.查询某个商品.显示到页面.
在页面中输入一些信息,点击确定.提交到修改的Servlet.
接收参数,封装,调用业务层,调用DAO.
###删除:
在列表页面中点击删除:提交到Servlet.
在Servlet中接收id,调用业务层,调用DAO.
使用JS进行提示.
###分页查询:
1 分页分类:
一次性查询几条记录.
一次性查询所有记录.对记录进行切分.
2 一次性查询几条:limit
3 封装一个分页的Bean:
提供参数:currPage,pageSize,totalCount,totalPage,List.
4 在业务层需要将PageBean进行封装.
## AJAX
```javascript
$.get(
"url",
{
"":"",
"":""
},
function(data){ //data:服务器对当前这次请求的响应
},
"响应的类型"
);
$.post(
"url",
{
"":"",
"":""
},
function(data){ //data:服务器对当前这次请求的响应
},
"响应的类型"
);
$.ajax({
url:"",
type:"请求方式",
data:{
"":"",
"":""
},
success:function(data){ //成功后执行
},
error:function(){ //出错之后执行
},
beforeSend:function(){ //发送之前执行
},
complete:function(){ //不管成功还是失败都执行
}
});
```
##监听器
###Listener
:
* 监听器就是一个JavaBean用来监听其他Bean变化.
* 事件源:被监听的对象.
* 监听器:监听的对象.
* 事件源与监听器的绑定:
* 事件:事件源改变.通过事件对象获得事件源对象.
* Servlet的监听器:
* 事件源:三个域对象.ServletContext,HttpSession,ServletRequest
* 三类:
* 一类:监听三个域对象的创建和销毁的监听器.
* 二类:监听三个域对象的属性变更监听器.
* 三类:监听HttpSession中的JavaBean的状态的改变的监听器.
###Filter
:
* 过滤器就是对从客服端发送到服务器的请求进行过滤的.
* FilterConfig:过滤器配置.
* 获得初始化参数
* 获得ServletContext
* 获得过滤器的名称
* FilterChain:过滤器链.
* 生命周期:服务器启动的时候进行创建,服务器关闭的时候销毁.
* 过滤器的配置:
* <url-pattern>的配置
* <servlet-name>的配置
* <dispatcher>的配置:
* REQUEST
* FORWARD
* INCLUDE
* ERROR
* 自动登录:
* 网站乱码的解决:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2