JavaWeb快速入门Session&Cookie代码思路篇(七)

Cookie练习

简介

尝试了n种分享代码,最终没有找到好办法。我觉得贴代码,很难看下去。还不如写思路,今后代码篇改成思路篇

Session代码练习

1. 购物车思路

1. ListBookServlet类
	1.1 显示该网站所有商品,每个商品加上购买链接(BuyServlet)	用Map集合存储Book对象
		map.put("1", new Book("1","JavaWeb开发","老张","一本好书"));
		map.put("2", new Book("2","jdbc开发","老黎","一本好书"));
		map.put("3", new Book("3","hibernate","老方","一本好书"));
		map.put("4", new Book("4","struts","老黎","一本好书"));
		map.put("5", new Book("5","android开发","老张","一本好书"));

		private String id;
		private String name;
		private String author;
		private String description;

2. BuyServlet类
	获取session
	2.1 根据书的id获取书
	2.2 为了购买的物品保留,多浏览器共享,手工设置cookie有效期
	2.3 从session中获取所有书的集合,如果为空,就创建该list,session中设置该list,
	2.3.1 否则添加书到集合中
	2.4 重定向到购物车(BookCartServlet),
		由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用
	注意:response.encodeURL禁用cookie之后,直接写到把cookie写到标签上

3. BookCartServlet类
	获取session,如果为空直接返回
	如果有,就获取集合,遍历出来

2. 用户登录思路

0. login登录页面
1. User用户类
	private String username;
	private String password;
	private String nickName;

2. UserDb存储用户类	/判断用户是否匹配,匹配返回user
		list.add(new User("aaa","123","周星星"));
		list.add(new User("bbb","123","周润发"));
		list.add(new User("ccc","123","周星驰"));
3. 	LoginServlet类
	1. 封装类BeanUtils
	2. 取用户输入的验证码,获取session中验证码值
		2.1 创建一个session域,用字符串缓冲区记录随机生成的字符,然后设置attribute
		2.2 取用户输入的验证码,获取session中验证码值
	3. 	|--若相等,
			|--再验证用户名,若为空,请重新输入,跳转登录页
	 		|--否则跳转欢迎页,设置session,重定向到主页
		|--否则重新输入,跳转登录页
4. IndexServlet
	1. 获取session,通过session域获取user对象
	2. 如果user不为空,username。。。注销
	3. 否则跳转登录页面
5. LogoutServlet
	//已经存在user的session就需要removeAttribute
	重新跳转登录页面

3. 防止表单重复提交

LoginGenericServlet类
	1. 处理乱码问题
	2. 产生一个唯一的id(UUID.randomUUID.toString()/Base64/BigInteger)
	3. 登录页面
		out.write("<form action=‘"+request.getContextPath()+"/servlet/TokenServletDemo2‘ method=‘post‘>");
		out.write("用户名:<input type=‘text‘ name=‘username‘  /><br/>");
		out.write("<input type=‘hidden‘ name=‘token‘ value=‘"+id+"‘ /><br/>");
		out.write("<input type=‘submit‘ value=‘登录‘/><br/>");
		out.write("</form>");

TokenServlet防提交类
	1. 处理乱码问题
	2. 获取隐藏域id和之前产生Token相比
	3. 如果相等,则提交成功,移除Token
	4. 否则就提示重复提交

Cookie代码思路

1. 记录用户登录案例

1. LoginServlet类用作登录界面
	1.0 解决输出乱码问题
	1.1 登录页面,提交之后跳转到保存用户Cookie信息
	out.write("<form method=‘post‘ action=‘"+getServletContext().getContextPath()+"/servlet/Cookie02_SavaUserServlet‘ >");
	out.write("用户名: <input type=‘text‘ name=‘username‘ value=‘"+username+"‘ /><br/>");
	out.write("密码: <input type=‘password‘ name=‘password‘ value=‘"+password+"‘ /><br/>");
	out.write("记住用户名: <input type=‘checkbox‘ name=‘remember‘ value=‘"+checked+"‘ /><br/>");
	out.write("<input type=‘submit‘ value=‘登录‘ /><br/>");
	out.write("</form>");
	1.2 获取Cookie信息,遍历Cookie,保存用户名,和勾选状态。首先定义好变量
2. SaveUserServlet
	2.1 解决输出乱码问题
	2.2 定义实体类存储用户信息
	2.3 BeanUtils中populate设置用户中的信息(getParameterMap())
	2.4 |--如果获取到的用户名和密码和指定的用户名和密码相匹配就保存Cookie
			|--如果勾选将用户名保存在cookie中
			|--否则就删除cookie。c.setMaxAge(0);
			登录成功
		|--否则登录失败,刷新到登录界面

