会话跟踪
http特点是无状态协议,相互独立的,互不干扰。
(1)、用户第一次访问系统,后端给与返回jessionid
(2)、浏览器,会将jsessionid存储到cookie中
(3)、后续的所有请求,都会在请求头中将cookie携带到后端去校验
(4)、如果没有,那么则返回一个新的jsessionid
判断是否登录的标准:
(1)、先判断Session是否存在
(2)、再判断是否有登录属性
过滤器Filter
作用:判断是否登录,统一字符集,防SQL注入,脱敏处理
过滤器的执行在servlet之前,而且可以定义多个过滤器,也叫做过滤器链
针对同一请求,先执行相同的urlpatterns的过滤器,再执行相同的servletNames的过滤器
比如:login请求 -> /login -> ls
Filter 跟Servlet 的生命周期一样!
编译,加载,实例化,初始化,服务化,销毁
服务化多次,其它都是1次
Servlet 是多线程单实例的,过滤器也是!
Servlet 可以配置初始化参数,Filter也可以:
Servlet 有一个配置类ServletConfig ,Filter 也有一个配置类FilterConfig
配置方法
- @WebFilter(filterName=”demo01Filter”,urlPatterns={“/*”},initParams={
- @WebInitParam(name=”encoding”,value=”utf-8”)
- })
可以在过滤器中统一设置字符编码集,避免重复代码
- HttpServletRequest req =(HttpServletRequest) request;
- HttpServletResponse resp =(HttpServletResponse) response;
- req.setCharacterEncoding(“utf-8”);
- resp.setCharacterEncoding(“utf-8”);
- //放行
- chain.doFilter(request, response);
监听器:Listener
Servet:接收用户的请求
Filter:过滤用户的请求
Listener:监听三大作用的变化
三大作用域:request,session,ServletContext
(1)、监听3大作用域对象的生命周期(创建-使用-销毁)
(2)、监听3大作用域对象身上属性的变化
监听属性变化:
ServletRequestAttributeListener(请求属性)
HttpSessionAttributeListener(会话)
ServletContextAttributeListener(上下文属性)
不然可以统计在线人数,登录人数
监听器配置方式
第1种配置方式:web.xml
第2种注解方式:@WebListener