JavaEE学习14(应用)--用户自动登陆
来源:互联网 发布:c sharp和java 编辑:程序博客网 时间:2024/06/04 22:06
1.前端页面准备
1.添加一个类型为checkbox的input选择框
<div class="checkbox"> <label> <input type="checkbox" name="autoLogin" value="1"> 自动登录</label> <label> <input type="checkbox"> 记住用户名</label></div>
2.在负责用户登陆的servlet中创建一个cookie对象
/** 获取页面自动登陆选项框的值*/String autoLogin = request.getParameter("autoLogin");/**如果用户点击了自动登陆*/if ("1".equals(autoLogin)) { /**1.创建一个Cookie用于记住用户的登录名和密码*/ Cookie autoLoginCookie = new Cookie("autoLoginCookie", username + "@" + password); /**2.设置Cookie的路径为当前路径(即用户登陆)*/ autoLoginCookie.setPath(request.getContextPath()); /**3.设置Cookie的生命周期为一周*/ autoLoginCookie.setMaxAge(60 * 60 * 24 * 7); /**4.将Cookie发送到浏览器*/ response.addCookie(autoLoginCookie);} else { /**如果用户没有点击自动登陆*/ Cookie autoLoginCookie = new Cookie("autoLonginCookie", ""); autoLoginCookie.setPath(request.getContextPath()); autoLoginCookie.setMaxAge(0); response.addCookie(autoLoginCookie);}
3.配置拦截器
web.xml文件中添加配置:
<filter> <filter-name>loginFilter</filter-name> <filter-class>com.itheima.web.filter.LoginFilter</filter-class></filter><filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
4.完善拦截器对象
1.如果已经登陆,不进行自动登陆
2.如果浏览器没有自动登录cookie信息,不进行自动登陆
3.如果浏览器记录cookie有误,不进行自动登录
4.用户没有登陆,浏览器记录正确的cookie,将自动完成登陆(session记录状态)
@WebFilter(filterName = "LoginFilter" ,urlPatterns = "/*")public class LoginFilter implements Filter{ /**实现拦截方法doFilter执行拦截*/ public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { chain.doFilter(req, resp); /**1.对request,response进行强制转换*/ HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; /**2.获取session,自动登陆成功后将登陆成功的用户信息存入session中*/ HttpSession session = request.getSession(); /**3.如果已经登陆,则放行*/ User loginUser = (User)request.getSession().getAttribute("loginUser"); if (loginUser != null){ chain.doFilter(request,response); return; } /**4.获得自动登陆的cookie信息*/ Cookie userCookie = CookieUtils.findCookie(request.getCookies(),"autoLoginCookie"); /* CookieUtils: public static Cookie findCookie(Cookie[] allCookie ,String cookieName){ if (cookieName == null){ return null; } if (allCookie != null){ for (Cookie c : allCookie){ if (cookieName.equals(c.getName())){ return c; } } } return null; } */ /**5.判断自动登陆的cookie是否存在,如果不错在,则不需要自动登陆*/ if(userCookie == null){ chain.doFilter(request,response); return; } /**6.自动登陆的cookie是否存在,执行自动登陆*/ if (userCookie != null){ /**6.1获得用户信息*/ String[] u = userCookie.getValue().split("@"); String username = u[0]; String password = u[1]; /**6.2执行登陆*/ loginUser = LoginUtils.login(username,password); /* public static User login(String username,String password){ UserService userService = new UserServiceImpl(); User user = null; try { user = userService.findByUsername(username); } catch (SQLException e) { e.printStackTrace(); } if (password.equals(user.getPassword()) && user.getState()==1){ return user; }else{ return null; } } */ /**6.3若没有返回值说明自动登陆没有成功*/ if (loginUser == null){ chain.doFilter(request,response); return; } /**6.4有返回值说明自动登陆成功,将返回的user对象存入session中*/ session.setAttribute("loginUser",loginUser); } chain.doFilter(request,response); } /**实现filter的生命周期方法*/ @Override public void init(FilterConfig config) throws ServletException { } @Override public void destroy() { }}
阅读全文
0 0
- JavaEE学习14(应用)--用户自动登陆
- 应用RMS实现用户自动登陆功能
- 应用RMS实现用户自动登陆功能
- 应用RMS实现用户自动登陆功能
- 应用RMS实现用户自动登陆功能
- 应用RMS实现用户自动登陆功能
- 6Filter应用5实现用户自动登陆的过滤器
- 设置用户自动登陆
- 自动ront用户登陆
- Fedora 14 每次以root用户自动登陆的方法
- 用户登陆Samba后自动创建主目录
- 用户注册、登陆、改密码自动生成
- Cubieboard2 lubuntu 实现用户的自动登陆
- ubuntu lightdm test用户自动登陆
- javaEE应用和开发环境-学习笔记
- 用户登陆记住密码-SharedPreferences实际应用
- 应用Session变量控制用户登陆时间
- JavaEE学习14--过滤器filter
- Redis超级新手指南-下篇(哪吒篇)
- linux 删除文件还是报错磁盘不足
- jQueryday10(选择器部分的复习 浏览器浏览 选择案例)
- javascript深入理解js闭包
- socket原理详解
- JavaEE学习14(应用)--用户自动登陆
- 基于用户投票的排名算法:威尔逊区间
- Linux下QT图形界面开发
- storm 任务提交过程
- 使用Javascript API for ArcGIS 4.X实现二三维一体化
- 软件开发中会用到的图
- 大家一起学爬虫(一)
- obj + mtl 格式说明
- python线程安全队列用法