10
- 通过会话对象的 setMaxInactiveInterval() 方法设置会话的最大不活动时间(个别):
session.setMaxInactiveInterval(600); //单位为”秒“
-
会话对象除了在超过最大不活动时间自动失效外,也可以通过调用invalidate() 方法让其立即失效。
-
示例:设置会话立即失效:
session.invalidate ();
-
服务器在执行会话失效代码后,会清除会话对象及其所有会话域属性,同时响应客户端浏览器清除 Cookie 中的 JSESSIONID 。
-
在实际应用中,此方法多用来实现系统的“安全退出”,使客户端和服务器彻底结束此次回话,清除所有会话相关信息,防止会话劫持等黑客攻击。
5.演示
演示使用Session实现购物车
创建phoneChoose.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%
//session.removeAttribute(“shoppingCar”);
//session.invalidate();
%>
<%
out.print(“
手机商城
”);
%>
华为P30
华为mate30
iphone11
iphone12
小米10pro
三星S20
iqoo3
vivo NEX3
创建ShoppingCarServlet
package com;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
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;
/**
- Servlet implementation class ShoppingCarServlet
*/
@WebServlet(“/ShoppingCarServlet”)
public class ShoppingCarServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
- @see HttpServlet#HttpServlet()
*/
public ShoppingCarServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
-
@see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
-
response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(“utf-8”);
HttpSession session = request.getSession();
Map<String, Integer> car = (Map<String, Integer>) session.getAttribute(“shoppingCar”);
if (car == null) {
car = new HashMap<>();
}
String[] phones = request.getParameterValues(“phone”);
if (phones != null && phones.length > 0) {
for (String phone : phones) {
// 判断购物车中是否有某手机的购买信息
if (car.get(phone) != null) {
int num = car.get(phone);
car.put(phone, num + 1);
} else {
// 第一次购买手机
car.put(phone, 1);
}
}
}
session.setAttribute(“shoppingCar”, car);
response.sendRedirect(“ShoppingListServlet”);
}
/**
-
@see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
-
response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
创建ShoppingListServlet
package com;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
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;
/**
- Servlet implementation class ShoppingListServlet
*/
@WebServlet(“/ShoppingListServlet”)
public class ShoppingListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
- @see HttpServlet#HttpServlet()
*/
如何快速更新自己的技术积累?
- 在现有的项目里,深挖技术,比如用到netty可以把相关底层代码和要点都看起来。
- 如果不知道目前的努力方向,就看自己的领导或公司里技术强的人在学什么。
- 知道努力方向后不知道该怎么学,就到处去找相关资料然后练习。
- 学习以后不知道有没有学成,则可以通过面试去检验。
我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!
以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目
和要点都看起来。
- 如果不知道目前的努力方向,就看自己的领导或公司里技术强的人在学什么。
- 知道努力方向后不知道该怎么学,就到处去找相关资料然后练习。
- 学习以后不知道有没有学成,则可以通过面试去检验。
我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!
以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目
[外链图片转存中…(img-JBHh320R-1719263873151)]
[外链图片转存中…(img-LGVGdVaM-1719263873152)]