本文详细介绍了会话技术Session
Java server Pages : java服务器端页面
- 可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码*用于简化书写!!!
JSP本质上就是一个servlet
<%----%>︰可以注释所有
1、request
2、response
3、out::字符输出流对象。可以将数据输出到页面上。和response.getwriter()类似


概念∶服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。
浏览器访问Web服务器时,服务器会为每一个浏览器在服务器端的内存中分配空间,单独创建一个Session对象,该对象有一个ld属性,其值唯一,一般称之为SessionId ,并且服务器会将这个Sessionld(使用Cookie的方式)发送给浏览器;浏览器再次访问服务器时,会将SessionId发送给服务器,服务器可以依据Sessionld找到对应的Session对象。
session 是依赖于cookie来实现的。
服务器如何确保在一次会话中,多次获取的Session对象是同一个?

一、当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
cookie c = new Cookie( "JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addcookie(c);
二、客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
不是同一个,但是要确保数据不丢失(tomcat已经帮我们做了)
session的钝化:
session的活化:
三、session什么时候被销毁?
1、服务器关闭。
2.、session对象调用invalidate() 。
3、 session的默认失效时间为30分钟
session的特点
session与cookie的区别:
用户访问需要保护的资源时,可以使用Session验证的方式来保证其安全性,比如要求登陆后才能访问的资源实现Session验证,遵循以下步骤
package com.qst.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SessionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
//当参数为false时,有session对象返回session对象,无Session对象返回null
//HttpSession session=request.getSession(false);
当参数为true时,有session对象返回session对象,无Session对象时创建一个新session对象返回。
// HttpSession session2=request.getSession(true);
//request.getSession(true)等价于request.getSession()。
HttpSession session=request.getSession();
//设置Session生存时间
session.setMaxInactiveInterval(3);
System.out.println(session.getId());
PrintWriter out=response.getWriter();
out.println(session.getId()+"<br/>");
//删除Session对象
// session.invalidate();
}
}