首页 > 技术文章 > javaweb笔记09—(session会话及验证码问题)

StephenChowcai 2017-08-16 17:26 原文


第一部分+++++++++++
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())
 

推荐阅读