1.什么是回话
一个回话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求、响应过程.session对象用来存储有关用户的所有信息.
2.利用回话机制实现访问控制
访问控制实例:下载电子书时,系统会提示用户登录
3.session对象常用方法
4.session与窗口的关系
每个session对象都与浏览器一一对应,重新开启一个浏览器,相当于重新创建一个session对象;通过超链接打开新窗口,新窗口的session与其父窗口的session相同.
5.我们开始创建session实现访问控制
(1)创建Web项目SessionDemo和User实体类
(2).修改web目录首页的index.jsp
(3).创建登录页面login.jsp
代码如下
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<form action="do_login.jsp" method="post">
<table border="1" cellpadding="10" style="margin: 0px auto">
<tr>
<td align="center">用户名</td>
<td><input id="uname" type="text" name="username"></td>
</tr>
<tr>
<td align="center">密码</td>
<td><input id="upwd" type="password" name="password"></td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
String errMsg= (String) session.getAttribute("errMsg");
if (errMsg !=null){
out.print("<script>alert('"+errMsg+"')</script>");
}
</body>
(4)处理登录页面do_login.jsp
代码如下
<%@ page import="net.ysy.bean.User" %><%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2020/3/31
Time: 21:13
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录跳转页面</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
//获取登录表单信息
String username=request.getParameter("username");
String password=request.getParameter("password");
//判断登录用户名和密码
if (username.equals("佳宁") && password.equals("666")) {
//创建用户对象
User user=new User();
//设置用户对象属性
user.setUsername(username);
user.setPassword(password);
//将登录用户信息保存到session里
session.setAttribute("LOGINED_USER",user);
//清除session里的errMsg属性
if (session.getAttribute("errMsg")!=null){
session.removeAttribute("errMsg");
}
//采用重定向,跳转到首页
response.sendRedirect("index.jsp");
}else{
//在session里创建errMsg属性
session.setAttribute("errMsg","用户名或者密码错误,请重新登录");
//采用从定向,跳转到登录页面
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
(5)创建添加新闻页面,增加登录验证.
(6).启动服务器查看效果
(7)访问登录页面
(8)跳转登录成功成功
(9).重启服务器,我们直接访问add_news新闻页面,会弹出消息框
如果出现乱码问题,我们需要在do_login.jsp指定utf-8编码.
Cookie与sesion的比较
1.session是在服务器保存用户信息,Cookie是在客户端保存用户信息
2.session中保存的是对象,Cookie保存的是字符串
3.session随回话结束而关闭,Cookie可以长期保存在客户端
4.Cookie通常用于保存不重要的用户信息,重要的信息使用session保存.