session是什么?
session是浏览器和服务器的一次会话,它保存一些数据,这是为了实现各个http请求之间建立联系。为什么http请求之间没有联系呢?因为它们是无状态的,不会记录它们之间的关系。比如登录一个网站,我们想要只登陆一次就可以一直访问这个网站所有网页,没有session,我们没打开一个网页就要登录一次,而在session中我们可以记录下账户和密码,这样在网站的域名下,session就是一个全局变量,所有网页可以从session中获取账户名和密码。在session之前,我们是用cookie实现这个功能的,cookie把用户数据存储在浏览器,用户可以查看并修改,为了避免用户操作,使用存储在服务器的用户独占的session。
session怎么让服务器记住用户?
浏览器第一次请求服务器,服务器会创建一个session,并把session id以cookie的形式返回给浏览器,下一次访问,浏览器会把存储在cookie中的JSESSIONIDY一并传递给服务器,服务器会根据session id 匹配各个用户的session对象。
禁用cookie怎么使用session?
两个方法:
1.response.encodeURL(String url) 重写表单action和超链接url
String url = request.getContextPath + "/Demo1servlt?id=" + a.getId();
url = response.encodeURL(url);
response.getWriter().println("<a href='" + url "'></a>");
2.response.encodeRedirectURL(String url)
String url = response.encodeRedirectURL(request.getContextPath + "/DemoServlet");
response.senRedirect(url);
session的销毁。
代码:
session.invalidate();
web.xml
默认30分钟销毁
<session-config>
<session-timeout>30</session-config>
</session-config>