session和filter
会话
用户打开浏览器访问服务器资源,会话建立,直到有一方断开连接会话结束
一次会话中可以包含多次请求和响应
会话跟踪
一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据
cookie
跨浏览器不能访问,但是会话期结束还存在
是一种客户端会话技术,将数据保存到客户端,以后每次请求都携带cookie数据进行访问
cookie的使用
-
使用:-
创建cookie对象,设置数据 -
发送cookie到客户端,使用response对象
-
-
获取:-
获取客户端携带的所有cookie,使用request对象 -
遍历数组,获取每一个cookie对象 -
使用cookie对象方法获取数据
-
cookie使用的细节
-
存活时间-
默认情况下cookie存储在浏览器内存中,当浏览器关闭,内存释放,则cookie销毁 -
setMaxAge 设置cookie在浏览器的过期时间-
正数,持久化存储,到时间自动删除 -
负数:默认值,浏览器关闭cookie销毁 -
0:删除对应的cookie
-
-
-
cookie不能直接存储中文,如需要,则进行转码----URL编码
session
也不能跨浏览器访问,而且会话期结束就不存在,一种服务端会话跟踪技术:将数据保存到服务端
session使用
-
获取session对象-
HttpSession session = request.getSession();
-
-
session对象功能-
setAttribute 存储数据到session -
getAttribute 根据key获取值 -
removeAttribute 根据key删除该键值对
-
session使用细节
-
session的实现原理是基于cookie的 -
钝化活化:-
钝化:服务器正常关闭后,Tomcat自动将session数据写入硬盘文件 -
活化:再次启动服务后,从文件中加载数据到session中
-
-
销毁:-
默认情况下,30分钟自动销毁,可以用下面的代码修改 -
<session-config> -
<session-timeout>30</session-timeout> -
</session-config> -
或者调用invalidate()方法
-
cookie和session的区别
首先,cookie和session都是用来完成一次会话内多次请求间数据共享的
- 区别:
-
存储位置:cookie将数据存储在客户端,session将数据存储在服务端 -
安全性:cookie不安全,session安全 -
数据大小:cookie最大3kb,session无大小限制 -
存储时间:cookie可长期存储,session默认30分钟 -
服务器性能:cookie不占服务器资源,session占用服务器资源
-
实现登录功能
记住密码的逻辑
-
第一次点击记住密码,将用户名和密码放到cookie里面 -
第二次进行登录的时候,判断遍历cookies里面是否有这个值,-
如果有,则直接将用户名取出来发往前端jsp
-
验证码原理
-
1.画一个图片 -
2.设置图片背景颜色 -
3.设置验证码的字符 -
4.将字符画进图片 -
5.设置干扰线 -
6.将验证码字符保存到session -
7.输入验证码之后到session里面比较验证码是否正确,正确之后继续接下来的操作
实例
注册登录的servlet
package com.wanxi.servlet;
import com.wanxi.model.UserModel;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Enumeration;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.乱码处理
req.setCharacterEncoding(StandardCharsets.UTF_8.toString());
resp.setCharacterEncoding(StandardCharsets.UTF_8.toString());
//2.获取前端的值
String username = req.getParameter("username");
String password = req.getParameter("password");
String remember = req.getParameter("remember");
String code = req.getParameter("code");
//3.封装对象
//4.逻辑处理
//判断验证码是否正确
if (code.equals(req.getSession().getAttribute("vCode"))){
//点击记住密码后,将信息存储
//如果remember是null,则没有equals方法,所以应该将字符串放在前面使用equals方法
if ("on".<

本文详细介绍了Java Web中的会话技术,包括Cookie和Session的使用、区别以及实际应用场景。同时,文章深入探讨了Filter过滤器的工作原理及其在实现登录功能、拦截请求中的重要作用。通过对Cookie和Session的对比,以及过滤器的实例解析,帮助读者更好地理解这些核心技术。

1397

被折叠的 条评论
为什么被折叠?



