学子商城 —— day02 (会话跟踪,用户注册登录)
学子商城 —— day02
1. 用户注册
- 在dao定义insertUser方法
- 在service定义addUser方法
md5密码加密:
- 在controller层
- register.jsp
2. 常用的会话跟踪技术
2.1 cookie:
-
存储数据在客户端(key-value)
-
不安全,存储数据有限:4kb
-
一个网站可以存20个cookie
-
通过服务器的程序Servlet把cookie对象存到客户端
-
分类
- 暂时性 cookie:存储到浏览器缓存中。浏览器关闭时失效
-
永久性 cookie :可设置时间setMaxAge()
- cookie.setMaxAge(1800);// 时间单位是秒
- cookie.setMaxAge(0); //0表示cookie失效
设置cookie
- cookie存的数据只能是字符串
设置永久性cookie:
获取cookie
练习:免登录功能
LoginServlet:
login.jsp
ok.jsp
2.2 session
- 服务器和客户端连续的会话(请求响应)过程
- 需要管理数据(会话管理)。
- HTTPSession没有父接口
-
设置失效时间
以最后一次操作时间起算- session.setMaxInactiveInterval(1800);//秒
- session.invalidate();//无条件让session失效
- < session-config>
< session-timeout> 30 < /session-timeout>//分钟
< /session-config>
获取session对象
- getSession():request
-
getSession(boolean):request
- getSession(true):request
第一次调用此方法,表示创建一个session对象,
之后再去调用此方法,表示获取之前创建的对象
getSession()和 getSession(true)形同 - getSession(false):request
如果之前创建过session对象,那么返回,如果没有,那么返回null(不创建对象)
- getSession(true):request
session常用方法
- isNew()
- getId());//sessionid
- getMaxInactiveInterval()); //session最长有效时间
- getCreationTime()); // 创建session的时间
- getLastAccessedTime())); // 最后访问时间
存储数据
- setAttribute
- getAttribute
- removeAttribute
工作原理
- 创建session对象,会有一个唯一的id,作为cookie对象的value,和JSESSIONID封装到cookie对象;响应到客户端,作为客户端header信息的一部分;
- 使用该浏览器发送请求时,cookie对象把请求发送给服务器端;
- 根据JSESSIONID,找到session对象,如果有,返回,如果没有,创建一个新的session对象。
request | session | application | |
---|---|---|---|
生命周期 | 一次请求响应 | 一次会话 | 和web应用生存周期相同 |
3. 用户登录
service层:
定义两个自定义异常,用户名或密码错误时抛出异常。
NameNotExistException.java
PasswordErrorException.java
servlet层:
login.jsp
验证用户名、密码都正确后才可登录成功
错误时提示错误信息
index.jsp
登录后,显示用户名,“注册”变为“退出”;
退出后,用户名消失,“退出”变为“登录”