javaweb笔记09—(session会话及验证码问题)
第一部分+++++++++++
1.session会话
定义:session会话——对某个web应用程序的一次整体访问的过程。
由来:无连接的http协议是无状态的,不能保存每个客户端私有信息
a用户和b用户同时访问一个服务器,在还没有登录的情况下
,服务器不能保存客户的信息,服务器为了辨识客户的本次访问,
产生了sessionId来标识,a的sessionId标识a客户的本次会话。
标识:每一个session都有一个唯一标识sessionId
sessionId存放在本地浏览器的cookie中
2.会话跟踪
作用:解决同一时刻不同客户端会话私有数据保存问题
两种实现:session(存储在服务器端)和cookie(本地浏览器)
3.session机制
a. 客户端向服务器端发出首次请求,服务器为此客户端产生session对象,
并将生成的sessionId随应答返回客户端,客户端保存此Id
b. 当同一个客户端向服务器发送新的请求的时候,
要将上次得到的sessionId一同发出到服务器端,
服务器根据此Id来辨识,响应对象的session对象。
4.session对象:服务器分配的保存客户端私有信息的一块内存
空间(临时空间,短时间内不访问,session会消亡)
用户登录信息放在session里边(涵盖了request和response对象)
定义:对于面向无链接无状态的http协议而言是实现有状态会话的有益补充。
5.session存储在服务器端
服务器通过sessionId将客户端与session数据对应起来
6.得到session句柄
a.在servlet中得到session
默认为true
httpSession session = request.getSession(boolean)
false有返回,无返回null
true有返回,无创建并返回
request.getSession()
与传true等价
7.设置session最大有效时长
<session-config>
<session-timeout>
1
</session-timeout>
</session-config>
第二部分+++++++++++
1. (登录验证)
建议:在SQL列筛选的时候,能查单列完成功能的决不用全列查,否则性能下降
耗费流量,不安全
2.提交按钮加属性
style="cursor: pointer;"—效果(鼠标变成手势)
3.servlet用户信息验证
if(adminName == null || adminName.trim().equals("")) {
out.print("<script>alert('用户名不能为空'); history.go(-1);</script>");
return;
}
第三部分+++++++++++++++
具体验证码步骤:
1.导jar包(kaptcha.jar)
2.配置XML文件(复制过来)
XML文件内:
a.有个servlet类doget方法,先生成随机数,然后根据随机数生成一个文本(验证码图片里的数字)。
b.把文本和时间date都存到session里边
c.根据文本生成验证图片
把图片发送到jsp页面
3.nonoise:无干扰线(验证码无干扰线)
4.点击图片切换—请求方式(src)
对象.src = "kaptcha" + new Date();
原理:根据不管改变的时间来做为随机数,生成不同数字的图片。
5.在servlet中得到验证码的随机数
String kaptcha =
request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY).toString();
6.验证码的作用:
a.防止重复提交(每次登陆验证码要重新输入)
b.安全性提高
7.日期存储问题
从util的Date转化到SQL的Date然后才能存储
Date sqlDate = new Date(utilDate.getTime())
最新文章
- kubernetes单机板
- **crontab的使用方式介绍和no crontab for root 提示的处理
- If &; Else 语句
- select值的获取及修改
- django internal search
- springmvc前后端传值
- c++与c不太相同的一些地方2
- Ubuntu12.04下载Repo
- Philosophy is systematic reflective thinking on life.
- C语言可变长參数实现原理
- java工具类(二)之java正则表达式表单验证
- git只追踪特定类型的文件
- day02 python数据类型
- nginx1.14.0下载、安装、启动
- SharePoint 2013 APP 开发示例 (一)List 读写
- windows 允许空密码登陆
- Java SPI机制原理和使用场景
- [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction
- Oracle中解析XMLType格式字段
- 【刷题】BZOJ 3262 [HNOI2008]GT考试
热门文章
- Node.js之npm使用
- Nginx中的rewrite指令(break,last,redirect,permanent)
- python的开发语言介绍
- GitHub账户注册
- Mac搭建PHP+rabbitMQ环境
- ANSI码和UNICODE码
- Laravel中路由怎么写(二)
- [LeetCode] 619. Biggest Single Number_Easy tag: SQL
- 彻底理解什么是原型链,prototype和__proto__的区别以及es5中的继承
- vue--监听属性完成大小写字母间的转换