会话跟踪技术和Filter

目录

会话跟踪技术

一:简介

二:Cookie

发送Cookie

获取Cookie

3.Cookie原理

4.Cookie使用细节

三:Session

四:小结

Filter

一:简介

二:Filter快速入门

三:Filter执行流程

四:拦截路径配置

五:过滤器链

会话跟踪技术

一:简介

1.会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应

2.会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便同一次会话的多次请求间共享数据

3.HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享

4.实现方式:

①客户端会话跟踪技术:Cookie

②服务端会话跟踪技术:Session

二:Cookie

1.Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问

2.Cookie基本使用:

发送Cookie

①创建Cookie对象,设置数据

②发送Cookie到客户端:使用response对象

Cookie cookie = new Cookie("username","zs");

response.addCookie(cookie);

--------------------------------------------------------------------------------------------------

获取Cookie

③获取客户端携带的所有Cookie,使用request对象

④遍历数组,获取每一个Cookie对象

⑤使用Cookie对象方法获取数据

Cookie[] cookies = request.getCookies();

for (Cookie cookie : cookies) {
    String name = cookie.getName();
    if (name.equals("username")){
        String value = cookie.getValue();

        System.out.println(name + ":" + value);

        break;
    }

3.Cookie原理

Cookie的实现是基于HTTP协议的

①响应头:set-cookie

②请求头:cookie

4.Cookie使用细节

①Cookie存活时间

默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁

setMaxAge(int seconds):设置Cookie存活时间

(1)正数:将Cookie写入浏览器所在的电脑硬盘里,持久化存储。到时间自动删除

(2)负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁

(3)零:删除对应Cookie

②Cookie存储中文

(1)Cookie 不能直接存储中文

(2)如需要存储,则需要进行编码:URL编码

三:Session

1.服务端会话跟踪技术:将数据保存到服务端

2.JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能

3.使用:

①获取Session对象

HttpSession session = request.getSession();
session.setAttribute("usename","张三");

②Session对象功能

HttpSession session = request.getSession();
Object username = session.getAttribute("username");
System.out.println(username);

4.Session原理

Session是基于Cookie实现的

5.Session使用细节

①Session钝化、活化:

(1)钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中

(2)活化:再次启动服务器后,从文件中加载数据到Session中

②Session销毁:

(1)默认情况下无操作,30分钟自动销毁

(2)调用Session对象的invalidate()方法

四:小结

1.Cookie和Session都是来完成一次会话内多次请求间数据共享的

2.区别:

①存储位置:Cookie是将数据存储在客户端,Session将数据存储在服务端

②安全性:Cookie不安全,Session安全

③数据大小:Cookie最大3KB,Session无大小限制

④存储时间:Cookie可以长期存储,Session默认30分钟

⑤服务器性能:Cookie不占服务器资源,Session占用服务器资源

---------------------------------------------------------------------------------------------------------------------------------

Filter

一:简介

1.概念:Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一

2.过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能

3.过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等...

二:Filter快速入门

@WebFilter("/*")
public class Filter implements javax.servlet.Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException{
    }

    @Override
    public void doFilter(ServletRequest Request, ServletResponse Response, FilterChain Chain) throws IOException, ServletException {
        System.out.println("Filter被执行了");
        Chain.doFilter(Request,Response);
    }

    @Override
    public void destroy() {

    }
}

三:Filter执行流程

1.放行后访问对应资源,资源访问完成后,还会回到Filter中

2.回到Filter中会执行放行后的逻辑

执行放行前的逻辑--->放行--->访问资源--->执行放行后逻辑

四:拦截路径配置

Filter可以根据需求,配置不同的拦截资源路径

1.拦截具体的资源:/index.jsp:只有访问index.jsp时才会被拦截

2.目录拦截:/user/*:访问/user下的所有资源,都会被拦截

3.后缀名拦截:*.jsp:访问后缀名为jsp的资源。都会被拦截

4.拦截所有:/*:访问所有资源,都会被拦截

五:过滤器链

一个web应用,可以配置多个过滤器,这多个过滤器被称为过滤器链

  • 28
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值