zoukankan      html  css  js  c++  java
  • Servlet_过滤器&监听器【背后的机制——欠火候】

    过滤器——对数据和相应的功能进行统一处理

    创建过滤器:

    【1】实现Filter接口

    【2】在web.xml当中注册该过滤器

    过滤器的生命周期:

    【1】启动的时候就会被初始化

    【2】初始化顺序按照web.xml中的注册顺序,由上而下进行执行。

    【3】过滤器拦截的顺序:也是按照注册在web.xml中的顺序。


    链式调用过滤器的情况:

    chain.doFilter(hreq, resp);

    前提条件是:<url-pattern>*.do</url-pattern>过滤器的url-pattern的值均为*.do

    [note:]想要请求抵达servlet,必须完成链式调用

    Filter & Spring得拦截器功能类似,包裹交互层(controller/servlet)进行操作

    AOP:包裹业务层进行操作

    Servlet当中得三大域:彻底与代码解耦

    -监听作用域本身

    -监听作用域得元素

    创建监听:

        【1】实现监听得接口

        【2】

                                                   域对象创建与销毁                                                                              域对象内得属性变化

    【1】Application : 

                                  -容器加载,调用application监听得contextInitialized方法                          监听到作用域当中所有的元素的增减和修改

                                  -容器在关闭得时候,调用contextDestroyed()方法                                   监听到修改的元素的值为旧值

    【2】Session                                                                                                                容器关闭手动销毁时间到期

                                                                                                                                       当session当中添加

                                                                                                                                       当

    【3】Request

    -监听绑定:

         【1】将监听放入session

         【2】当监听加入session后,触发valueBound方法

         【3】当session中,修改或者删除该监听的时候,触发valueUnbound

         【4】优点:刻意根据传入的对象,实现1对1的监听;缺点:对代码有耦合

    Open session in view:保障三级缓存开发得技术!

    【1】可以不必使用数据库连接池

    【2】优势:提高查询得效率

    【3】劣势:高并发得情况下,会导致连接数不够用

    【4】

    J2EE——回顾【JDBC】{夯实基础!!!!!!—框架搭建的基石!!!!}

    J2EE阶段是web项目基石。

    J2EE:

    【1】JDBC

    【2】Servlet+JSP

    【3】封装交互层和持久层框架

    SSM :Spring SpringMVC Mybatis

    项目:数据监控平台(动态报表

    【1】Zookeeper

    【2】定时任务

    【3】消息系统

    【4】大数据hive

    【5】前端的动态报表框架:echarts

    JDBC:持久层操作:本质数据操作![底层:Socket协议进行连接]

    -其他链接桥技术是对JDBC的进一步封装。

    -访问不同的关系型数据库:提供统一的接口,但是需要提供不同的驱动。【mysqloraclesqlserverDB2】

    image弱化存储API操作

    -JDBC驱动依赖:注意如何定位使用的依赖:mysql/J  8.0前后半分

    JDBC使用步骤

    【1】加载驱动 :执行Driver类的静态嗲马快: Class.forName() 或者直接new

    【2】创建连接: DriverManager.getConnection(url,user,password)  url:访问连接串  user:数据库用户名 password:

           -url:  jdbc:mysql://[协议头]   【访问地址+端口3306】 /数据库名

    【3】创建查询通道

    Connection.createStatement() / preparedStatement

          -查询操作:D :select

          -修改操作:DML : i u d

    【4】查询:执行sql。

          -statement,executeQuery()

          -resultSet.next()  :resultSet指向的是查询结果的前一条。  //  resultSet.getInt/getString/getObject  ——列名/匿称【推荐】/列游标【从1开始】——返回的为整型!

          -取得值可以正常转换

    【5】PreparedStatement:【1】预编译sql语句【2】防止sql注入

          -网络安全:正常情况下得开发者,关注得是怎么防御!

          -获取信息

          -瘫痪服务器

          -控制

       从系统/应用层面

       D-DOS问题:瞬间大量的访问链接。

       SQL注入:

    占位符技术

          - 占位符从1开始

          -占位符必须和值一一对应

          - 占位符不能再字符串当中被识别

          -所有传给占位符的参数会被当成一个独立的值

    批处理是面试经常会问的!

    statement&&prestatement的区别:

    image

    数据批处理通常需要开启事务!

    unique:是除了主键之外,索引最高效的索引。【尽可能避免字符串索引——尽可能使用数字索引】

    String uuid = java.util.UUID.randomUUID().toString();
    Long ts = Long.valueOf(new Date().getTime()+""+new Random().nextInt(10000));

    =========

    对于开启事务:

    connection.setAutoCommit(false);

    要注意:捕获异常后的事务回滚操作。connection.rollback();

    以及:最终的连接关闭操作。connection.close();

    ======

    通过connection获取DatabaseMetaData:

    image

    ========获取插入数据的主键

        ResultSet rSet = pStatement.getGeneratedKeys();
         if (rSet.next()) {
             rSet.getObject(1);//获取插入行的主键
         }

    JDBC的连接池【2S内给到结果;2s~7s为访问网站的极限】

    正常情况下的sql操作,每次都需要创建连接Connection,会严重影响性能

    ① 每次要重新创建

    ② 每次都要关闭

    ③ 一旦关闭后,所有之前缓存的内容都要重新解析

    ====解决方案:使用数据库连接池

    【1】一个连接的对象池

    【2】每次从池中获取一个连接

    【3】用完连接后,要归还链接,即归池

    【4】如果池中的连接对象被取空,则所有后续连接则进入等待,等待有连接被归池


    beeline –u jdbc:hive2://localhost:10000

    一个protected的方法,显然是为了让子类覆盖而设计的.

  • 相关阅读:
    Integration Services 学习(4):包配置
    Integration Services 学习(3)
    AsyncTask的使用
    asp.net下实现支持文件分块多点异步上传的 Web Services
    wcf/web service 编码
    c# 接发邮件2
    Integration Services 学习
    使用AChartEngine画柱状图
    Cocos2d开发系列(五)
    灵活使用XMultipleSeriesRenderer设置自定义的轴标签
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/13225235.html
Copyright © 2011-2022 走看看