1.目标:用户登录后,再次登录无需输入用户名和密码
2.思路:将用户的信息保存为cookie
每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接跳过登录页面,如果没有找到,那么切换到登录页面
3.具体代码
3.1登录界面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html"> </head> <body> <p>主页 <p> <c:choose> <c:when test="${empty sessionScope.name}"> <form name="x" action="<c:url value='/LoginServlet' />" method="post"> name:<input type="text" name="name" /> auto: <input type="radio"name="auto" value="-1" checked="checked">不自动登陆 <input type="radio" name="auto" value="1">1天 <input type="radio" name="auto" value="7">7天 <input type="submit" value="提交"> </form> </c:when> <c:otherwise> 欢迎你:${name }<br> <a href="<c:url value='/LoginServlet'/>">退出</a> </c:otherwise> </c:choose> </body> </html>
3.2filter过滤器
package s051301; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; public class Filter implements javax.servlet.Filter{ private String encoding; public void init(FilterConfig con) throws ServletException { } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { System.err.println("dofilter service()"); req.setCharacterEncoding("UTF-8"); res.setContentType("text/html;charset=" + "UTF-8"); HttpServletRequest request=(HttpServletRequest)req; Cookie[] cs=request.getCookies(); if(cs!=null) { for(Cookie c:cs) { if(c.getName().equals("log")); //cookie怎么存的就怎么取 { String value=c.getValue(); //存放cookie中的值,就是用户的名称 request.getSession().setAttribute("name", value); break; } } } chain.doFilter(req, res); } public void destroy() { } }
3.3Servlet
package s051301; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); String name=request.getParameter("name"); String auto=request.getParameter("auto"); System.err.println(name); System.err.println(auto); if(!auto.equals("-1")) { request.getSession().setAttribute("name", name); int day=Integer.parseInt(auto); int seconds=60*60*24*day; //声明cookie Cookie c=new Cookie("log",name); c.setMaxAge(seconds); c.setPath(request.getContextPath()); response.addCookie(c); } //重定向到主页 response.sendRedirect(request.getContextPath()+"/index.jsp"); } }
3.4web.xml配置
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <filter> <filter-name>filter</filter-name> <filter-class>s051301.Filter</filter-class> </filter> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>s051301.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> </web-app>
相关推荐
在IT领域,尤其是在系统管理和自动化操作中,"易语言设置系统用户自动登录"是一个常见的需求。易语言,作为中国本土的编程语言,以其简洁的语法和面向初学者的设计,为开发者提供了实现这一功能的可能。这里我们将...
XP系统自动登录器是一款专为Windows XP操作系统设计的实用工具,旨在简化用户的登陆流程,让用户能够实现系统登陆的完全自动化。这款程序小巧轻便,仅有8.65KB,却能有效解决手动输入用户名和密码的繁琐步骤,为用户...
【C# 自动登录网站源码(Winform)详解】 在C#编程环境中,开发一个自动登录网站的应用程序,通常涉及到网络通信、HTML解析、HTTP请求等技术。本项目是基于Winform平台的一个简单实现,它能帮助用户自动填写用户名...
域用户登陆自动注销脚本 域用户登陆自动注销脚本 域用户登陆自动注销脚本 域用户登陆自动注销脚本 域用户登陆自动注销脚本
本教程将深入探讨如何利用Servlet和Cookie技术实现用户自动登录的功能。首先,我们需要理解Servlet的工作原理和Cookie的概念。 Servlet是一个Java类,它扩展了服务器的功能,可以处理来自客户端(通常是浏览器)的...
在Web开发中,实现用户自动登录功能是一种常见的需求,它能提供更好的用户体验,让用户在访问网站时无需每次都输入用户名和密码。本实验主要探讨如何利用Java的Filter接口和Cookie技术来实现这一功能。我们将首先...
在IT行业中,用户自动登录是一项常见且实用的功能,它能够提升用户体验,使用户在访问网站或使用应用时无需每次手动输入用户名和密码。本话题主要围绕"实现用户自动登录"展开,将详细介绍如何通过过滤器(Filter)...
本篇将详细解释Session的工作原理、配置及其实现用户自动登录的机制。 **一、Session概述** Session是HTTP协议无状态特性的补充,因为在HTTP协议中,每次请求都是独立的,服务器无法识别客户端的连续请求是否来自...
通过C# WinForm应用实现网页上的用户自动登录,可以用于多种场景,如自动化测试、数据抓取或是频繁操作需要减少人工介入的情况。下面将深入探讨如何使用C# WinForm来模拟网站登录,包括代码解析和关键步骤。 ### 一...
在IT行业中,自动登录和注销后自动登录是用户体验设计中的一部分,主要涉及到身份验证、安全性和用户便利性。本文将详细探讨这两个概念及其在实际应用中的实现方式。 首先,让我们理解“注销”和“自动登录”的基本...
本文讲述如何使用 C# 语言实现网上用户自动登录,模拟网站登录的过程。该实现使用了 HttpWebRequest 和 HttpWebResponse 对象来发送 HTTP 请求和接收响应信息。 首先,需要创建一个 Post 类,该类负责模拟登录页面...
C#实现网页上用户自动登录.NET模拟网站登录 本文主要介绍了使用C#语言实现网页上用户自动登录的方法,通过.NET模拟网站登录,实现用户的自动登录功能。 知识点1:使用WebRequest类实现HTTP请求 在本文中,我们...
- **恢复默认设置**:若以后需要恢复到原来的登录方式,只需重复上述步骤,但在“用户配置文件”选项卡中取消勾选“自动登录”即可。 通过上述步骤,你可以轻松地为Windows XP和Windows 2003 Server等系统设置自动...
自动登录程序通常基于脚本技术,如SAP GUI Scripting,这是一种允许用户记录和回放与SAP GUI交互的宏功能。通过这种方式,用户可以创建一个包含登录信息的脚本,一旦运行该脚本,程序就会自动填写登录字段并提交,...
在“Spring Security 3多用户登录实现之九 基于持久化存储的自动登录”这一主题中,我们将探讨如何利用Spring Security来实现多用户登录系统,并通过持久化存储来支持用户的自动登录功能。在这个过程中,我们会涉及...
在IT行业中,自动登录功能是许多应用程序和网站为了提高用户体验而设计的重要特性。"AutoLoginWebDemo"项目正是这样一个示例,它展示了如何利用C#编程语言实现网页自动登录的功能。下面将详细介绍这个主题,包括相关...
如果匹配成功,用户将获得一个会话标识(如Session ID或JWT),使得后续请求可以验证用户身份,实现自动登录。 4. **安全实践**:在实际应用中,必须遵循安全最佳实践,如使用HTTPS加密通信,对密码进行哈希加盐...
标题中的“自动登录网站的软件”指的是那些能够帮助用户自动保存和填充登录凭据的应用程序,使得用户在访问特定网站时无需手动输入用户名和密码。这类软件通常利用浏览器插件或者独立的应用形式存在,可以大大提高...
5. **安全考虑** - 为了确保安全,插件应当使用HTTPS协议传输敏感数据,并提醒用户仅在可信网站上使用自动登录功能。 此外,考虑到该插件的标签中有“源码”,这意味着可能有完整的代码可供参考。开发者可以从源码...
Linux 用户登录失败 N 次锁定用户(几分钟后自动解锁) Linux 系统中,用户登录失败 N 次后锁定用户是一种常见的安全防护机制,防止 brute-force 攻击和猜测密码。这种机制通常使用 PAM(Pluggable Authentication ...