【石家庄校区】你好 我又来了
# 编译语句
# response 输出中文乱码问题
1. 字节流输出中文的乱码问题:
1. 字节流输出中文:
*设置浏览器的字符集编码.
* response.setHeader("ContentType","text/html;charset=UTF-8");
* 设置输出内容的字节数组的字符集编码:
* " ".getBytes("UTF-8");
2. 字符流输出中文:
* 设置浏览器字符集编码. response.setHeader("Content-Type","text/html;charset=UTF-8");
* 设置response 的缓冲区的编码. response.setCharacterEncoding("UTF-8");
# request 中文乱码问题
1. GET
* new String(" " ,getBytes("ISO-8859-1"),"UTF-8")
2. POST
* request.setCharacterEncoding("UTF-8");
*
# 面试题 1
* request 何时创建和销毁的
* 创建: 从客户端向服务器发送请求,那么服务器会创建一个request对象.
* 销毁: 服务器为这次请求做出相应之后 服务器就会销毁request对象.
* 作用范围: 一次请求.
*
# 面试题 2
*转发和重定向的区别
* 1. 转发是一次请求 一次响应 ,重形象两次请求 两次响应;
* 2. 转发地址栏不变 , 重定向会变化;
* 3. 转发的路径不需要加工程名 ,重定向需要加工程名;
* 4. 转发只能在项目内部 , 重定向可以定向到任何网站。
# Servlet的生命周期
* 第一次访问当前Servlet的时候,服务器创建一个Servlet的实例, init方法就会执行。 任何一次从客户端发送的请求,服务器都会创建一个新的线程执行Service 方法,在Service方法内部根据请求方式调用不同调用 doget或 dopost 方法,当项目从服务器中移除,或者关闭服务器的时候 就会销毁Servlet ,destroy方法就会执行。
# Servlet 的继承关系
* Servlet ----> GenericServlet --->> HttpServlet
* ServletConfig -- 对象 : 用来获得Servlet的配置信息。
# * ServletContext 对象:
* 1. 获得全局初始化参数。
* 2. 获得文件的MIME的类型。
* 3. 作为域对象存取数据。
* 4. 读取web项目中的文件。
# 三个域对象
* 1. ServletContext --
* 2. Cookie ---
* 3. Session ----
# 类加载器
InputStream in = ReadFileUtils.class.getClassLoader().getResourceAsStream("文件全名");
# 读取属性文件 三件套
*1. Properties properties = new Properties();
*2. properties.load("类加载器对象");
*3. 使用 String ptoperties.getProperty("要获取数据的目标");
===================================================
# 反射机制
通过类对象 获取字节码对象
# 通过Class.forName("类的路") -- 获取字节码对象
Object newInstance() --- 创建此Class对象所表示的类是一个新的实例。
通过 newInstance对象 获取 Class 方法 变量
1. 获取构造方法并使用
* Constructor <> [] getConstructors()
* Constructor<T> getConstructor(Class<?>...parameterType)
2. 获取成员变量 ---公共成员变量
* Field [] getFields()
* Field getField(String name) --根据字段名称获取其值
获取所有成员变量
* Field[] getDeclaredFields()
* Field getDeclaredField(String name)
Field :
1. Object get(object obj)
2. void set(Object obj,Object value)
# 暴力访问 ----- setAccessible(true)-
3. 获取成员方法
* Method getMethod(String
name,Class<? >....);
*Method :
Object invoke(Object obj ,Object ...args);
# invoke("对象","类型对应的数据"); --执行获取到的方法
方法对象执行方法 需要调用 Object invoke(Object obj, Object...arge)
# JSP的九大内置对象
* pageContext
* request
* session
* application
* page
* response
* out
* config
* exception
# JSP的四个作用范围
* PageScope ----当前页面
* RequestScope ----一次请求范围
* SessionScope ----一次回话
* ApplicationScope -----整个应用范围
# JSP的开发模式二【 M V C 】
* JSP + Servlet + JavaBean --MVC 模式设置
* M Model ----模型层
* V View----视图层
* C Controller----控制层
# Java 中的反射技术 Person . java
* 构造方法 ----Constructor
* 成员变量 ----Field
* 成员方法 ----Method
强制访问 ---- field.setAccessible(true)
# 事务
* 事务是逻辑上的一组操作,组成这组操作的各个逻辑单元 全部成功 或者全部失败.
* 事务的管理 两种方式:
* 1. 手动开启事务
* 2. 设置自动提交参数
# JDBC中的事务管理
* API
* void setAutoCommit(boolean qautoCommit) ---将连接自动提交模式设为给定状态.
*
* void commit() ---- 使所有上一次提交/回滚后的更改成为持久更改 并释放此Connection对象 当前持有的所有数据库锁.
*
* void rollback() ----取消在当前事务中进行的所有更改 并释放此Connection对象当前持有的所有数据库锁.
# 反射 执行方法 --- 重点
1. invoke --执行反射获取的方法;
2. 反射 : 获得Method对象 ,然后让方法执行 invoke .
内省 : Javabean 的编写规则。---详情
# 面试4 掌握
* 事务特性:
1. 原子性 :事务的不可分割。
2. 一致性 :事务的执行前后 数据的完整性要保持一致
3. 隔离性 :一个事务的执行 不应该受到其他事务的干扰
4. 持久性 : 事务一旦 (提交 /回滚 ) 数据就持久保存到了数据库。
# 不考虑隔离性 引发安全问题。
1. 读问题
1.1 脏读
1.2 不可重复读
1.3 虚读/幻读
2. 写问题
# 解决引发的读问题
1. 设置事务的隔离级别:
1.1 read uncommited :未提交读/脏读/
# 1. 将连接添加到当前线程中, ---API-- ThreadLocal---
# 三个域对象 : request servletContext Session
# XML / Json
* Ajax的响应数据:
* 文本 一段HTML的数据 XML / JSON 。
1. 实用工具生成XML文件 --- xStream工具。【将集合 数组 对象 转成 XML 】
2. 步骤:
# JSON
* 轻量级的数据交换格式。
* JSON的生成工具
1.
# WEB 中的监听器
*主要应用到图像化界面中
分类: 三类八种:
1. 一类: 监听三个域对象的创建和销毁。
*
2. 二类: 监听三个域对象的属性变更的监听器(属性添加器,移除,替换)。
*
3. 三类: 监听HttpSession中的JavaBean的状态的改变。
*Session的优化
配置:
<!-- 配置监听器 -->
<listener>
<listener-class>com.itheima.weblistener.MyServletContextListener</listener-class>
</listener>
#* ServletContextLister【掌握】
# 程序的优化 : 将耗时的各种需要初始化的式子 写到监听器
# ServletContextListener 【】【】【】【】【】【】【】【】【】
void contextDestroyed ( ServletContextEvent sce )
void contextInitialized ( ServletContextEvent sce )
# 商品的增删改查 CRUD
1. 查询所有商品:创建JSP页面 连接到 MVC :
2.
# UUID 可产生一个随机的字符串;
# 信息重复提交问题:
* 网速慢
* 添加完信息 转发页面 刷新该页面
* 根本上解决问题: 令牌机制:(一次性)
* 生成随机的令牌保存在session中;
* 在表单提交的时候 将随机的令牌放入表单的隐藏字段中;
* 在Servlet 中
# 后台 批量删除 很常见 掌握!!!
# 商品分页显示
* 物理分页--一次只查10条 点击下一页再查10条.
1. 缺点: 经常和数据库交互
2. 优点: 量大不会溢出
* 逻辑分页---一次性将搜有数据全查出来 根据需要进行截取.
1. 缺点:容易内存溢出
2. 优点: 与数据库交互少
# 数据库不同 分页语句不一样.
# 第四个域 --- PageBean();
# =============AJAX=================
# 概述:
1. 异步的 JavaScript and XML ; --老技术 新思想 。
2. 功能: 完成页面的局部刷新 不中断用户的体验。
4. 同步:
3. 异步AJax :
利用JS的框架去实现(重点)
# 同步和异步的区别:
1. 异步 点击按钮或链接 只会让页面的局部进行刷新。
JS中的一个对象 XMLHttpRequest 对象 可以向服务器一步发送请求。
# AjAX 可以将部分代码写到客户端浏览器(RIA: Rich Internet Application). FLEX:AS 脚本错误。
XML : 作为传输数据的格式 【正在被JSON取代】
========================================
# 属性 :
1. onreadyststechange :
2. readyState :
3. status : 获得响应的状态码:200 304 ..
4. responseText :获得相应的文本数据
5. responseXML: 获得相应的XML数据
方法:
1. open : (请求方式,请求路径,是否异步):异步向服务器发送请求.
2. send(请求的参数): 发送请求.
3. setRequestHeader(头信息,头的值):处理POST请求方式的中文问题.
# 创建XMLHttpRequest 对象:
* IE:
* Firefox :
# 入门:
编写步骤:
1. 创建一个异步对象
2. 设置对象状态改变触发一个函数
3. 打开连接
4. 发送请求
1. GET:
2. POST:
# 预习JQuery / 做准备工作。
#===============================
1. data :代表的是服务器对当前次请求的响应。
# $ . ajax() -----定制方法。
|
|