java使用Filter实现自动登录的方法
发布时间 - 2026-01-11 00:34:11 点击率:次本文实例为大家分享了java实现自动登录的具体代码,供大家参考,具体内容如下

- 当你勾选(记住登录状态),用cookie保存用户名和密码。不勾选,cookie失效。
- 所有的页面都要经过autoLoginFilter.java 的过滤器,在这类中,必须要判断cookies不为null,获得所有的cookie,得到name为user的cookie,进行用户名和密码的验证,如果不为null,则将user存入session。
- 在LoginServlet.java中,获得username和password参数,进行dao验证,如果不为空,放入seesion中,进行页面跳转。
- 创建cookie对象。setpath("/"),表示本应用下的所有路径都能访问此cookie。
- 对于已经正确登录的用户,再次访问其他页面必定会再次经过autoLoginFilter,这时,判断当前session中的user是否为null,不为null,直接通过。
- 对于**login.jsp的有关页面,不需要经过autoLoginFilter。
package com.learning.web.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
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 com.learning.domain.User;
import com.learning.service.UserService;
@WebServlet("/servlet/loginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String autologin = request.getParameter("autologin");
UserService userService=new UserService();
User user = userService.findUser(username, password);
//user不为null,则登录成功
if (user!=null) {
//创建cookie来保存用户信息
Cookie cookie=new Cookie("user", user.getUsername()+"&"+user.getPassword());
cookie.setPath("/");
//autologin不为null,则记住了登录状态
if (autologin!=null) {
cookie.setMaxAge(1*60*60*24);//一天的有效时间
}
else {
cookie.setMaxAge(0);
}
response.addCookie(cookie);
request.getSession().setAttribute("user", user);
request.getRequestDispatcher("/home.jsp").forward(request, response);
}else {
response.sendRedirect(request.getContextPath()+"/homeLogin.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
package com.learning.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.jstl.core.Config;
import com.learning.domain.User;
import com.learning.service.UserService;
@WebFilter(urlPatterns="/*",initParams={@WebInitParam(name="autologin",value="login"),@WebInitParam(name="",value="")})
public class AutoFilter implements Filter{
private FilterConfig filterConfig;
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 转换对象
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
// 获得访问的路径
String uri = httpServletRequest.getRequestURI();
String contextPath = httpServletRequest.getContextPath();
uri = uri.substring(contextPath.length() + 1);
// 获得初始化参数
String login = filterConfig.getInitParameter("autologin");
System.out.println("直接通行的路径:"+login);
// 不包含"login"的路径就要进行过滤 (xxxlogin.jsp 不需要自动登录)
if (!uri.contains(login)) {
HttpSession session = httpServletRequest.getSession();
User u = (User) session.getAttribute("user");
if (u != null) {
System.out.println("session不为null");
chain.doFilter(request, response);
} else {
// 处理业务逻辑
// 1.获得cookie 得到User的信息
String username = "";
String password = "";
UserService userService = new UserService();
Cookie[] cookies = httpServletRequest.getCookies();
for (int i = 0;cookies!=null&& i < cookies.length; i++) {
if ("user".equals(cookies[i].getName())) {
String string = cookies[i].getValue();
String[] values = string.split("&");
username = values[0];
password = values[1];
User user = userService.findUser(username, password);
// 不为空则放入session
if (user != null) {
System.out.println("自动登录了");
httpServletRequest.getSession().setAttribute("user", user);
}
}
}
}
}
// 2.放行
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig=filterConfig;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# Filter
# 自动登录
# java中使用Filter控制用户登录权限具体实例
# Java使用Filter实现登录验证
# 不为
# 不需要
# 为空
# 勾选
# 都要
# 在这
# 都能
# 当你
# 跳转
# 大家分享
# 具体内容
# 大家多多
# 则将
# 不包含
# 类中
# 必须要
# 记住了
# learning
# web
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用wdcp快速搭建高效网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
高防服务器:AI智能防御DDoS攻击与数据安全保障
Laravel如何使用Vite进行前端资源打包?(配置示例)
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
网站图片在线制作软件,怎么在图片上做链接?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
如何在阿里云部署织梦网站?
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
如何在橙子建站上传落地页?操作指南详解
如何在VPS电脑上快速搭建网站?
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
微信小程序 scroll-view组件实现列表页实例代码
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
如何快速生成可下载的建站源码工具?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
JavaScript Ajax实现异步通信
香港服务器网站卡顿?如何解决网络延迟与负载问题?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
微信小程序 require机制详解及实例代码
如何用AWS免费套餐快速搭建高效网站?
免费网站制作appp,免费制作app哪个平台好?
中山网站推广排名,中山信息港登录入口?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
JavaScript常见的五种数组去重的方式
使用豆包 AI 辅助进行简单网页 HTML 结构设计
海南网站制作公司有哪些,海口网是哪家的?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
如何在阿里云高效完成企业建站全流程?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Android仿QQ列表左滑删除操作
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Linux系统运维自动化项目教程_Ansible批量管理实战
三星网站视频制作教程下载,三星w23网页如何全屏?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
如何续费美橙建站之星域名及服务?
原生JS获取元素集合的子元素宽度实例
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
浅谈javascript alert和confirm的美化
原生JS实现图片轮播切换效果
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
Python函数文档自动校验_规范解析【教程】
大同网页,大同瑞慈医院官网?

