步骤
- 获取 session 对象
- 通过 setAttribute 写入 session
- 获取 session 的值
- session 销毁(手动销毁和自动销毁)
设置 session
package com.demo;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
public class SetSessionDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置字符集
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html; charset=utf-8");
PrintWriter writer = resp.getWriter();
// 得到 Session 对象
HttpSession session = req.getSession();
// 写入 session
session.setAttribute("GoodsDetail", " 商品详情 ");
// 获取 session id
String id = session.getId();
// 判断 session 否新建
if (session.isNew()) {writer.write("session 创建成功, session id 为: " + id);
} else {writer.write("session 已经在服务器中存在了,ID: " + id);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);
}
}
获取 session 中的值
package com.demo;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class GetSessionDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置字符集
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html; charset=utf-8");
// 得到 Session
HttpSession session = req.getSession();
String goodsDetail = (String) session.getAttribute("GoodsDetail");
resp.getWriter().write(goodsDetail);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);
}
}
session 销毁
手动
package com.demo;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class DelSessionDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HttpSession session = req.getSession();
session.removeAttribute("GoodsDetail");
session.invalidate();}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);
}
}
自动过期销毁
<session-config>
<!-- 设置 session 默认的失效时间, 以分钟为单位 -->
<session-timeout>1</session-timeout>
</session-config>
web.xml
<servlet>
<servlet-name>setSessionDemo</servlet-name>
<servlet-class>com.demo.SetSessionDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>setSessionDemo</servlet-name>
<url-pattern>/set/session/demo</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>getSessionDemo</servlet-name>
<servlet-class>com.demo.GetSessionDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getSessionDemo</servlet-name>
<url-pattern>/get/session/demo</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>delSessionDemo</servlet-name>
<servlet-class>com.demo.DelSessionDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>delSessionDemo</servlet-name>
<url-pattern>/del/session/demo</url-pattern>
</servlet-mapping>
正文完