Java 实现自动登陆
来源:互联网 发布:淘宝店长和客服 编辑:程序博客网 时间:2024/05/16 11:15
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head> <title>Login</title></head><body> <%--用户信息验证失败,显示错误信息--%> <c:if test="${not empty requestScope.msg}"> <div class="form-group"> <label for="username" class="col-sm-2 control-label"></label> <div class="col-sm-10"> <font style="color: #f00; font-weight: bold;">${msg}</font> </div> </div> </c:if> <form action="${pageContext.request.contextPath}/autoLogin" method="post"> <input type="text" name="username" placeholder="请输入用户名"> <input type="password" name="password" placeholder="请输入密码"> <input type="checkbox" name="autoLogin"> <input type="submit" width="100" value="登录"> </form></body></html>
登陆表单页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html> <head> <title>$Title$</title> </head> <body> <%--用户信息验证成功,显示用户名--%> <c:if test="${not empty loginUser}"> ${loginUser.username} </c:if> </body></html>
登陆成功跳转页
package com.zjl.main;import com.zjl.main.domain.User;import com.zjl.main.service.UserService;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 java.io.IOException;import java.sql.SQLException;@WebServlet(name = "Test04Servlet")public class Test04Servlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); // 获取 request 参数 String username = request.getParameter("username"); String password = request.getParameter("password"); String autoLogin = request.getParameter("autoLogin"); // 用户登陆信息验证 User user = new User(); user.setUsername(username); user.setPassword(password); UserService service = new UserService(); User loginUser = null; try { loginUser = service.login(user); } catch (SQLException e) { e.printStackTrace(); } if (loginUser != null) { // 如果确认自动登陆,则将用户名密码封装成一个字符串,添加在cookie中返回给客户端 if (autoLogin != null) { Cookie cookie = new Cookie("autoLoginCookie", username + "@" + password); cookie.setPath("/"); cookie.setMaxAge(60*60); response.addCookie(cookie); } // 验证成功,将用户信息设置在session对象中 request.getSession().setAttribute("loginUser", loginUser); // 重定向至index.jsp response.sendRedirect(request.getContextPath() + "/index.jsp"); } else { // 验证失败,将错误信息设置在 request 中,转发到login.jsp中 request.setAttribute("msg", "用户名与密码不匹配"); request.getRequestDispatcher("/login.jsp").forward(request, response); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); }}
package com.zjl.main.filter;import com.zjl.main.domain.User;import com.zjl.main.service.UserService;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.sql.SQLException;@WebFilter(filterName = "AutoLoginFilter")public class AutoLoginFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { // 强转 HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; // 验证 session 中是否存在此用户 User loginUser = (User) request.getSession().getAttribute("loginUser"); if (loginUser != null) { chain.doFilter(request, response); return; } // 验证是否包含自动登陆的cookie Cookie[] allCookie = request.getCookies(); Cookie userCookie = null; if (allCookie != null) { for (Cookie c : allCookie) { if ("autoLoginCookie".equals(c.getName())) { userCookie = c; break; } } } if (userCookie == null) { chain.doFilter(request, response); return; } // 验证cookie中信息是否正确 String[] u = userCookie.getValue().split("@"); String username = u[0]; String password = u[1]; User user = new User(); user.setUsername(username); user.setPassword(password); UserService service = new UserService(); try { loginUser = service.login(user); } catch (SQLException e) { e.printStackTrace(); } if (loginUser == null) { chain.doFilter(request, response); return; } request.getSession().setAttribute("loginUser", loginUser); chain.doFilter(request, response); } public void init(FilterConfig config) throws ServletException { }}
过滤器
<filter> <filter-name>AutoLoginFilter</filter-name> <filter-class>com.zjl.main.filter.AutoLoginFilter</filter-class> </filter> <filter-mapping> <filter-name>AutoLoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
在web.xml中注册过滤器
阅读全文
0 0
- Java 实现自动登陆
- 转载java实现自动登陆
- java实现网页自动登陆
- expect实现自动登陆
- Cookie实现自动登陆
- putty实现自动登陆
- UIWebView实现自动登陆
- UIWebView实现自动登陆
- cookie实现自动登陆
- 简单实现自动登陆
- python 实现自动登陆
- Java Web中简单实现自动登陆功能。
- 如何实现windows2003 自动登陆
- XP下实现自动登陆
- 如何实现Linux 自动登陆
- 如何实现Linux 自动登陆
- win XP实现自动登陆
- Delphi实现网页自动登陆
- 我的https的深度理解---哈哈哈
- [译]编码,编码,编码!提高编程技能的唯一途径
- 编程题:斐波那契数列
- linux测进程带宽工具
- MANIFEST.MF的用途
- Java 实现自动登陆
- hibernate取树形结构返回Json时死循环
- Java学习第三周(2)--面向对象第二天
- 二叉搜索树(BST,基本操作实现)
- Java内存模型与线程
- 转载-Java后端程序员1年工作经验总结
- 为什么 JDK 9 在生产环境中很少被采用?
- 阿里巴巴招聘工人老师傅做人工智能,当P8年薪百万
- 最好用的开源Web漏洞扫描工具梳理