文章目录
Session基本使用
案例练习
创建servlet
package com.taotao.web.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* create by 刘鸿涛
* 2022/4/2 15:06
*/
@SuppressWarnings({"all"})
@WebServlet("/demo1")
public class SessionDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//存储到Session中
//1.获取Session对象
HttpSession session = req.getSession();
//2.存储数据
session.setAttribute("username","liuhongtao");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
package com.taotao.web.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* create by 刘鸿涛
* 2022/4/2 15:06
*/
@SuppressWarnings({"all"})
@WebServlet("/demo2")
public class SessionDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取数据,从session中
//1.获取session对象
HttpSession session = req.getSession();
//2.获取数据
Object username = session.getAttribute("username");
System.out.println(username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
测试运行
先访问demo1,再访问demo2
Session原理
案例演示
更改servlet,输出session地址值
package com.taotao.web.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* create by 刘鸿涛
* 2022/4/2 15:06
*/
@SuppressWarnings({"all"})
@WebServlet("/demo1")
public class SessionDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//存储到Session中
//1.获取Session对象
HttpSession session = req.getSession();
System.out.println(session);
//2.存储数据
session.setAttribute("username","liuhongtao");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
package com.taotao.web.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* create by 刘鸿涛
* 2022/4/2 15:06
*/
@SuppressWarnings({"all"})
@WebServlet("/demo2")
public class SessionDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取数据,从session中
//1.获取session对象
HttpSession session = req.getSession();
System.out.println(session);
//2.获取数据
Object username = session.getAttribute("username");
System.out.println(username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
测试运行
先访问demo1,再访问demo2
结论:session地址值完全一样
主要JESSIONID
Session使用细节
Session钝化、活化
安全运行
访问demo1后关闭服务器
安全停止
ctrl + c
再次安全运行
访问demo2
Session销毁:
演示更改Session销毁时间
更改web.xml文件
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<session-config>
<session-timeout>
<!-- 默认30分钟,这里配置了100分钟后销毁-->
100
</session-timeout>
</session-config>
</web-app>
演示直接销毁Session
更改sevletdemo2
package com.taotao.web.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* create by 刘鸿涛
* 2022/4/2 15:06
*/
@SuppressWarnings({"all"})
@WebServlet("/demo2")
public class SessionDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取数据,从session中
//1.获取session对象
HttpSession session = req.getSession();
System.out.println(session);
//销毁
session.invalidate();
//2.获取数据
Object username = session.getAttribute("username");
System.out.println(username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
测试运行
访问demo1,再访问demo2