首页 > 代码库 > 会话_课后回顾和相关案例

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

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=http://www.mamicode.com/"login">
12          <input type="submit" name="operate" value=http://www.mamicode.com/"register">
13     
14     </form>
15 </body>
16 </html>

 

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