• cookie,session,fileter,liscen


    会话技术:
    会话:一次会话中发生多次请求和响应
    一次会话:从浏览器的打开到关闭
    功能:在会话的过程中 ,可以共享数据


    cookie:客户端的会话技术
    session:服务端的会话技术

    Cookie:小饼干

    Cookie是由服务器产生,然后通过response(Set-Cookie)对象写入浏览器,然后保存在浏览器端,
    在request下一次访问的时候,通过cookie的请求头 将cookie带回浏览器

    cookie 默认到期时间:会话结束

    cookie的相关方法:
    new Cookie(name,value):创建cookie对象
    response.addCookie():写回浏览器
    request.getCookies():获取cookie

    c.setMaxAge(60*60);
    //设置路径: 路径不一样 浏览器默认cookie 不是同一个
    //如果向共享cookie 那么 路径设置为/ 就可以了
    c.setPath("/aaaa");

    //cookie失效:将MaxAge 设置成(0);即可 但是要注意 ,路径要相同

    案例:记录上一次的登录时间:

    分析: 如果是第一次登录 就显示 第一次登录
    如果不是第一次登录 就显示上次登录的时间

    总结:
    cookie能不能存储中文:
    tomcat8以前 不可以存储中文和特殊字符
    tomcat8及以后:可以存储中文 但是不能存储特殊字符 (空格)

    cookie的特点和作用:
    1、cookie存储数据在客户端浏览器
    2、cookie存储的数据由大小限制:4kb 同一个域名下的的总的cookie数量(20个)


    补充:el表达式对 cookie的支持 ${}

    ${cookie.msg.value}

    注意:

    cookie.msg : 通过cookie的key值 获取整个cookie对象
    cookie.msg.value: 通过javabean导航的规则 获取cookie对象的值

    Session:
    Session是由服务器产生,保存在服务器中
    一个用户 对应一个session( 一个浏览器 对应一个session)

    session的原理: JessionId session是依赖于cookie的

    注意:如果服务器关闭 ,那么会产生一个新的session 和 新的session id

    session的常用方法:
    request.getSession()
    setAttribute() getAttribute()
    removeAttribute()


    session 的默认有效时间:30分钟
    session 失效的方法:
    1、配置web.xml
    <session-config>
    <session-timeout>1</session-timeout>
    </session-config>
    2、手动的干掉session
    session.invalidate();

    3、代码设置session的保存时间
    session.setMaxInactiveInterval(); 单位秒


    验证码案例:session

    javaweb:三大组件
    servlet、Filter、listener


    Filter:掌握 过滤器

    概念:
    生活中:净水器、空气净化器、土匪……
    web中过滤器:当我们访问服务器的资源的时候,过滤某些请求,完成一些特殊的功能
    作用:
    一般用于完成通用的操作。例如:登录验证、统一字符编码……

    入门:
    步骤:
    1、定义一个类,实现Filter接口
    2、复习方法
    3、配置Filter
    1、web.xml

    <!--<filter>-->
    <!--<filter-name>FilterDemo1</filter-name>-->
    <!--<filter-class>com.xmcc.filter.FilterDemo1</filter-class>-->
    <!--</filter>-->
    <!--<filter-mapping>-->
    <!--<filter-name>FilterDemo1</filter-name>-->
    <!--<url-pattern>/login.jsp</url-pattern>-->
    <!--</filter-mapping>-->
    2、注解
    @WebFilter("/login.jsp")

    过滤器的执行流程:
    1、执行过滤器doFilter()
    2、执行放行方法
    3、执行filterChain.doFilter() 后的代码

    Filter的声明周期:
    1、init() 在服务器启动后 创建Filter对象的时候 执行一次
    2、doFilter() 每一次请求被拦截 都会执行一次
    3、destroy() 在服务器关闭以后 Filter对象被销毁的时候 调用一次

    过滤器的配置:
    1、拦截路径的配置:
    /*: 拦截全部
    /login.jsp : 只拦截login.jsp
    /jsp/* : 拦截 jsp路径下的所有资源
    *.jsp: 拦截所有的jsp资源
    2、拦截方式:资源被访问的方式
    Filter四种拦截方式:
    * request(默认)
    * forward (拦截转发)
    * include (拦截包含)
    * error (只拦截错误页面)

    注解配置:
    dispatcherTypes={DispatcherType.FORWARD}
    web.xml配置

    <filter-mapping>
    <filter-name>FilterDemo1</filter-name>
    <url-pattern>/login.jsp</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    </filter-mapping>

    过滤器链的介绍

    执行顺序;
    FilterDemo1---去
    FilterDemo2---去
    FilterDemo2----回
    FilterDemo1---回

    注意:如果是通过web.xml配置的filter

    谁配置在前面 谁就先执行

    如果是注解:
    根据Filter的名字 一个一个字母的比较 小的先执行
    例如:AFilter 和 BFilter 那么 AFilter 先执行


    案例:登录验证


    Listener:监听器(了解)

    事件监听:
    事件:一件事情
    事件源:事件发生的地方
    监听器:一个对象
    注册监听:将事件、事件源、监听器绑定在一起,当事件源上发生某个事件的时候 就执行监听器的代码

    web:8种监听器

    步骤:
    1、定义一个类
    2、复写方法
    3、配置监听器
    1、web.xml
    <listener>
    <listener-class>com.xmcc.listener.MyListener</listener-class>
    </listener>
    2、注解
    @WebListener

    例如:ServletContextListener
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
    //监听ServletContext的创建
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
    //监听ServletContext对象的销毁
    }

    作用:获取初始化参数
    1、设置初始化的参数
    web.xml中设置初始化参数

    <!-- 设置初始化参数 -->
    <context-param>
    <param-name>name</param-name>
    <param-value>coco</param-value>
    </context-param>

  • 相关阅读:
    java spring boot 跳转
    了解什么是 redis 的雪崩、穿透和击穿
    小白学k8s(12)-k8s中PV和PVC理解
    小白学k8s(11)-k8s中Secret理解
    小白学k8s(10)-k8s中ConfigMap理解
    小白学k8s(9)-gitlab-runner实现go项目的自动化发布
    小白学k8s(8)-Bazel部署go应用
    记go中一次http超时引发的事故
    小白学k8s(7)helm[v3]使用了解
    小白学k8s(6)使用kubespray部署k8s
  • 原文地址:https://www.cnblogs.com/lyhhary/p/10403220.html
Copyright © 2020-2023  润新知