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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梦一生 初级黑马   /  2018-5-27 16:11  /  883 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-5-30 15:42 编辑

笔记整理


反射反射: 反射就是通过一个类的Class对象操作该类的构造方法,成员属性,成员方法
    类的构造方法用Constructor对象来表示
    类的成员属性用Field对象来表示
    类的成员方法用Method对象来表示
或取字节码对象的方法:
    1. 对象.getClass()
    2. 类名.class()
    3. Class.forName(全类名)
反射使用的类和方法
    java.lang.Class类: 类的字节码对象
        获取构造方法
            参数列表填写参数的字节码对象,有几个参数写几个,无参不用传
            Constructor<T> getConstructor(Class<?>... parameterTypes);//获取所有public的构造方法;
            Constructor<>[] getDeclaredConstructors(Class<?>... parameterTypes);//获取包括私有的所有够造方法;
        获取成员属性
            Field[] getFields(): 获取所有public的成员变量
            Field[] getDeclaredFields(): 获取所有权限的成员变量, 包括private的
            Field getField(String fieldName): 通过指定的成员变量名获取指定的public的成员变量
            Field getDeclaredField(String fieldName): 通过指定的成员变量名获取指定的所有权限的成员变量, 包括private的
        获取成员方法
            Method[] getMethods(): 返回所有public的方法数组
            Method[] getDeclaredMethods(): 返回所有权限的方法数组
            Method getMethod(String name, Class<?>... parameterTypes): 获取public的方法, 传入方法名和方法形参字节码对象
            Method getDeclaredMethod(String name, Class<?>... parameterTypes): 获取所有权限的指定方法, 传入方法名和方法形参字节码对象
   
    java.lang.reflect.Constructor类: 构造方法对象
        创建对象
            newInstance(): 通过无参构造方法对象创建一个类的对象
            newInstance(Object... initargs): 通过有参构造方法对象创建一个类的对象, 传入构造方法所需的参数列表
            void setAccessible(boolean canAccess): 设置为true时禁用Java的访问安全检查, 可以访问所有权限的构造方法
   
    java.lang.reflect.Field类: 成员变量对象
        Object get(Object obj): 获取指定对象的属性值
        void set(Object obj, Object value): 将指定对象的属性值设置为指定的值
        void setAccessible(boolean canAccess): 设置为true时禁用Java的访问安全检查, 可以访问所有权限的成员属性
    java.lang.reflect.Method类: 成员方法对象
        Object invoke(Object obj, Object... args): 调用指定对象的成员方法
        void setAccessible(boolean canAccess): 设置为true时禁用Java的访问安全检查, 可以访问所有权限的成员方法
内省概述: 内省是基于反射的
作用: 用来获得JavaBean的属性和属性的get和set方法
     一个JavaBean属性是由get和set方法确定的
使用的类: Introspector类;//这个类就是用来描述JavaBean的
方法:
    BeanInfo Introspector.getBeanInfo(类的字节码对象);//获得该类的信息
    PropertyDescriptor[] BeanInfo.getPropertyDescriptors();//或的这个类的属性,返回一个数组
    PropertyDescriptor.getReadMethod();//获得get方法
    PropertyDescriptor.getWriteMethod();//获得set方法ThreadLocal类概述: 代表的是本地线程
     内部维护的是一个Map,其中的Key就是当前的线程,value就是要绑定的数据
方法:
    void set(T value);//设置当前线程的value
    T get();//获得当前线程的valueUUID概述: 生成随机的id
static UUID randomUUID();//获取随机的idAJAX概述: 异步的 JavaScript And XML
作用: 完成页面的局部刷新,不中断用户体验
同步和异步的区别:
    同步刷新整个页面
    异步刷新一块区域
响应的数据: 文本,HTML,XML,JSONXMLHttpRequest概述: js中的对象
作用: 可以向服务器异步发送请求
属性:
    readyState  : 返回XMLHttpRequest的状态
        0(未初始化),1(初始化),2(发送数据),3(数据传输中),4(完成)
    onreadystatechange : 当XMLHttpRequest状态改变的时候触发一个函数(回调函数)
    status : 获得响应的状态码
    responseText    :获得异步加载时响应的文本数据
    responseXml     :获得异步加载时响应的xml的数据
方法:
    open(请求方式,请求路径,是否异步);   :异步的去向服务器发送请求
    send(请求参数);     发送请求,没有参数写null;
    setRequestHeader(头信息,头的值);  : 用来处理post请求方式的中文问题
        示例:setRequestHeader("Content-Type","application/x-www-form-urlencoded");
创建:(不同浏览器创建的不一样)
    IE : 将XMLHttpRequest对象封装到一个ActiveXObject组件
    火狐: 直接就可创建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;JQuery概述: js的框架

