会话层技术-session
会话层技术-session
session技术拿下!

一、先整理学习过程中的几个疑惑
cookie和session分别都是怎么创建的?
首先cookie是一个类,它需要java后端开发人员手动创建。
Cookie cookies1 = new Cookie(keya, valuea);
其次session是HttpSession接口的接口对象,它是由服务器来创建的,注意这里的创建不是指的是你在浏览器访问网址的同时,他就创建了,而是在servlet重写的service或doXXX方法中通过HttpSession session = request.getSession();或者HttpSession session = request.getSession(true);这两种方式任一个创建的。
注意:在默认访问jsp文件时,在你打开网站的同时就创建了Session对象,这是因为jsp中默认设置为true,<%@ page session = "true"%>,当jsp文件编译生成.java代码后,里面会有一句session = pageContext.getSession();所以,在tomcat启动后默认访问jsp页面时,这条代码就帮你创建session了,本质上,还是要通过获取session对象的时候判断有没有才会自动创建或者选择之前的session对象。
借助这个问题解决response.getWriter()获取的对象是由是创建的?
response.getWriter()获取的是PrintWriter类型的对象,当使用这条代码时候,服务器(就是servlet容器)自动创建该类型的对象来向网页上打印字符串。
可能又会有疑惑了,为什么不直接new 一下创建这个对象啊!这个我通过搜索整理,简单理解为:response.getWriter()输出的是流对象(所谓的流对象,就是打印结果可以输出在页面上),如果new PrintWriter()一个对象,再输出就不会输出到网页上,而是idea的打印台了,这仅仅是我自己的个人理解,便于我记忆!大家有好的可以给我分享,学习永无止境,哈哈!
二、ServletC用来实现session技术的处理过程
先简单那介绍下session技术的处理流程:
- 用户首次访问服务器,服务器没有Session,自动创建session对象和ID(这个ID相当于一个特殊的cookie,用于保存每一个Session对象独有的id值,他特殊就特殊在name = JSESSIONID, value = 这个id的值,普通的cookie的名字可以随意起,值可以随意更改,而由服务器创建的这个Session对象的ID名字是固定的,值也是唯一的。
- 服务器把这个特殊的cookie响应给客户端,等到下次用户访问的时候,Servlet可以获取到每个用户独有的JSESSIONID值,从而对数据进行存储记录。
三、ServletC代码具体要怎么实现呢
- 首先我要通过request对象调用getParameter()方法来获得访问服务器的用户信息。
- 紧接着,我调用request对象的getSession()方法来判断(是通过JSESSIONID的值来判断的)是否该用户是之前已经创建过的session,若是则不再重新创建,直接获取,若否,则自动重新创建并获取。
- 之后,我把获取到的用户信息存入Session对象中(相当于个人档案)。
- 最后,通过response对象向客户端响应JSESSIONID的值(特殊的cookie)。
具体代码实现如下:
package com.atguigu.servlet;
import com.sun.deploy.net.cookie.CookieUnavailableException;
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;
@WebServlet(name = "ServletC", urlPatterns = "/ServletC")
public class ServletC extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//接收请求中的用户参数的值,接收姓名
String username1 = req.getParameter("username");//调用req对象的getParameter方法获得usrname参数的值
//该方法传入参数名,获得参数值
//创建Session对象
HttpSession session1 = req.getSession();//具体含义上述已说
//把用户信息存入Session对象中
session1.setAttribute("username", "yzh");
//查看该Session对象的JSESSION值
String id01 = session1.getId();
System.out.println("JSESSIONID = " + id01);
//响应用户信息
resp.getWriter().println("已响应");
}
}
四、ServletB来获取已经创建的session对象存储的用户信息
我已经通过ServletC将用户信息存入创建的Session,那怎么来通过下次的访问,根据特殊的cookie来识别用户,并把用户信息提取打印出来呢?ServletB给我们答案(小嘲:有点小风范啊!哈哈)
package com.atguigu.servlet;
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;
@WebServlet("/ServletD")
public class ServletD extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session2 = req.getSession();//再次判断session是否已经存在,已经存在,直接瞄准他
System.out.println("上个session的id值是:" + session2.getId());
String username2 = (String)session2.getAttribute("username1");//调用getAttribute()方法得到该用户的属性值
resp.getWriter().println(username2);//来吧,展示!
}
}
让我们每天进步一点点,稳才是长远之道!
会话层技术-session的更多相关文章
- 会话跟踪技术——Session
一.什么是Session Session从用户访问页面开始,到断开与网站连接为止,形成一个会话的生命周期.在会话期间,分配客户唯一的一个SessionID,用来标识当前用户,与其他用户进行区分. Se ...
- 基于webrtc技术session border controler (SBC)
由于原来的文章 http://blog.csdn.net/voipmaker 转载注明出处. 我建了一个通信学习 交流群. 45211986, 欢迎增加. WebRTC技术致力于在浏览器端实现实时音 ...
- 会话技术( Cookie ,Session)
会话技术: 会话:浏览器访问服务器端,发送多次请求,接受多次响应.直到有一方断开连接.会话结束. 解决问题:可以使用会话技术,在一次会话的多次请求之间共享数据. ...
- JavaWeb学习笔记五 会话技术Cookie&Session
什么是会话技术? 例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话 ...
- Cookie&Session(会话技术)
一.Cookie技术 从打开一个游览器访问某个站点,到关闭这个游览器的整个过程成为一次会话 会话技术分为Cookie和Session Cookie:数据存储在客服端本地,减少对服务端的存储的压力,安全 ...
- 会话技术、Cookie技术与Session技术
一.会话技术 1. 存储客户端状态 会话技术是帮助服务器记住客户端状态(区分客户端)的. 2. 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话.会话技术就是记录这 ...
- Java第三阶段学习(十三、会话技术、Cookie技术与Session技术)
一.会话技术 1. 存储客户端状态 会话技术是帮助服务器记住客户端状态(区分客户端)的. 2. 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话.会话技术就是记录这 ...
- PHP学习10——Cookie和Session技术
主要内容: Cookie技术 创建cookie 查看cookie 读取cookie 用cookie记录访问时间和次数 删除cookie cookie的生命周期 Session技术 session工作原 ...
- JavaEE之会话技术Cookie&Session
会话技术简介 存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪 里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并 ...
- 会话技术: Cookie 和 Session
会话技术 会话技术:从浏览器开始访问服务器,到关闭浏览器,这期间发生了许多次请求和响应,这个过程就叫做一次会话. Cookie 和 Session 都是处理会话技术的两种具体实现,Cookie将数据保 ...
随机推荐
- model.train方法的dataset_sink_mode参数设置为False时以step作为单位打印数据——(只在mode=context.GRAPH_MODE下成立,在mode=context.PYNATIVE_MODE模式下不成立)
如题: 官方中的内容支持: https://www.mindspore.cn/tutorial/training/zh-CN/r1.2/advanced_use/summary_record.html ...
- 【转载】 Ubuntu 中开机自动执行脚本的两种方法
原文地址: https://www.jianshu.com/p/6366d7070642 作者:貘鸣来源:简书 ============================================ ...
- YouTube上的很多时视频就是有问题的,还经常不允许评论,妥妥的双标网站
过多的事情不说了,这些个外国反华势力的网站真是无时无刻的不在视频中加私货,你想评论吧他还能判断你的个人价值观来预估你的评价倾向然后禁止你评价,十分的气人.要是立场不够坚定的人真的是很容易被带偏,像这种 ...
- plsql中的常用功能整理
1.关键字查找 2.保存登录密码 完美!
- [COCI2021-2022#6] Naboj 题解
前言 题目链接:洛谷. 题意简述 给定一张无向图,每条边有个哨兵,初始在边的中间.你可以把某个结点旁边的哨兵全部吸引或远离这个结点.给出最后每个哨兵在边的哪一端,请构造出一种可能的操作方案或报告无解. ...
- MFC中CString转int,double
CString str=L"123"; int n=_wtoi(str); //n=123 double d=_wtof(str); //d=123.0000 Vs2012中编译
- linux下开发编辑器vim常用指令
1.vim的3种模式:编辑模式.插入模式.命令行模式(最后一行模式) 编辑模式:对代码的修改(复制.粘贴.剪切 插入模式:用户编辑代码等等) 命令行模式:保存 退出 另存为等 vim3种模式的切换 最 ...
- 使用 updateAppConfig 更新 Nuxt 应用配置
title: 使用 updateAppConfig 更新 Nuxt 应用配置 date: 2024/8/27 updated: 2024/8/27 author: cmdragon excerpt: ...
- Linux 扩展磁盘分区
之前安装 Ubuntu 虚拟机时使用的都是默认配置,虚拟机硬盘分配了 60 GB.后来想要扩容,特此记录一下扩容过程. 在操作前请做好备份 首先在 VMware 中修改虚拟硬盘大小. 然后进入虚拟机, ...
- 扫描全能王启动鸿蒙原生应用开发,系HarmonyOS NEXT智能扫描领域首批
近期,"鸿蒙合作签约暨扫描全能王鸿蒙原生应用开发启动仪式"(简称"签约仪式")正式举行.合合信息与华为达成鸿蒙合作,旗下扫描全能王将基于HarmonyOS NE ...