【15】Session

本文详细介绍了Web开发中Session的工作原理及其实现方式。包括服务器如何识别不同的用户浏览器,并保持用户会话状态,以及如何通过设置Cookie的有效时间来实现浏览器关闭后仍能保留用户会话。

Session

一、概述

当用户访问服务器的web资源时,服务器会给每个用户浏览器创建一个独享会话对象(Session对象),也是一个域对象,存放用户的数据。当用户再次访问时,就可以拿出这些数据给用户服务了。

二、实现原理

  1. 服务器如何识别不同用户浏览器的?

    当用户浏览器第一访问服务器时,服务器向浏览器发送一个带JSESSIONID的cookie。当用户浏览器再次发出请求时,通过判断带过来的Cookie来识别不同的用户浏览器。

  2. 服务器怎么知道浏览器关闭了呢?

    因为服务器发送给浏览器的cookie没有设置有效时间,cookie数据是存在内存中的,所以关闭浏览器,cookie被清除。下次发出请求时浏览器没有带过来相关的cookie,服务器会重新创建一个session。那么,旧的session呢?它有个定时器,默认是30分钟,在这之后没有新的请求,session就会被清除。

三、Servlet Session API

  1. 获取Session

    Session的创建是服务器的事。已经存在就获取,不存在就重建;一个浏览器独占一个Session对象。

    request.getSession();
  2. 添加和获取Session数据

    session.getAttribute(name);
    session.setAttribute(name,value);
  3. 实现浏览器关闭后还能找到原来的session

    1. 自己创建一个同名(JSESSIONID)的Cookie,覆盖原来的Cookie,再设置有效时间

      response.addCookie(new Cookie("JSESSIONID",session.getId()+"").setMaxAge(60*30));
    2. 确保Cookie有效时间和Session销毁时间一致

      tomcat服务器的默认session销毁时间是30min
      可以通过在项目中的web.xml添加session-timeout来实现延长session的生存时间

      <session-config>
      <session-timeout>30</session-timeout>
      </session-config>
### 配置锐捷交换机的监控会话(Monitor Session) 在锐捷交换机上,可以使用**端口镜像(Port Mirroring)**功能来配置监控会话(`monitor session`),以便将指定端口的数据流量复制到另一个端口进行分析。该功能常用于网络故障排查、流量监控和安全审计。 #### 创建监控会话 要创建一个监控会话并指定源端口与目标端口,可使用以下命令: ```bash monitor session 1 type erspan-source source interface fastethernet0/15 both destination interface fastethernet0/16 ``` 上述命令中: - `monitor session 1` 表示创建编号为1的监控会话。 - `type erspan-source` 指定该会话为本地镜像会话(ERSPAN源)。 - `source interface fastethernet0/15 both` 设置源端口为 `fastethernet0/15`,并镜像其双向流量(both表示同时镜像入向和出向流量)。 - `destination interface fastethernet0/16` 设置目标端口为 `fastethernet0/16`,即被镜像流量将发送至该端口[^1]。 #### 查看监控会话状态 完成配置后,可通过以下命令查看当前监控会话的状态信息: ```bash show monitor session 1 ``` 此命令将显示会话编号、源端口、目标端口及其镜像方向等信息。例如输出可能如下: ``` Session: 1 Source Ports: Rx Only : None Tx Only : None Both : Fa0/15 Destination Ports: Fa0/16 ``` 该输出表明会话1已成功配置,并正在镜像 `Fa0/15` 的双向流量到 `Fa0/16` [^1]。 #### 删除监控会话 如需删除某个监控会话,可使用以下命令: ```bash no monitor session 1 ``` 此命令将清除编号为1的监控会话配置,并停止其镜像行为。 #### 注意事项 - 在配置监控会话前,确保目标端口未连接关键业务设备,以避免镜像流量影响正常通信。 - 源端口可以是多个,但目标端口只能是一个。 - 镜像流量不会修改原始数据流的行为,仅用于监控用途。 --- ### 示例配置汇总 以下是一个完整的锐捷交换机端口镜像配置示例: ```bash monitor session 1 type erspan-source source interface fastethernet0/15 both destination interface fastethernet0/16 ``` 执行完成后,使用 `show monitor session 1` 命令验证配置是否生效。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值