• Session会话 Cookie JSTL标签


    Cookie 

    1) HTTP是无状态协议(连接结束后就自动断开),服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出。这样的设计严重阻碍的Web程序的设计。如:在我们进行网购时,买了一条裤子,又买了一个手机。由于http协议是无状态的,如果不通过其他手段,服务器是不能知道用户到底买了什么。而Cookie就是解决方案之一。
    2) Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有了Cookie之后,每次向服务器发送请求时都会同时将该信息发送给服务器,服务器收到请求后,就可以根据该信息处理请求。
    3) Cookie的用途
      用户登录状态的保持
    4) Cookie的限制性
      ① Cookie作为请求或响应报文发送,无形中增加了网络流量。
      ② Cookie是明文传送的安全性差。
       各个浏览器对Cookie有限制,使用上有局限

    5) Cookie的具体使用

      1、创建Cookie,并将Cookie保存到浏览器端

            //演示Cookie
            Cookie cookie = new Cookie("username","Admin");
            // 保存到浏览器端
            response.addCookie(cookie);
            
            //cookie的默认时效 就是当前浏览器的内存. 
            
            //设置cookie的保存时间
            //cookie.setMaxAge();
            //设置cookie的路径  默认的路径就是web应用名
            //cookie.setPath(uri);

      2、读取Cookie,只会发于当前请求路径相符的Cookie

            //获取cookie
            
            Cookie [] cookies = request.getCookies();
            if(cookies!=null) {
                for (Cookie cookie : cookies) {
                    System.out.println(cookie.getName() + " : " + cookie.getValue());
                }
            }else {
                System.out.println("没有Cookie");
            }

    Session
    1) 使用Cookie有一个非常大的局限,就是如果Cookie很多,则无形的增加了客户端与服务端的数据传输量。而且由于浏览器对Cookie数量的限制,注定我们不能再Cookie中保存过多的信息,于是Session出现

    2) Session的作用就是在服务器端保存一些用户的数据,然后传递给用户一个名字为JSESSIONID的Cookie,这个JESSIONID对应这个服务器中的一个Session对象,通过它就可以获取到保存用户信息的Session。

    3) Session的工作原理
        Session的创建时机是在request.getSession()方法第一次被调用时。
        Session被创建后,同时还会有一个名为JSESSIONID的Cookie被创建。
      ③ 这个Cookie的默认时效就是当前会话。
      ④ 简单来说,Session机制也是依赖于Cookie来实现的

    4) Session的具体使用

            //获取session对象
            
            HttpSession session = request.getSession();
            
            System.out.println("当前请求的session对象:" + session);
            System.out.println("sessionID:" + session.getId());

    5) Session的时效问题
        Session默认有效时间为30分钟,可以在服务器的web.xml配置中修改.

    6)URL重写(当Cookie被禁用时采取的方式)

    1) 整个会话控制技术体系中,保持JSESSIONID的值主要通过Cookie实现。但Cookie在浏览器端可能会被禁用,所以我们还需要一些备用的技术手段,例如:URL重写。
    2) URL重写其实就是将JSESSIONID的值以固定格式附着在URL地址后面,以实现保持JSESSIONID,进而保持会话状态。这个固定格式是:URL;jsessionid=xxxxxxxxx
    3) 实现方式

    JSTL标签

            JSTL:
                <c:if>   
                <c:foreach> 等
            
            使用标签:
                1. 导入标签库 jar包
                2. 在jsp页面中引入标签库。  <%@taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>
        <c:if test="${empty  emps}">
            <h2 align="center">没有任何员工信息。</h2>
        </c:if>
    
    
                <!-- 通过循环 显示 员工数据 -->
                <!-- 
                    c:forEach  循环 迭代
                        items: 指定要迭代的集合
                        var: 代表当前迭代出的元素
                 -->
                <c:forEach items="${emps}" var="emp">
                    <tr align="center">
                        <td>${emp.id }</td>
                        <td>${emp.lastName }</td>
                        <td>${emp.email }</td>
                        <td>${emp.gender==0?"女":"男" }</td>
                        <td>${emp.dept.deptName }</td>
                        <td>
                            <a href="#">Edit</a>
                            &nbsp;&nbsp;
                            <a href="#">Delete</a>
                        </td>
                    </tr>
                </c:forEach>
  • 相关阅读:
    01. 容器技术
    02. 关于 docker
    MAUI + MVVM + SIEMENS 跨平台应用实战
    从单例谈doublecheck必要性,多种单例各取所需
    git创建远程分支
    fabric peer节点账本验证器相关代码解读
    git 忽略 .idea文件
    Machine Learning With Go 第4章:回归
    一个恢复CSI挂载信息的解决方法
    使用kubeseal加密和管理k8s集群的secret
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12858430.html
Copyright © 2020-2023  润新知