JQuery的AJAX部分的方法
    jq对象.load(路径,参数,回调函数);//将服务器对当前这次请求的响应加载到选择器选中的元素里面
    $(选中要提交的表单).serialize();//将表单所有要提交的数据封装到这个对象中(键值对类型);
    $.get(路径,参数,回调函数,响应的数据类型);//执行异步请求,get方式,数据类型可以不写
        用法:
            $.get(
                "路径",
                {发送到服务器的键值对类型的参数,多个参数用逗号隔开},
                function(data){ //data代表的是当前这次请求的响应
                    //回调后执行的业务操作
                }
            );
    $.post(路径,参数,回调函数,响应的数据类型);//执行异步请求,post方式,数据类型可以不写
        用法: 跟$.get()用法一样;
    $.ajax();//执行异步请求,参数是键值对类型的(常用在逻辑操作比较多的地方)
        用法:
            $.ajax({
            //参数是键值对类型的,键有特定的含义
                url : "路径",
                type : "请求方式",
                data : { //发送到服务器的参数
                    键值对类型的,多个参数之间用逗号隔开
                },
                success:function(data){data},//成功后执行的回调函数
                 error:function(){},//出错后执行的函数
               beforeSend:function(){},//发送之前执行的函数
                complete:function(){}//不管成功失败都会执行的函数
            });XStream概述: 生成XML文件的工具
作用: 将集合,数组,对象转成xml文件
方法:
    XStream xStream = new XStream();//创建对象
    xStream.toXML(要转换的数据);//转换成xml文件
    xStream.alias("指定的标签名",要修改的类的字节码);//修改标签名,默认是全类名
    xStream.useAttributeFor(要修改的类的字节码,"类中的属性名");//将类中的属性作为标签的属性,默认是子标签JSON概述: JavaScript Object Notation,是一种轻量级的数据交换格式.基于ECMAScript的一个子集.
     数据是键值对类型的,多个数据之间用逗号隔开,{}保存的是对象,[]保存的是数组
    JSON的生成工具(有很多)
JSONLIB工具:
    JSONArray.fromObject(要转换的数据);//将数组,List集合转成JSON
    JSONObject.fromObject(要转换的数据);//将对象或Map集合转成JSON
    转换数据时去除某些属性的方法:
        JsonConfig jc = new JsonConfig();//创建JsonConfig对象
        jc.setExcludes(new String[] {"不让显示的属性名,多个用逗号隔开"});      监听器概述: Listener就是一个java类,用来监听其他java类的状态变化,主要应用在图形化界面比较多
术语:
     事件源:指的是被监听的对象.(汽车)
     监听器:值的是监听的对象.(报警器)
     事件源与监听器的绑定:就是在汽车上安装报警器.
     事件:指的是事件源的改变.(踹汽车一脚)---主要的功能获得事件源对象.

WEB开发中的监听器
    概述:共有三类八中(监听三个域对象的)
    需要配置监听器:在web.xml中;
    一类:监听三个域对象的创建和销毁的监听器:
        ServletContextListener:监听ServletContext对象的创建和销毁
        HttpSessionListener:监听HttpSession的创建和销毁的监听器
        ServletRequestListener:监听ServletRequest对象的创建和销毁的监听器
     二类:监听三个域对象的属性变更的监听器:(属性添加,移除,替换)
        ServletContextAttributeListener:监听ServletContext对象的属性变更
        HttpSessionAttributeListener:监听HttpSession中的属性变更
        ServletRequestAttributeListener:监听ServletRequest对象的属性变更的
     三类:监听HttpSession中的JavaBean的对象的状态改变的监听器(不需要配置的)
        HttpSessionBindingListener:监听HttpSession中的JavaBean的绑定和解除绑定的
        HttpSessionActivationListener:监听HttpSession中的JavaBean的钝化和活化的
            方法:
                sessionDidActivate();//活化(反序列化)
                sessionWillPassivate();//钝化(序列化到硬盘)ServletContextListener(接口)概述: 用来监听ServletContext对象的创建和销毁
企业应用:
    1. 加载框架的配置文件
    2. 定时任务的调度(Timer类和TimerTask类)
    3. 用来写一些资源初始化很耗时,并且只在第一次访问时初始化的代码
用法:编写一个类继承这个接口
方法:
    void contextInitialized(ServletContextEvent sce);//监听ServletContext对象的创建
    void contextDestroyed(ServletContextEvent sce);//监听ServletContext对象的销毁优化Session实现方法: 通过配置<Context>标签配置定时session序列化
         1.在tomcat/conf/context.xml中配置<Context>;//在tomcat中所有的虚拟主机和虚拟路径都会按照这个配置执行.
         2.在tomcat/conf/Catalina/localhost/context.xml配置<Context>;//在tomcat中的localhost虚拟主机中的所有虚拟路径按照这个配置执行.
         3.在当前的工程下的META-INF/context.xml配置<Context>;//当前这个工程按照配置执行.

tomcat服务器配置的方法:
<Context>
    <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="指定分钟后session会自动序列化到硬盘">
        <Store className="org.apache.catalina.session.FileStore" directory="序列化后存放的位置"/>
    </Manager>
</Context>  




0 个回复

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