Java Session
概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端
简单例子
设置session对象:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Session;
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 SessionDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置session
HttpSession session = request.getSession();
//设置数据
session.setAttribute("msg", "hello session");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
获取数据
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Session;
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 SessionDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取session
HttpSession session = request.getSession();
//获取数据
Object msg= session.getAttribute("msg");
System.out.println(msg);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
之后必须允许第一个代码后,才能获取到数据。同时如果关闭服务器了那么数据就会清空
原理
session是依赖于cookie的
当第一次访问网站时。没有cookie。那么服务器就会创建一个session对象并给一个唯一的ID。之后重新访问网站,会通过cookie请求头获得id。然后服务器就会通过ID获取session
细节一
客户端关闭,服务器不关闭。两次获得的session默认情况下不是同一个(相当于关闭浏览器 重新打开)
可以通过设置cookie 根据上面原理来避免这种情况
细节2
客户端不关闭,服务器关闭。两次获得的session默认情况下不是同一个
不是同一个但是我们在功能上需要做到数据不丢失。
利用session钝化机制:将session对象系列化保存在硬盘里
session活化机制:服务器启动后,将session文件转化为内存中的session对象
这样虽然session不一样,但是里面保存的数据是一样的。
细节3
session被关闭的条件:
1.服务器关闭
2.调用invalidate方法
3.默认生存时间30分钟 可在web.xml文件中配置信息修改
特点和cookie的区别


浙公网安备 33010602011771号