Cookie登录记录用户账号信息
实现目的:进入登录页面,用户如果选择记录用户名的复选框。则后台就需要为浏览器添加Cookie值
1、添加cookie的功能由CookieLoginServlet实现,代码如下
package com.gxa.edu.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
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 CookieLoginServlet extends HttpServlet {
public CookieLoginServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out
.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
String userid = request.getParameter("userid");
userid = URLEncoder.encode(userid, "UTF-8");
String pass = request.getParameter("pass");
String me = request.getParameter("me");
System.out.println(userid + " " + pass + " " + me);
if ("0".equals(me)) {
Cookie[] c = request.getCookies(); //获取浏览器中的Cookie
boolean f = false; //查询Cookie是否存在的标识
if (c != null) {
for (int i = 0; i < c.length; i++) {
if ("id".equals(c[i].getName())) {
c[i].setValue(userid);
f = true;
break;
}
}
}
if (f == false) { //判断Cookie不存在
Cookie cookie = new Cookie("id", userid);
cookie.setMaxAge(60 * 60);
cookie.setPath("/web"); //非常重要,记录cookie保存的路径。这样子才能访问到该cookie值。一般“/web”是指的项目工程名
response.addCookie(cookie);
}
}
PrintWriter out = response.getWriter();
out
.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println("<h1>登录成功</h1>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void init() throws ServletException {
// Put your code here
}
}
2、前台登录页面是一个cookie.jsp页面,JSP页面解析cookie的方法很多,我们这里主要利用jquery的插件来完成
(1)首先加载jquery.js核心文件
(2)加载jquery.cookies.js文件,主要提供非常方便的解析cookie的扩展插件
cookie.jsp代码如下
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'cookie.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery.cookies.js"></script>
<script type="text/javascript">
$(function() {
var v = $.cookie('id');
document.getElementById("userid").value = v;
});
</script>
</head>
<%
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
System.out.println(cookies[i].getName());
}
}
%>
<body>
Cookie的登录应用例子 <br>
<form action="servlet/CookieLoginServlet" method="post" name="login">
账号:<input type="text" name="userid" id="userid"></input><br/>
密码:<input type="password" name="pass" id="pass"></input><br/>
<input type="checkbox" name="me" id="me" value="0"></input>记录账号<br/>
<input type="submit" name="sub" value="登录"></input>
</form>
</body>
</html>
分享到:
相关推荐
在IT领域,尤其是在Web开发和自动化测试中,模拟多个用户登录和管理Cookie是常见的需求。C#结合CEFSharp库提供了一种解决方案,使得开发者能够创建一个具有浏览器功能的应用程序,并且能够处理多账户同时登录的问题...
Cookie是由服务器发送到用户的浏览器并存储在本地的一小块数据,它包含了用户的一些关键信息,如用户名、登录状态等,以便下次用户访问时,服务器能快速识别并恢复用户的状态,实现无感知的登录过程。下面将详细阐述...
本次我们关注的话题是如何实现一个账号仅允许一个用户登录的功能,这通常涉及到会话管理、数据库交互以及用户验证等多个关键点。这个功能对于提高系统的安全性至关重要,避免了同一账号在多个设备或浏览器同时登录,...
每次用户尝试登录时,首先检查这个字段,如果账号已经在线(例如,`is_online`为true或`last_activity_time`在合理范围内),则拒绝此次登录请求,提示用户账号已在别处登录。 为了进一步增强安全性,可以结合这两...
当用户登录系统时,通常需要记录并存储他们的登录信息,以便在下次访问时能够识别和验证用户。在这个场景中,"会话中用户登录记录"涉及了几个关键知识点: 1. **HTTP无状态性**:HTTP协议本身是无状态的,这意味着...
在C#编程中,"同一个账号只能登录一次"的需求是一个常见的多用户系统设计规范,它旨在确保用户账户的安全性和系统的一致性。当一个账号在一处登录后,其他地方的同一账号尝试登录时,系统应该拒绝该请求或者强制结束...
在ASP.NET开发中,防止用户重登陆是一个重要的安全特性,它确保了用户的登录状态不会在多个设备或浏览器会话间冲突,增强了系统的安全性。本文将深入探讨如何在ASP.NET环境中实现这一功能,主要包括session管理、...
综上所述,"含用户登陆信息的网页设计"项目涉及的技术栈包括 `.NET` 用于后端逻辑和身份验证,`acecss` 可能用于前端界面的美化,以及数据库用于持久化用户数据。这个过程不仅要求开发者具备良好的编程技能,还应...
在ASP应用中,用户账号的管理是系统安全的重要组成部分。标题提到的“ASP帐号只能同时登陆一个”,指的是同一个账号在同一时间只能在一个设备或浏览器会话上登录,这通常被称为单点登录(Single Sign-On, SSO)机制...
5. IP地址和设备指纹识别:记录用户的登录IP地址和设备信息(如浏览器类型、分辨率等)。当检测到新登录请求时,对比当前与历史登录的IP和设备信息,若有异常则拒绝登录。 六、单点登录(Single Sign-On, SSO) 6. ...
反之,账号已存在,向用户展示错误信息。 3. **登录页面(Login.jsp)**:用户输入已注册的账号和密码,提交后,服务器端需要验证这些信息是否与数据库中的记录匹配。同样,这需要执行数据库查询,并根据查询结果...
Domino单账号登录机制是一种安全性措施,它确保了同一个用户账号在同一时间只能在一台设备上保持登录状态。这种机制对于企业环境尤为重要,因为它可以防止未经授权的多点登录,保护用户数据的安全。 1. **登录逻辑*...
4. **IP地址或设备指纹识别**:记录用户的IP地址或生成设备指纹,当同一来源的登录请求过多时,可以认为是重复登录尝试并采取措施。 5. **并发控制**:对于Web应用,可以使用Session State Locks,即当用户登录时...
6. **logout逻辑**:正确的注销逻辑不仅应清除客户端的cookie,还应在服务器端删除对应的会话或令牌记录,确保即使用户未完全注销,也无法重新使用已登出的账户。 7. **分布式环境下的防重登**:在分布式系统中,每...
这些信息有助于优化用户体验,提升用户黏性。 5. **安全监控**:异常的登录次数可能意味着账户被攻击或滥用,需要设置报警阈值,及时发现并处理此类情况。 6. **营销策略**:了解嘉宾登录次数,可以帮助制定更有效...
3. **活动追踪**:系统记录用户的活动,如登录时间、操作历史等,这有助于分析用户行为,优化服务,或在出现异常时进行审计。 4. **社区互动**:在一些社交网络或论坛中,成员管理还包括用户之间的互动,如添加好友...
ASP.NET 是一种由微软开发的用于构建 Web 应用程序的框架,它提供了一种高效、易用的方式来创建动态...开发者可以根据实际需求调整和优化这些机制,例如使用更复杂的会话标识存储,或者结合数据库记录用户的登录状态。
d) 子站根据webservice的返回结果,如果登录成功,则在本站的cookie中保存ticket,并记录用户的登录状态。 2. 已登录状态下转到其他子站: a) 子站通过cookie或session验证用户登录状态。 b) 如果验证失败,则...
在用户成功登录后,ASP.NET会自动生成一个身份验证Ticket,包含用户的标识信息,并将其附加到响应的Cookie中。服务器端通过检查这个Ticket来识别已登录的用户。 总之,ASP.NET结合C#提供了强大的工具和框架来实现...