JSP实现数据传递与保存(二)

一、session对象

  • session机制是一种服务器端的机制,在服务器端保存信息
  • 用于存储与用户相关的会话信息

1.1 session与窗口的关系

  • 每个session对象都与一个浏览器窗口对应,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)
  • 通过超链接打开新的窗口,新窗口的session与其父窗口的session相同
  • 每个session都有唯一的session ID          public String getId();

代码演示

展示session ID
//首页:
<%String sessionId = session.getId();
%>
<h1>SESSIONID:<%=sessionId%></h1>//后台首页:
<%String sessionId = session.getId();
%>
<h1>SESSIONID:<%=sessionId%></h1>

1.2 使用session对象存储数据

使用session对象存储数据的步骤:

  1. 使用属性保存数据
  2. 从属性中读取数据,必要时需要进行数据类型转换

代码演示

使用session保存数据
//doLogin:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html>
<head><title></title>
</head>
<body>
<%//修改request和response的字符集编码request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");//获取注册的用户名和密码String userName = request.getParameter("userName");String userPwd = request.getParameter("userPwd");if ("admin".equals(userName) && "123456".equals(userPwd)) {//登录成功,使用绝对定位跳转到后台主页//重定向跳转:session.setAttribute("loginUserName",userName);     //使用session保存数据response.sendRedirect(request.getContextPath() + "/manage/index.jsp");//转发跳转://request.getRequestDispatcher("/manage/index.jsp").forward(request,response);} else {//登录失败,调回系统登录首页//这种写法也属于重定向跳转:out.print("<script>alert('登录失败');location.href=" + request.getContextPath() + "/index.jsp");out.flush();}
%>
</body>
</html>//后台首页:
<%//String userName = request.getParameter("userName");//从doLogin的session中调用数据String loginUserName = (String) session.getAttribute("loginUserName");
%>
<h2><%=loginUserName%></h2>

1.3 会话清除和过期

程序主动清除session数据有两种实现方式:

  1. 设置会话失效:session.invalidate();
  2. 只移除会话的一个属性:session.removeAttribute(String name);

服务器主动清除长时间没有再次发出请求的session,两种实现方式:

        1.通过setMaxInactiveInterval(int interval)方法,单位是秒

<%session.setAttribute("loginUser",user); session.setMaxInactiveInterval(600); response.sendRedirect("admin.jsp"); 
%>

        2.修改tomcat服务器的web.xml,单位是分钟

<session-config><session-timeout>30</session-timeout>
</session-config>

代码演示

到时间后自动失效
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html>
<head><title></title>
</head>
<body>
<%//修改request和response的字符集编码request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");//获取注册的用户名和密码String userName = request.getParameter("userName");String userPwd = request.getParameter("userPwd");if ("admin".equals(userName) && "123456".equals(userPwd)) {//登录成功,使用绝对定位跳转到后台主页//重定向跳转:session.setMaxInactiveInterval(30);       //到时间后自动失效(30秒)session.setAttribute("loginUserName",userName);     //使用session保存数据response.sendRedirect(request.getContextPath() + "/manage/index.jsp");//转发跳转://request.getRequestDispatcher("/manage/index.jsp").forward(request,response);} else {//登录失败,调回系统登录首页//这种写法也属于重定向跳转:out.print("<script>alert('登录失败');location.href=" + request.getContextPath() + "/index.jsp");out.flush();}
%>
</body>
</html>

小结

  • 用浏览器访问服务器——产生会话
  • 通过浏览器在网站登录——在会话中保存数据
  • 登录成功后用个人身份进行访问——会话有效期内
  • 关闭了浏览器——结束会话
  • 服务器主动结束会话——会话到期
  • 使会话失效、删除属性——及时释放会话资源
  • 程序主动结束会话、会话到期——会话中的数据丢失

二、JSP页面中的包含操作

2.1 JSP中实现页面包含操作的方法

        1.使用<%@include%>指令实现静态包含

<%@include file = "URL"%>

        2.使用<jsp:include>标签实现动态包含

<jsp:include page = "URL">

2.2 动态包含与静态包含的区别

2.3 application对象

  • application对象代表web应用本身,整个web应用共享一个application对象,该对象主要用于在多个JSP页面或servlet之间共享变量
  • application对象开始于服务器的启动,终止于服务器的关闭
  • application对象实现了用户间的数据共享,可以存放全局变量

application对象常用方法

小结

JSP常用内置对象

三、对象的作用域

3.1 作用域的分类

小结

四、Cookie

4.1 Cookie简介

Cookie是Web服务器保存在客户端的一系列文本信息

Cookie的作用:

  1. 对特定对象的追踪(Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告)
  2. 实现各种个性化服务(Cookie能帮助站点统计用户个人资料从而实现各种各样的个性化服务)
  3. 简化登录(Cookie有效期限未到时,Cookie能使用户在不重新输入用户名和密码的情况下进入曾经浏览过的一些站点)

Cookie在安全方面,容易泄露信息

4.2 session和Cookie的联系

