黑马程序员技术交流社区

标题: 【石家庄校区】啊哈 [打印本页]

作者: 1015747546    时间: 2018-5-27 16:22
标题: 【石家庄校区】啊哈
【石家庄校区】你好  我又来了



# 编译语句


#                    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()  -----定制方法。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2