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>