一、session对象
- session机制是一种服务器端的机制,在服务器端保存信息
- 用于存储与用户相关的会话信息
1.1 session与窗口的关系
- 每个session对象都与一个浏览器窗口对应,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)
- 通过超链接打开新的窗口,新窗口的session与其父窗口的session相同
- 每个session都有唯一的session ID public String getId();
代码演示
展示session ID
//首页:
<%
String sessionId = session.getId();
%>
<h1>SESSIONID:<%=sessionId%></h1>
//后台首页:
<%
String sessionId = session.getId();
%>
<h1>SESSIONID:<%=sessionId%></h1>
1.2 使用session对象存储数据
使用session对象存储数据的步骤:
- 使用属性保存数据
- 从属性中读取数据,必要时需要进行数据类型转换
代码演示
使用session保存数据
//doLogin:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<%
//修改request和response的字符集编码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//获取注册的用户名和密码
String userName = request.getParameter("userName");
String userPwd = request.getParameter("userPwd");
if ("admin".equals(userName) && "123456".equals(userPwd)) {
//登录成功,使用绝对定位跳转到后台主页
//重定向跳转:
session.setAttribute("loginUserName",userName); //使用session保存数据
response.sendRedirect(request.getContextPath() + "/manage/index.jsp");
//转发跳转:
//request.getRequestDispatcher("/manage/index.jsp").forward(request,response);
} else {
//登录失败,调回系统登录首页
//这种写法也属于重定向跳转:
out.print("<script>alert('登录失败');location.href=" + request.getContextPath() + "/index.jsp");
out.flush();
}
%>
</body>
</html>
//后台首页:
<%
//String userName = request.getParameter("userName");
//从doLogin的session中调用数据
String loginUserName = (String) session.getAttribute("loginUserName");
%>
<h2><%=loginUserName%></h2>
1.3 会话清除和过期
程序主动清除session数据有两种实现方式:
- 设置会话失效:session.invalidate();
- 只移除会话的一个属性:session.removeAttribute(String name);
服务器主动清除长时间没有再次发出请求的session,两种实现方式:
1.通过setMaxInactiveInterval(int interval)方法,单位是秒
<%
session.setAttribute("loginUser",user);
session.setMaxInactiveInterval(600);
response.sendRedirect("admin.jsp");
%>
2.修改tomcat服务器的web.xml,单位是分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
代码演示
到时间后自动失效
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<%
//修改request和response的字符集编码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//获取注册的用户名和密码
String userName = request.getParameter("userName");
String userPwd = request.getParameter("userPwd");
if ("admin".equals(userName) && "123456".equals(userPwd)) {
//登录成功,使用绝对定位跳转到后台主页
//重定向跳转:
session.setMaxInactiveInterval(30); //到时间后自动失效(30秒)
session.setAttribute("loginUserName",userName); //使用session保存数据
response.sendRedirect(request.getContextPath() + "/manage/index.jsp");
//转发跳转:
//request.getRequestDispatcher("/manage/index.jsp").forward(request,response);
} else {
//登录失败,调回系统登录首页
//这种写法也属于重定向跳转:
out.print("<script>alert('登录失败');location.href=" + request.getContextPath() + "/index.jsp");
out.flush();
}
%>
</body>
</html>
小结
- 用浏览器访问服务器——产生会话
- 通过浏览器在网站登录——在会话中保存数据
- 登录成功后用个人身份进行访问——会话有效期内
- 关闭了浏览器——结束会话
- 服务器主动结束会话——会话到期
- 使会话失效、删除属性——及时释放会话资源
- 程序主动结束会话、会话到期——会话中的数据丢失
二、JSP页面中的包含操作
2.1 JSP中实现页面包含操作的方法
1.使用<%@include%>指令实现静态包含
<%@include file = "URL"%>
2.使用<jsp:include>标签实现动态包含
<jsp:include page = "URL">
2.2 动态包含与静态包含的区别
2.3 application对象
- application对象代表web应用本身,整个web应用共享一个application对象,该对象主要用于在多个JSP页面或servlet之间共享变量
- application对象开始于服务器的启动,终止于服务器的关闭
- application对象实现了用户间的数据共享,可以存放全局变量
application对象常用方法
小结
JSP常用内置对象
三、对象的作用域
3.1 作用域的分类
小结
啊
四、Cookie
4.1 Cookie简介
Cookie是Web服务器保存在客户端的一系列文本信息
Cookie的作用:
- 对特定对象的追踪(Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告)
- 实现各种个性化服务(Cookie能帮助站点统计用户个人资料从而实现各种各样的个性化服务)
- 简化登录(Cookie有效期限未到时,Cookie能使用户在不重新输入用户名和密码的情况下进入曾经浏览过的一些站点)
Cookie在安全方面,容易泄露信息
4.2 session和Cookie的联系
服务器可以将session ID写入Cookie并发送返回客户端,这样客户端就可以在后续的请求中将该Cookie作为身份验证的一部分发送给服务器