session和浏览器以及sessionAPI
HttpSession 和 客户端浏览器:
session与浏览器
session保存在服务器,而sessionId通过Cookie发送给客户端,但这个Cookie的生命是-1,即只在浏览器内存中存在,也就是说如果用户关闭了浏览器,那么这个Cookie就丢失了。
当用户再次打开浏览器访问服务器时,就不会有sessionId发送给服务器,那么服务器会认为你没有session,所以服务器会创建一个session,并在响应中把sessionId中到Cookie中发送给客户端。
你可能会说,那原来的session对象会怎样?
当一个session长时间没人使用的话,服务器会把session删除了!这个时长在Tomcat中配置是30分钟,可以在${CATALANA}/conf/web.xml找到这个配置,当然你也可以在自己的web.xml中覆盖这个配置!
session的其他API
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '01-session.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
String id= session.getId();
out.println(id);
// 获得session 的上次访问的时间:
long time = session.getLastAccessedTime();
String timeStrr = new Date(time).toString();
out.println(timeStrr);
//获得最大的不活动时间“
int num = session.getMaxInactiveInterval();
out.println(num);
// session 对象的销毁:
session.invalidate() ;
%>
</body>
</html>
URL重写:
如果客户端浏览器禁用cookie,那么调用下面这个方法可以智能判断
客户端禁用cookie: 携带参数
客户端没有禁用: 不携带参数