JavaWeb会话技术

2023-11-17

1.Cookie对象:

cookie是一种会话技术,它用于将会话过程中的数据保存到用户的浏览器中,从而使浏览器和服务器可以更好的地进行数据交互;

创建Serlet:

创建一个chapter05项目,创建一个自己喜欢的包,在该包中编写一个为LastAccessSerclet的Servlet类,实现获取Cookiie信息并将当前时间Cookie值发送给客户端;

代码如下:

package chapter05.access;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jdk.javadoc.doclet.Reporter;

/**
 * Servlet implementation class LastAccessServlet
 */
@WebServlet("/LastAccessServlet")
public class LastAccessServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LastAccessServlet() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		Cookie[ ] cookies=request.getCookies();
		String lastTime=null;
		for (int i = 0; cookies != null&&i<cookies.length; i++) {
			String name = cookies[i].getName();
			if ("lastaccess".equals(name)) {
				lastTime=cookies[i].getValue();
			}
		}
		if (lastTime==null) {
			response.getWriter().print("您是第一次访问本网站!");
		}else {
			response.getWriter().print("您上次访问的时间是:"+lastTime);
		}
		String time = String.format("%tF%<tT", new Date());
		Cookie cookie=new Cookie("lastaccess", time);
		Cookie cookie1 =new Cookie("dashuju","2004");
		response.addCookie(cookie);
		response.addCookie(cookie1);
	}

	/**
	 * @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);
	}

}

实现结果:

第二次访问会刷新时间:

 

2.Session对象:

Cookie技术可以将用户的信息保存在各自的浏览器中,并且可以在多次请求下实现数据的共享,但是,如果传递的信息比较多,使用Cookie技术显然会增大服务器程序处理的难度,这时,可以使用Session技术;

实现购物车:

创建book类:

package chpter05.session;

import java.io.Serializable;

public class Book implements Serializable{
	private static final long serialVersionUID = 1L;
	private  String id;
	private  String name;
	public  Book() {
	}
	public  Book(String id,String name) {
		this.id=id;
		this.name=name;
	}
	public String  getId() {
		return id;
	}
	public void setId(String id) {
		this.id=id;
	}
	public String  getName() {
		return name;
	}
	public void setName(String name) {
		this.name= name;
	}

}

创建数据库模拟类:

package chpter05.session;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;


public class BookBD {
private static  Map<String,Book> map = new LinkedHashMap<String,Book>();
	static {
		map.put("1", new Book("1","javaweb开发"));
		map.put("2", new Book("2","jdbc开发"));
		map.put("3", new Book("3","java基础"));
		map.put("4", new Book("4","struts框架"));
		map.put("5", new Book("5","hibernate开发"));
	}
	public static Collection<Book> getAll() {
		return map.values();
	}
	public static Book  getBook(String id) {
		return map.get(id);
	}
}

创建Servlet:

1.创建一个名为ListBookServlet的类,用于操作单击 "购买" 链接,就可以把书加进购物车;

实现效果:

 

 创建一个名为PurchaseServlet的servlet类:

 此代码的作用是用来保存到Session对象中;

创建一个名称为CartServlet的Servlet类,显示用户义卖图书列表:

代码实现效果:

 

 实现用户登录:

1.创建封装用户信息类:

2.创建indexServlet类显示网站首页,如果用户没有登陆,那么首页界面提示用户登录,否则,显示用户已经登录信息,判断用户是否真的登录:

 3.LoginServlet,用于显示用户登录后的界面:

 4.创建LogouServlet类会将用户信息移除,并转跳到首页:

5.创建名称login.html的创业面,页面包含表单信息:

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb会话技术 的相关文章

  • Jackson JSON + Java 泛型

    我正在尝试将以下 JSON 反序列化 映射到List
  • Kafka - 如何同时使用过滤器和过滤器?

    我有一个 Kafka 流 它从一个主题获取数据 并且需要将该信息过滤到两个不同的主题 KStream
  • AWS EC2 应用程序负载均衡器 + 双向 SSL?

    是否可以使用 AWS Application Load Balancer 并使用双向 ssl 客户端证书 我当前的设置使用经典的 ELB 通过 tcp 转发到 Web 服务器端点来支持此操作 我现在需要使用 URL 路由流量 并希望在可能的
  • Java 中的 <-- 是什么? [复制]

    这个问题在这里已经有答案了 我遇到了下面的片段 它输出到4 3 2 1 我从来没有遇到过 lt 在爪哇 Is lt 使 var1 的值变为 var2 的运算符 public class Test public static void mai
  • SSL如何使用对称和非对称加密?如何管理一台主机上多个站点的认证? [复制]

    这个问题在这里已经有答案了 首先 引用微软TechNet的一些内容管理 Microsoft 证书服务和 SSL http technet microsoft com en us library bb727098 aspx 回顾一下 安全 S
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • 如何使用 Java 引用释放 Java Unsafe 内存?

    Java Unsafe 类允许您按如下方式为对象分配内存 但是使用此方法在完成后如何释放分配的内存 因为它不提供内存地址 Field f Unsafe class getDeclaredField theUnsafe Internal re
  • 为什么 jar 执行的通配符在 docker CMD 中不起作用?

    我有一个Dockerfile与以下CMD启动我的 Spring Boot 应用程序 FROM java 8 jre CMD java jar app file jar 当我尝试从创建的图像启动容器时 我得到 Error Unable to
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 如何使用双重调度来分析图形基元的交集?

    我正在分析图形基元 矩形 直线 圆形等 的交互并计算重叠 相对方向 合并等 这被引用为双重调度的一个主要示例 例如维基百科 http en wikipedia org wiki Double dispatch 自适应碰撞算法通常要求 不同的
  • 如何在 IntelliJ IDEA 中运行 akka actor

    来自 Akka 网站文档 然后 这个主要方法将创建所需的基础设施 运行演员 启动给定的主要演员并安排 一旦主要参与者终止 整个应用程序就会关闭 因此 您将能够使用类似于以下的命令运行上面的代码 下列的 java classpath akka
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • 按降序排序映射java8 [重复]

    这个问题在这里已经有答案了 private static
  • 如何使用 Jersey 将嵌套列表封送为 JSON?我得到一个空数组或一个包含数组的单元素字典数组

    我正在开发一个使用 Jersey 将对象转换为 JSON 的项目 我希望能够写出嵌套列表 如下所示 data one two three a b c 我想要转换的对象首先将数据表示为 gt gt 我认为 Jersey 会做正确的事情 以上输
  • Lombok 不适用于 Eclipse Neon

    我下载了lombok jar lombok 1 16 14 jar 并将其放入我的下载中 然后我点击这个 jar 执行正确地识别了我的 MacOS 上的 Eclipse 实例 然后我选择了我想要的实例 Lombok也在pom xml中指定
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • Spring 作为 JNDI 提供者?

    我想使用 Spring 作为 JNDI 提供程序 这意味着我想在 Spring 上下文中配置一个 bean 可以通过 JNDI 访问该 bean 这看起来像这样
  • 在会话即将到期之前调用方法

    我的网络应用程序有登录的用户 有一个超时 在会话过期之前 我想执行一个方法来清理一些锁 我已经实现了sessionListener但一旦我到达public void sessionDestroyed HttpSessionEvent eve
  • 设置 TreeSet 的大小

    有没有办法像数组一样对 Java 集合中的 TreeSet 进行大小限制 例如我们在数组中 anArray new int 10 数组具有固定长度 在创建数组时必须指定该长度 A TreeSet当您向其中添加元素时会自动增长 您无法设置其大

随机推荐

  • Go语言学习9-结构体类型

    结构体类型 引言 1 结构体 1 1 类型表示法 1 2 值表示法 1 3 属性和基本操作 附录 引言 书接上篇 我们了解了Go语言的接口类型 现在介绍Go语言的结构体类型 主要如下 1 结构体 结构体类型既可以包含若干个命名元素 又称字段
  • React从入门到精通二

    React从入门到精通之购物车案例 1 购物车需求说明 使用到的data list 2 项目code 1 购物车需求说明 list data展示到列表中 每个item的通过 按钮来控制购买的数据量 删除按钮可以删除当前的item Total
  • Request+超详细代码+视图分析(获取值)

    Request 1 request对象和response对象的原理 1 request和response对象是由服务器创建的 我们来使用它们 2 request对象是来获取请求消息 response对象是来设置响应消息 2 request对
  • constrain用法_constrain是什么意思_constrain的用法

    constrain的音标 英 k n stre n 美 k n stre n constrain的用法 v 强迫 强制 迫使 限制 限定 约束 第三人称单数 constrains 现在分词 constraining 过去式 constrai
  • Numpy学习笔记

    基于Wes McKinney的Python for Data Analysis第四章NumPy Basics Arrays and Vectorized Computation整理代码得来 最近在自学Python 感觉还是要敲一下的 又懒得
  • ChatGPT的评估指标有哪些?微调与上下文学习是否存在相似性?

    NLP 分很多的任务 不同的任务有不同的指标来度量模型质量 比如AUC Precision Recall是分类模型的度量指标 ChatGPT可以看作一个生成式语言模型 简单说就是给它输入一段文字 它会输出另一段文字 当然输出和输入之间是有关
  • 关于ArithmeticException 异常捕获(double类型的数据除于0为什么是无穷大?)

    关于ArithmeticException 异常捕获 double类型的数据除于0为什么是无穷大 在做实验编写应用程序 从命令行中输入表示两个小数的参数的字符串 求它们的商 要求程序捕获NumberFormatException异常和Ari
  • 测试用例管理工具SynapseRT(jira插件)的具体使用(一)

    话说我们测试团队使用Zephyr进行测试用例管理一段时间后 得到大家的认可 反馈还不错 但我还是觉得它功能太单一 缺点较多 例如提供信息较少 无法记录和跟踪需求 管理人员无法直观了解测试进度等等 为了解决这些问题 我找到了SnapseRT插
  • 基于DVWA的文件上传漏洞测试

    目录 DVWA Low Medium DVWA Low DVWA Security的 low 级别可以直接上传 一句话 木马 1 1 编写测试木马 1 2 没有后缀过滤直接上传 1 3回显上传路径 直接访问即可 http localhost
  • 算法 - 快速排序(C#)

    csharp view plain copy print
  • 分治法 ( Divide And Conquer ) 详解

    文章目录 引言 分治法的范式 递归式 求解递归式的三种方法 代入法 递归树法 主方法 引言 在这篇 blog 中 我首先会介绍一下分治法的范式 接着给出它的递归式通式 最后我会介绍三种方法 代入法 递归树 和主方法 求解递归式 分治法的范式
  • 小程序技术原理分析

    小程序技术原理分析 背景 小程序诞生的技术背景 小程序与普通网页开发的区别 宿主环境 执行环境 小程序架构 一 技术选型 二 双线程模型 三 双线程通信 四 小程序的基础库 五 小程序运行时 运行机制 更新机制 六 性能优化 总结 背景 随
  • 懒加载、热加载(开发者模式)、热部署、预加载、热更新

    热部署 直接重新加载整个应用 生产环境 清空内存重新打包 重新解压war包 热加载 在运行时重新加载class 开发环境 基于字节码的更改 不释放内存开发可用 上线不可用 热加载不重启tomcat 不重新打包 懒加载 延迟加载 实现方法 先
  • 页式存储管理方式

    优点 分页存储管理解决了 内存碎片 问题 提高了资源的利用率 页式存储管理方式的实现思路 将作业分页 物理空间分块 块大小 页大小 将作业的每一页依次装入到物理空间中的块中执行 不要求装入连续的物理块 当所有页全部装入物理块后 才可以运行
  • 华为OD机试真题-核酸检测人员安排【2023Q1】【JAVA、Python、C++】

    题目描述 在系统 网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查 每名采样员的效率不同 采样效率为N人 小时 由于外界变化 采样员的效率会以M人 小时为粒度发生变化 M为采样效率浮动粒度 M N 10 输入保证N 10 的结
  • java对象clone()方法

    java赋值是复制对象引用 如果我们想要得到一个对象的副本 使用赋值操作是无法达到目的的 Test public void testassign Person p1 new Person p1 setAge 31 p1 setName Pe
  • 单目标跟踪算法评价指标

    中心位置误差 center location error CLE 中心位置误差为预测的目标中心和真实的目标中心之间的欧氏距离 以像素为单位 xa ya 表示预测目标中心位置 xb yb 表示真实的目标中心位置 距离精度 diatance p
  • html 编辑框取消默认样式,html5中如何更改、去掉input type默认样式

    1 如何去掉input type date 默认样式 HTML代码 选择日期 选择时间 选择星期 选择月份 目前WebKit下有如下9个伪元素可以改变日期控件的UI webkit datetime edit 控制编辑区域的 webkit d
  • 微信小程序商城项目实战(第三篇:商品列表)

    实现商品列表 利用组件实现 Tabs 组件界面编写
  • JavaWeb会话技术

    1 Cookie对象 cookie是一种会话技术 它用于将会话过程中的数据保存到用户的浏览器中 从而使浏览器和服务器可以更好的地进行数据交互 创建Serlet 创建一个chapter05项目 创建一个自己喜欢的包 在该包中编写一个为Last