zoukankan      html  css  js  c++  java
  • Document

    回顾:
    ajax:
        异步请求
    原生的ajax(了解)
        1.创建一个核心对象 XMLHttpRequest
        2.编写回调函数
            xmlhttp.onreadystatechange=function(){
                if(xmlhttp.readyState==4 && xmlhttp.status==200){
                    alert(xmlhttp.responseText);
                }
            }
        3.open操作
            xmlhttp.open("请求方式","请求路径");
        4.send操作
            xmlhttp.send([参数]);
                post请求的参数放在send里面
                注意:若请求方式为post且有参数 必须设置一个头
    jquery中ajax
        掌握:
            $.get(url,params,function(data){},type);
                type:以后常用的是json
            $.post(url,params,function(data){},type);
        了解:
            jquery对象.load(...)
        理解:
            $.ajax(选项)
                选项:
                    url
                    type
                    data
                    success:fn
                    error:fn
                    dataType:"json"
    /////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////
    listener(了解) 监听器
    filter(★)    过滤器
    //////////////////////////
    listener:
        监听器
        作用:
            监听web中中的域对象 ServletContext ServletRequest HttpSession
        监听内容:
            监听三个对象的创建和销毁
            监听三个对象属性的变化
            监听session中javabean的状态
        
        注意:listener全部是接口
            
    监听三个对象的创建和销毁
        ServletContextListener
        ServletRequestListener
        HttpSessionListener
    监听三个对象属性的变化
        ServletContextAttributeListener
        ServletRequestAttributeListener
        HttpSessionAttributeListener
    监听session中javabean的状态
        HttpSessionActivationListener(钝化和活化)
        HttpSessionBindingListener(绑定和解绑)
    
    使用步骤:
        1.编写一个类 实现接口
        2.重写方法
        3.编写配置文件(大部分都是)
        
    演示各个监听器
        监听三个对象的创建和销毁
            ServletContextListener
                创建:服务器启动的时候,会为每一个项目都创建一个servletContext
                销毁:服务器关闭的时候,或者项目被移除的时候
                以后用来加载配置文件
            ServletRequestListener
                创建:请求来的时候
                销毁:响应生成的时候
            HttpSessionListener
                创建:
                    java中第一次调用request.getSession的时候
                    jsp访问的时候创建
                销毁:
                    三种情况:
                        session超时
                        手动销毁session
                        服务器非正常关闭
        监听三个对象属性的变化(添加 替换 删除)
            ServletContextAttributeListener
            ServletRequestAttributeListener
            HttpSessionAttributeListener
        监听session中javabean的状态
            注意:这两个接口需要javabean实现.是让javabean感知到自己的状态
            
            HttpSessionBindingListener(绑定和解绑)
                检测java是否添加到session或者从session中移除
            HttpSessionActivationListener(钝化和活化)
                钝化:javabean从session中序列化到磁盘上
                活化:javabean从磁盘上加载到了session中
                可以通过配置文件修改javabean什么时候钝化
                    修改一个项目
                        只需要在项目下/meta-info创建一个context.xml
                        内容如下:
                            <Context>
                                <!--
                                    maxIdleSwap    :1分钟 如果session不使用就会序列化到硬盘.
                                    directory    :itheima 序列化到硬盘的文件存放的位置.
                                -->
                                <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
                                    <Store className="org.apache.catalina.session.FileStore" directory="itheima"/>
                                </Manager>
                            </Context>
            
    //////////////////////////////////////////////////
    案例1-自动登录
    需求:
        登录的时候,勾选自动登录,登录成功之后,关闭浏览器,下一次访问网站的时候完成登录操作(自动登录).
    技术分析:
        filter
        cookie
    //////////////////////////////////
    filter:过滤器
        过滤请求和响应
        作用:
            自动登录.
            统一编码.
            过滤关键字
            ....
        Filter是一个接口
    编写filter步骤:
        1.编写一个类
            a.实现filter接口
            b.重写方法
        2.编写配置文件
            a.注册filter
            b.绑定路径
        3.测试
    
    Filter接口的方法:
        init(FilterConfig config):初始化操作
        doFilter(ServletRequest request, ServletResponse response, FilterChain chain):处理业务逻辑
        destroy() :销毁操作
    filter的生命周期(了解)
        filter单实例多线程
        filter在服务器启动的时候 服务器创建filter 调用init方法 实现初始化操作
        请求来的时候,创建一个线程 根据路径调用dofilter 执行业务逻辑
        当filter被移除的时候或者服务器正常关闭的时候 调用destory方法 执行销毁操作.
    FilterChain:过滤链
        通过chain的dofilter方法,可以将请求放行到下一个过滤器,直到最后一个过滤器放行才可以访问到servlet|jsp
        doFilter()放行方法
    ★url-pattern配置
        3种
        完全匹配    必须以"/" 开始  例如: /a/b
        目录匹配    必须以"/" 开始 以"*"结束  例如:/a/b/*
        后缀名匹配    以"*."开始 以字符结束   例如 :  *.jsp  *.do  *.action
    例如:
        afilter  路径  /*
        bFilter  路径  /demo4
    ★一个资源有可能被多个过滤器匹配成功,多个过滤器的执行顺序是按照web.xml中filter-mapping的顺序执行的
        
    ///////////////////////////////
    步骤分析:
        1.数据库和表
            create database day16;
            use day16;
            create table user(
                id int primary key auto_increment,
                username varchar(20),
                password varchar(20)
            );
            insert into user values(null,'tom','123');
        2.web项目
            jar包 工具类 配置文件
        3.新建一个登录页面 表单
        4.表单提交 loginservlet
            接受用户名和密码
            调用service完成登录操作,返回值User
            判断user是否为空
                若不为空,将user放入session中
                    判断是否勾选了自动登录
                        若勾选了:
                            需要将用户名和密码写回浏览器
        5.下次访问网站的时候
            过滤器拦截任意请求
                判断有无指定的cookie
                    有cookie,获取用户名和密码
                    调用service完成登录操作,返回user
                    当user不为空的时候将user放入session中.
    
    当我们换用jack登录的时候发现登录不了
        自动登录只需要登录一次:当session中没有用户的时候
        访问有些资源是不需要自动登录的(和登录还有注册相关的资源)
        
        修改filter的逻辑:
            首先判断session中是否有user
                若没有 并且访问的路径不是和登录注册相关的时候
                    才去获取指定的cookie
    /////////////////////////////////////////////////////// 
    ///////////////////////////////////////////////////////
    filter总结
        filterConfig:(了解)
            过滤器的配置对象
            作用:
                获取全局管理者
                获取当前filter的名称
                获取当前filter的初始化参数
        
        filter-mapping的子标签(理解)
            servlet-name:匹配那个servlet 值写的是serlvet标签中servlet-name的值
                建议:不要在一个filter中重复的匹配servlet
                    例如: serlvet的url-pattern为  /a/b/hello   serlvetname:HelloServlet
                        如果filter中的url-pattern  /*
                        最好不要在写 servlet-name:HelloServlet
                    
            dispatcher:
                匹配哪种请求
                默认的是REQUEST,一旦显式的写出来哪种请求,默认就不起作用了
                    理解
                        REQUEST:从浏览器发送过来的请求(默认) 理解
                        FORWARD:转发过来的请求 理解
                    
                    了解
                        ERROR:因服务器错误而发送过来的请求
                        INCLUDE:包含过来的请求
    //////////////////////////                
    //////////////////////////
    案例2-统一字符编码
    需求:
        以前我们开发的时候若有参数,第一步都是设置编码,才不会出现乱码,通过过滤器设置,到servlet或者jsp上的时候已经没有乱码问题
    技术分析:
        filter 配置路径/* 过滤器的第一个位置
        在filter中重写getParameter(加强)
    步骤分析:
        我们只需要在filter中 对request进行加强(例如:只对request.getParameter()进行加强)
    
        方法加强:
            1.继承(获取构造器)
            2.装饰者模式(静态代理)
            3.动态代理
            
        装饰者书写步骤:
            1.要求装饰者和被装饰者实现同一个接口或者继承同一个类
            2.装饰者中要有被装饰者的引用
            3.对需要加强方法进行加强
            4.对不需要加强的方法调用原来的方法即可
            
        加强request.getParameter(String key)
            首先请求的方式不同,处理的方式也不同
                获取请求的方法
                若是get请求
                    new String(value.getBytes("iso8859-1"),"utf-8");
                若是post请求
                    只需要设置一句话
                    request.setCharacterEncoding("utf-8");
                    
        最后将包装过的request对象(MyRequest)传递给servlet即可
    ///////////////////////////////////////////////////                
    ///////////////////////////////////////////////////
     关于获取参数的方法
        String getParameter(String name);// arr[0]
        String[] getParameterValues(String name);// map.get(name)
        Map<String,String[]> getParameterMap();
                
                
    
    //////////////////////////////////////////////
    //////////////////////////////////////////////
    listener 监听器
        监听javaweb中的三个域对象
        
        监听三个对象的创建和销毁
            ServletContextListener
            ServletRequestListener
            HttpSessionListener
        监听三个对象属性的变化
            ServletContextAttributeListener
            ServletRequestAttributeListener
            HttpSessionAttributeListener
        监听javabean在session中的状态
            注意:    javabean实现的接口 不需要在web.xml中配置
            HttpSessionActivationListener(javabean的活化和钝化)
            HttpSessionBindingListener(添加到session中还是从session中移除)
        
        编写步骤:
            1.编写一个类  实现接口
            2.编写配置文件 
                <listener>
                    <listener-class>....
                </listener>
    /////////////////////////////////////
    filter 接口,过滤请求和响应
        编写步骤:
            1.编写一个类 
                实现filter 重写三个方法
            2.编写配置文件    
                注册filter 绑定路径
        filter的生命周期(了解)
        url-pattern配置(和servlet一样)
            一个路径匹配到多个filter的时候,执行顺序有有web.xml中filter-mapping的顺序来决定的
        FilterChain
            必须放行才有可能到下一个Filter或者资源上
    //////////////////////
  • 相关阅读:
    (转)灵活运用 SQL SERVER FOR XML PATH
    Docker
    Springboot
    Redis
    Centos7.6在线安装mysql8.0.16
    Centos7.6安装jdk1.8
    Dubbo
    相关性检验
    逻辑回归和决策树上的一些区别
    postgresql 学习手册(客户端)
  • 原文地址:https://www.cnblogs.com/chenyanlong/p/10004576.html
Copyright © 2011-2022 走看看