• 会话_课后回顾和相关案例


    1.课程回顾:

      会话管理:

        1.会话管理:管理浏览器与服务器之间的会话过程产生的会话数据

        2.Cookie技术:会话数据保存在浏览器的客户端

          Cookie核心的API:

            2.1在服务器端创建Cookie对象

                Cookie cookie = new Cookie(name,value)

            2.2把cookie发送给浏览器端(通过响应头:set.cookie)

                response.addCookie(cookie)

            2.3 浏览器带着cookie信息访问服务器(通过请求头),服务器就能得到Cookie信息

                 Cookies[] cookies = request.getCookies()

            局限:

              1.只能保存字符串类型,不能保存中文

              2.一个cookie不能超过4kb

                        

         3.session技术:会话数据保存在服务器端(内存)

            session核心的API

              1.创建或是得到session      

                HttpSession = request.getSession()

                只是得到session : request.getSession(false)

              2.会话数据保存在session中

                setAttribute(name,数据):保存数据

                session.getAttribute(name):得到数据

                removeAttribute(name)

            注意:

               1.session.setIntactiveInterval(时间):设置session的过期时间:秒

               2.session.invalidate()  手动销毁session对象

    2.session案例:(保存在服务器端的硬盘上,即使服务器重启,数据依然在)

      用户登录

      

     1 package com.java.session;
     2 
     3 import java.io.IOException;
     4 import java.util.Enumeration;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 import javax.servlet.http.HttpSession;
    11 
    12 /**
    13  * Servlet implementation class LoginServlet
    14  */
    15 public class LoginServlet extends HttpServlet {
    16     protected void doGet(HttpServletRequest request, HttpServletResponse response)
    17             throws ServletException, IOException {
    18         request.setCharacterEncoding("utf-8");
    19 
    20         response.setContentType("text/html;charset=utf-8");
    21 
    22         // 处理页面传过来的数据:登陆或注册 用户名和密码
    23 
    24         String name = request.getParameter("username");
    25         String password = request.getParameter("password");
    26         String operate = request.getParameter("operate");
    27 
    28         // 获取session
    29         HttpSession session = request.getSession();
    30 
    31         // 得到session中存储的数据名称
    32         Enumeration<String> names = session.getAttributeNames();
    33 
    34         boolean b = true;
    35 
    36         if ("login".equals(operate)) {
    37             // 如果是登陆操作 判断用户名密码是否正确
    38             while (names.hasMoreElements()) {
    39                 String name2 = names.nextElement();
    40                 if (name.equals(name2)) {
    41                     System.out.println(name2);
    42                     // 找到用户名
    43                     b = false;
    44                     String p = (String) session.getAttribute(name2);
    45                     System.out.println(p);
    46                     if (password.equals(p)) {
    47                         // 用户名与密码匹配
    48                         response.getWriter().write("登陆成功");
    49                     } else {
    50                         // 用户名与密码不匹配
    51                         response.getWriter().write("用户名与密码不匹配:" + "用户名:" + name + "===" + "密码:" + password);
    52                     }
    53                 }
    54             }
    55             if (b) {
    56                 // 没找到用户名
    57                 response.getWriter().write("用户名错误!!!");
    58             }
    59 
    60         } else if ("register".equals(operate)) {
    61             // 如果为注册 判断用户名是否重复
    62             while (names.hasMoreElements()) {
    63                 String name2 = names.nextElement();
    64                 if (name.equals(name2)) {
    65                     // 用户名已存在
    66                     response.getWriter().write("此用户名已存在,请重新注册!");
    67                     b=false;
    68                 }
    69             }
    70 
    71             if (b) {
    72                 // 用户名不存在
    73                 session.setAttribute(name, password);
    74                 response.getWriter().write("注册成功!!!" + "用户名:" + name + "======" + "密码:" + password);
    75             }
    76 
    77         }
    78 
    79     }
    80 
    81 }
     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4 <meta charset="UTF-8">
     5 <title>Insert title here</title>
     6 </head>
     7 <body>
     8     <form action="LoginServlet">
     9         用户名:<input type="text"  name="username" /> <br/>
    10         密码:<input type="password" name="password"/ ><br />
    11         <input type="submit" name="operate" value="login">
    12          <input type="submit" name="operate" value="register">
    13     
    14     </form>
    15 </body>
    16 </html>
  • 相关阅读:
    不可变类
    单例类
    二叉树的三种遍历
    先序创建二叉树
    【笔记】 mysql与php的连接以及非select的例子
    今日思考之 20200730:非阻塞(NIO)到底带来了什么改变?
    jdk源码学习之: Object#equals() 和 Object#hashCode()
    异想天开 之 快递行业与高并发、高吞吐
    分享系列 之 BIO NIO AIO
    挖坑:epoll 函数如何能准确知道哪些 FD 是活跃的呢?
  • 原文地址:https://www.cnblogs.com/syousetu/p/6547565.html
Copyright © 2020-2023  润新知