服务器可以将session ID写入Cookie并发送返回客户端,这样客户端就可以在后续的请求中将该Cookie作为身份验证的一部分发送给服务器

4.3 Cookie常用方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/492155.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

09 Redis之分布式系统(数据分区算法 + 系统搭建与集群操作)

6 分布式系统 Redis 分布式系统&#xff0c;官方称为 Redis Cluster&#xff0c;Redis 集群&#xff0c;其是 Redis 3.0 开始推出的分布式解决方案。其可以很好地解决不同 Redis 节点存放不同数据&#xff0c;并将用户请求方便地路由到不同 Redis 的问题。 什么是分布式系统?…

49.仿简道云公式函数实战-文本函数-Ip

1. Ip函数 获取当前用户的ip地址 注意是Ipv4的地址 2. 函数用法 IP() 3. 函数示例 获取当前用户的ip地址IP() 4. 代码实战 首先我们在function包下创建text包&#xff0c;在text包下创建IpFunction类&#xff0c;代码如下&#xff1a; package com.ql.util.express.sel…

MySQL-约束,子查询,常用函数

1.SQL 1.1 SQL 介绍 SQl&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理关系型数据库系统的标准化语言。它是一种专门用于执行各种操作的语言&#xff0c;包括查询数据、插入、更新、删除数据以及定义和管理数据库模式&#xff0…

TABR: TABULAR DEEP LEARNING MEETS NEAREST NEIGHBORS IN 2023 阅读笔记

TABR: TABULAR DEEP LEARNING MEETS NEAREST NEIGHBORS IN 2023 论文地址&#xff1a;https://arxiv.org/abs/2307.14338 源代码&#xff1a;https://github.com/yandex-research/tabular-dl-tabr 摘要 针对表格数据问题&#xff08;例如分类、回归&#xff09;的深度学习&a…

《高质量的C/C++编程规范》学习

目录 一、编程规范基础知识 1、头文件 2、程序的板式风格 3、命名规则 二、表达式和基本语句 1、运算符的优先级 2、复合表达式 3、if语句 4、循环语句的效率 5、for循环语句 6、switch语句 三、常量 1、#define和const比较 2、常量定义规则 四、函数设计 1、参…

备战蓝桥杯---基础算法刷题2

题目有一点水&#xff0c;不过还是有几个好题的&#xff0c;我在这分享一下&#xff1a; 很容易想到先往最高处跳再往最低处跳&#xff0c;依次类推&#xff0c;那怎么保证其正确性呢&#xff1f; 证法1. 在此&#xff0c;我们从0开始&#xff0c;假设可以跳到a,b,c(a<b<…

【开源项目】超经典实景三维数字孪生城市CIM/BIM公共安全案例

飞渡科技数字孪生城市安全监管平台&#xff0c;基于数字孪生、云计算、遥感技术、数字成像等高度智能化技术&#xff0c;整合城市安全概况、安全生产和联动指挥三大模块。平台全面监测城市安全数据&#xff0c;迅速响应紧急事件&#xff0c;以“数智化”构建城市新安全格局。 通…

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui·增加心率计算器·退休储蓄计算·贷款还款计算器等数接口

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui增加心率计算器退休储蓄计算贷款还款计算器等数接口 更新日志 前言&#xff1a;本次更新中途跨越了很多个版本&#xff0c;其次本次ui大改版-同步实时发布教程《带9.7k预算的实战项目layuiph…

力扣--动态规划1027.最长等差数列

思路分析&#xff1a; 使用动态规划的思想&#xff0c;定义二维数组dp&#xff0c;其中dp[i][j]表示以nums[i]为结尾&#xff0c;公差为(j-1000)的等差数列长度。为了适应负数的情况&#xff0c;将公差的范围设为[-1000, 1000]&#xff0c;并且加上1000作为数组索引。 初始化r…

用于模拟颗粒流的直接强迫浸没边界法 An immersed boundary method with direct forcing 笔记

原文&#xff1a;Uhlmann, Markus. “An immersed boundary method with direct forcing for the simulation of particulate flows.” Journal of computational physics 209.2 (2005): 448-476. 目录 概述引言问题表述固体对流体的作用欧拉和拉格朗日变量的空间离散体积力的表…

音视频数字化(数字与模拟-电视)

上一篇文章【音视频数字化(数字与模拟-音频广播)】谈了音频的广播,这次我们聊电视系统,这是音频+视频的采集、传输、接收系统,相对比较复杂。 音频系统的广播是将声音转为电信号,再调制后发射出去,利用“共振”原理,收音机接收后解调,将音频信号还原再推动扬声器,我…

qt-C++笔记之事件过滤器

qt-C笔记之事件过滤器 —— 杭州 2024-02-25 code review! 文章目录 qt-C笔记之事件过滤器一.使用事件过滤器和不使用事件过滤器对比1.1.使用事件过滤器1.2.不使用事件过滤器1.3.比较 二.Qt 中事件过滤器存在的意义三.为什么要重写QObject的eventFilter方法&#xff1f;使用QO…