会话跟踪
    http特点是无状态协议,相互独立的,互不干扰。
    (1)、用户第一次访问系统,后端给与返回jessionid
    (2)、浏览器,会将jsessionid存储到cookie中
    (3)、后续的所有请求,都会在请求头中将cookie携带到后端去校验
    (4)、如果没有,那么则返回一个新的jsessionid
    判断是否登录的标准:
    (1)、先判断Session是否存在
    (2)、再判断是否有登录属性
    过滤器Filter
    作用:判断是否登录,统一字符集,防SQL注入,脱敏处理
    过滤器的执行在servlet之前,而且可以定义多个过滤器,也叫做过滤器链

    12.30Java学习总结 - 图1
    针对同一请求,先执行相同的urlpatterns的过滤器,再执行相同的servletNames的过滤器
    比如:login请求 -> /login -> ls
    Filter 跟Servlet 的生命周期一样!
    编译,加载,实例化,初始化,服务化,销毁
    服务化多次,其它都是1次
    Servlet 是多线程单实例的,过滤器也是!
    Servlet 可以配置初始化参数,Filter也可以:
    Servlet 有一个配置类ServletConfig ,Filter 也有一个配置类FilterConfig
    配置方法

    1. @WebFilter(filterName=”demo01Filter”,urlPatterns={“/*”},initParams={
    2. @WebInitParam(name=”encoding”,value=”utf-8”)
    3. })

    可以在过滤器中统一设置字符编码集,避免重复代码

    1. HttpServletRequest req =(HttpServletRequest) request;
    2. HttpServletResponse resp =(HttpServletResponse) response;
    3. req.setCharacterEncoding(“utf-8”);
    4. resp.setCharacterEncoding(“utf-8”);
    5. //放行
    6. chain.doFilter(request, response);

    监听器:Listener
    Servet:接收用户的请求
    Filter:过滤用户的请求
    Listener:监听三大作用的变化
    三大作用域:request,session,ServletContext
    (1)、监听3大作用域对象的生命周期(创建-使用-销毁)
    (2)、监听3大作用域对象身上属性的变化
    监听属性变化:
    ServletRequestAttributeListener(请求属性)
    HttpSessionAttributeListener(会话)
    ServletContextAttributeListener(上下文属性)
    不然可以统计在线人数,登录人数
    监听器配置方式

    第1种配置方式:web.xml
    com.woniuxy.web01.listener.OnLineCountListener
    第2种注解方式:@WebListener