2. 显示用户浏览记录

Book类
	private String id;
	private String name;
	private String author;
	private String description;
Db类存储书籍的类
	map.put("1", new Book("1","JavaWeb开发","老张","一本好书"));
	map.put("2", new Book("2","jdbc开发","老黎","一本好书"));
	map.put("3", new Book("3","hibernate","老方","一本好书"));
	map.put("4", new Book("4","struts","老黎","一本好书"));
	map.put("5", new Book("5","android开发","老张","一本好书"));

1. ShowAllBooks类
	1.1 显示所有书籍
	1.2 显示浏览过的书籍
	1.3 获取Cookie中的值,切割ids,根据id获取书

2. ShowBookInfo
	2.1 获取用户点击之后的书籍
	2.2 显示书籍详细信息

	2.3 构建cookiesValues的值
		2.3.1 获取Cookie的值,存在bookHistory变量中
		2.3.2 如果为空直接返回该id
		2.3.3 否则就切割该bookHistory转成LinkedList
		2.3.4 如果有这个id就直接移除
		2.3.5 其他情况如果大于3本移除最后一本
		2.3.6 添加id到最前面
		2.3.7 遍历该集合然后存在字符串缓冲区中
		2.3.8 返回该字符串缓冲区,以字符串返回回去,最后别忘记删除最后一个分隔符
	2.4 创建Cookie,将cookie写回去
时间: 2024-10-14 11:37:14

JavaWeb快速入门Session&Cookie代码思路篇(七)的相关文章

Qt快速入门学习笔记(基础篇)

本文基于Qter开源社区论坛版主yafeilinux编写的<Qt快速入门系列教程目录>,网址:http://bbs.qter.org/forum.php?mod=viewthread&tid=193.参考书为基于该系列教程<Qt Creator快速入门>和<Qt及Qt Quick开发实战精解> 1.关联Qt库.如果是分别安装的Qt Creator和Qt库,而不是安装集成Qt Creator和Qt库的SDK,则需要手动关联Qt库.打开工具→选项菜单,然后选择“构建

Shiro安全框架【快速入门】就这一篇!

Shiro 简介 照例又去官网扒了扒介绍: Apache Shiro? is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro's easy-to-understand API, you can quickly and easily secure any ap

Core Graphics快速入门——从一行代码说起

Core Graphics入门 想必每个第一次接触Core Graphics的开发者都被无数的API.混乱的代码逻辑折腾得头疼不已,甚至望而却步.即使是绘制一个简单的矩形也看上去非常繁琐.本文换一个角度,整理一下有关Core Graphics的知识,也算作是这段时间学习的总结. Core Graphics和UIKit的区别 首先从概念上了解一下: 根据苹果的描述,UIKit是我们最容易也是最常接触到的框架.绝大多数图形界面都由UIKit完成.但是UIKit依赖于Core Graphics框架,也

Shiro安全框架「快速入门」就这一篇

Shiro 简介 照例又去官网扒了扒介绍: Apache Shiro™ is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro’s easy-to-understand API, you can quickly and easily secure any ap

JavaWeb快速入门

文章转自:https://www.cnblogs.com/1906859953Lucas/p/10821840.html 实验环境准备 (假设你已经装好了jdk) 1.1 安装一个eclipse或者MyEclipse(本文以eclipse为例),其实所谓的安装就是网上去下载一个eclipse,然后解压一下就好了. 1.2安装tomcat,网上下载一个,然后解压一下.我这次使用的tomcat容器配的是8080端口. 什么是JavaWeb项目,它能干嘛? JavaWeb项目就是一个应用程序,你不要以

Java中23种设计模式--超快速入门及举例代码

在网上看了一些设计模式的文章后,感觉还是印象不太深刻,决定好好记录记录. 原文地址:http://blog.csdn.net/doymm2008/article/details/13288067 注:本文代码基本都有很多没有初始化等等问题,主要是为了减少代码量,达到一眼就能了解大概情况的目的. java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,

C++ Primer 学习笔记_1_快速入门

 C++快速入门 --这个月的第一篇博客,献给我最爱的C++程序设计语言! 一.编写简单的C++程序 [cpp] view plaincopyprint? //main函数是唯一一个被操作系统显式调用的函数. int main() { /* *该返回值作为状态指示器,需要返回给操作系统! *以echo $?命令可以查看该返回值 *通常非零返回值表示有错误出现,由操作系统定义 */ return 0; } //main函数是唯一一个被操作系统显式调用的函数. int main() { /* *

【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

[第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) [番外篇]ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 表单身份验证(Forms Authentication

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav