Cookie简介
Session会话
书城项目的实例
Filter过滤器
什么是Cookie
- Cookie是服务器通知客户端保存键值对的一种技术
- 客户端有了Cookie之后,每次请求都发给服务器
- 每个Cookie的大小不能超过4KB
创建Cookie
服务器如何获取Cookie
Cookie值的修改
- 方案一
- 方案二
- Cookie对象值的注意事项
谷歌浏览器操作Cookie
Cookie生命控制
Cookie生命控制表示Cookie什么时候被销毁
- 正数:表示在指定秒数之后
- 负数:表示浏览器一关,Cookie就会被删除
- 零:表示马上删除Cookie
protected void life3600(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie cookie = new Cookie("life3600", "life3600");
//设置一个存活一小时的Cookie对象
cookie.setMaxAge(60*60);
resp.addCookie(cookie);
resp.getWriter().write("已经创建了存活一小时的Cookie对象");
}
Cookie有效路径的path设置
- 即只有访问设置的path路径才能访问到Cookie对象(可以不保证路径是否存在)
Cookie练习免用户名登录
Session会话
- Session就是一个接口
- Session就是会话,用来维护客户端和服务器之间关联的一种 技术
- 每个客户端都有自己的Session会话
- Session会话娼用来保存用户登陆的一些信息
Session创建和获取
protected void createOrGetSession(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//创建Session会话
HttpSession session = req.getSession();
//判断Session会话是否是新创建的
boolean isNew = session.isNew();
//获取Session的唯一标识id
String id = session.getId();
resp.getWriter().write("得到的Session的id为:" + id + "<br/>");
resp.getWriter().write("这个Session是否是新创建的:" + isNew + "<br/>");
}
Session域数据的存取
protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getSession().setAttribute("key1", "value1");
resp.getWriter().write("已经往Session中保存了数据");
}
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Object attribute = req.getSession().getAttribute("key1");
resp.getWriter().write("从Session域中取出的key1的值为:" + attribute);
}
Session生命周期控制
- Session超时,客户端和服务器俩次请求的最大间隔时长
浏览器和服务器之间的Sesion之间技术内幕
- Session技术:底层其实是基于Cookie技术来实现的
- 打开再关闭浏览器Session会话都不存在了,因为Cookie对象不存在了
书城项目
登录显示用户名
<%--如果用户还没有登录,显示 【登录和注册的菜单】--%>
<c:if test="${empty sessionScope.user}">
<a href="pages/user/login.jsp">登录</a> |
<a href="pages/user/regist.jsp">注册</a>
</c:if>
<%-- 如果用户已经登录,显示成功登陆的用户信息--%>
<c:if test="${not empty sessionScope.user}">
<span>欢迎<span class="um_span">${sessionScope.user.username}</span>光临尚硅谷书城</span>
<a href="pages/order/order.jsp">我的订单</a>
<a href="index.jsp">注销</a>
</c:if>
注销用户
- 销毁Session中用户登陆的信息
- 重定向到首页或登录页面
<a href="userServlet?action=logout">注销</a>
表单重复提交之-验证码
- 提交完表单,用户通过服务器页面来跳转
- 原理
谷歌kaptcha验证码的使用
- 验证码的切换
- 在不同浏览器中点击事件的区别
//给验证码添加点击事件
$("#code_img").click(function () {
//在事件响应的function函数中有一个this对象,这个this对象是正在响应的Dom对象
//在谷歌浏览器中
/*this.src = "${basePath}/kaptcha.jpg";*/
//在IE或是火狐浏览器中(当然在谷歌也适应)
this.src = "${basePath}/kaptcha.jpg?d=" + new Date();
});