Web阶段:第十七章:Session会话

简介: Web阶段:第十七章:Session会话

什么是Session会话?

1.Session是会话,表示客户端和服务器之间联系的一个对象。

2.Session是一个域对象。

3.Session经常用来保存用户的数据。

如何创建Session和获取(id号,是否为新)

调用一个方法request.getSession().

第一次调用是创建Session对象并返回

之后调用都是获取Session对象。

isNew() 返回当前Session是否是刚创建出来的,返回true表示刚创建。返回false表示获取。

每个Session会话都有自己的唯一标识,就是ID。

Session域数据的存取

setAttribute 保存数据

getAttribute 获取数据

protected void setAttribute(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
  String username = request.getParameter("username");
  HttpSession session = request.getSession();
  session.setAttribute("key1", username);
  response.getWriter()
  .write("已经把你请求过来的参数【" + username + "】给保存到Session域中");
}
protected void getAttribute(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
  Object attribute = request.getSession().getAttribute("key1");
  response.getWriter().write("你刚刚保存的数据是:" + attribute);
}

Session生命周期控制

在Tomcat服务器上,Session的默认存活时间是:30分钟。因为在Tomcat的配置文件web.xml中早以有如下的配置:

以下的配置决定了在此tomcat服务器上所有的web工程,创建出来的所有Session对象。默认超时时间都是30分钟。

  <!-- ==================== Default Session Configuration ================= -->
  <!-- You can set the default session timeout (in minutes) for all newly   -->
  <!-- created sessions by modifying the value below.                       -->
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

我们也可以给自己的web工程,单独配置超时时间。只需要在自己的web工程中在web.xml配置文件里做相同的配置即可。

以下配置,把自己的web工程所有的Session都配置超时时间为20分钟了。

<!-- 表示当前的web工程,所有创建出来的Session默认超时时间为20分钟 -->
  <session-config>
    <session-timeout>20</session-timeout>
  </session-config>

以上配置文件的配置的方式都是对Tomcat服务器,或对web工程创建出来的所有Session集体生效。

如果想对某个单个的Session进行设置,可以使用api进行单独设置

setMaxInactiveInterval( time ); 这里以秒为单位

如果值是正数,表示指定的秒数后Session就会超时(Session超时就会被销毁)

如果值是负数,表示Session永远不超时(极少使用)

Session的超时,是指客户端和服务器之间两次请求的间隔时间。如果中间没有任何的请求,就会把Session超时掉。

invalidate():使当前会话,马上被超时

protected void deleteNow(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
  HttpSession session = request.getSession(); 
  session.invalidate();// 结束当前Session 
  response.getWriter().write("当前会话已经超时了");
}
protected void life3(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
  HttpSession httpSession = request.getSession();
  httpSession.setMaxInactiveInterval(3);// 表示这个Session3秒之后就会超时。
  response.getWriter().write("已经设置了当前Session超时时间为3秒" );
}
protected void defaultLife(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
  HttpSession session = request.getSession();
  // 获取客户端和服务器之间最大的请求间隔时间。
  // 就是超时时间。位置 为秒
  int maxInactiveInterval = session.getMaxInactiveInterval();
  response.getWriter().write("默认的超时时间为:" + maxInactiveInterval);
}

浏览器和Session之间关联的技术内幕


相关文章
|
6月前
|
存储 Web App开发 安全
Cookie和session 及Web相关工具
Cookie和session 及Web相关工具
|
2月前
|
安全 Go PHP
Web安全-会话ID漏洞
Web安全-会话ID漏洞
23 3
|
3月前
|
存储 安全 搜索推荐
【JavaWeb 秘籍】Cookie vs Session:揭秘 Web 会话管理的奥秘与实战指南!
【8月更文挑战第24天】本文以问答形式深入探讨了Web开发中关键的会话管理技术——Cookie与Session。首先解释了两者的基本概念及工作原理,随后对比分析了它们在存储位置、安全性及容量上的差异。接着,通过示例代码详细介绍了如何在JavaWeb环境中实现Cookie与Session的操作,包括创建与读取过程。最后,针对不同应用场景提供了选择使用Cookie或Session的指导建议,并提出了保障二者安全性的措施。阅读本文可帮助开发者更好地理解并应用这两种技术。
50 1
|
3月前
|
存储 安全 搜索推荐
深入探讨Session和Cookie的概念、用途以及如何在Java Web开发中有效地使用它们进行用户状态管理。
在Java Web开发中,Session和Cookie是管理用户状态的核心技术。Session存储于服务器端,通过唯一的Session ID识别用户,确保数据安全与隐私;Cookie则存储于客户端,用于记录用户偏好等信息。两者各有优势:Session适合存储敏感数据,但需合理管理避免资源浪费;Cookie便于持久化存储,但在安全性上需谨慎设置。开发者可通过Servlet API轻松操作二者,实现个性化用户体验与应用性能优化。
54 2
|
3月前
|
存储 JSON JavaScript
震撼!Cookie、Session、Token、JWT 终极对决:揭开 Web 认证的神秘面纱!
【8月更文挑战第13天】Web 开发中,Cookie、Session、Token 和 JWT 常混淆。Cookie 是服务器给客户端的小信息片,如登录状态,每次请求都会返回。Session 则是服务器存储的用户数据,通过 Session ID 追踪。Token 类似通行证,证明客户端身份且可加密。JWT 是结构化的 Token,含头部、载荷及签名,确保数据完整性和安全性。
62 4
|
3月前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
199 0
|
5月前
|
存储 安全 Java
在Spring Boot Web应用中,会话技术和会话跟踪
在Spring Boot Web应用中,会话技术和会话跟踪
54 2
|
5月前
|
安全 前端开发 Java
Java Web项目登录报Session Error
Java Web项目登录报Session Error
37 0
|
6月前
|
存储 安全 数据安全/隐私保护
Web应用程序的会话管理是一种跟踪和识别特定用户与Web服务器之间交互的技术
【5月更文挑战第12天】Python Web开发中,会话管理用于跟踪用户与服务器交互,如Flask框架提供的内置功能。以下是一个简单示例:安装Flask后,设置应用密钥,通过session读写用户状态。例如,创建一个显示和设置用户名称的Web应用,用户提交的名字将保存在会话中。在生产环境中,应安全存储密钥,如使用环境变量。扩展会话管理可借助第三方库实现更多功能,但可能需更多配置。
256 2
|
6月前
|
存储 前端开发 搜索推荐
12:会话跟踪技术Cookie的深度应用与实践-Java Web
12:会话跟踪技术Cookie的深度应用与实践-Java Web
101 4