Jsp使用Cookie完成记住账号密码的功能

简介: 网站中对于记住账号密码,方便下次登录的使用非常普遍,那么它是怎么实现的呢? 首先他的流程是,设计一个复选框,当选中复选框时,就会传值到处理页面,复选框的用途就是判断用户是否愿意记住账号密码。 我们通过一个小例子来掌握他的实现步骤,在开始之前首先要了解一下实现这一功能的关键: Cookie,所有的实现所依赖的都是cookie,那么什么是Cookie呢? 简单来说:cookie就是一段

网站中对于记住账号密码,方便下次登录的使用非常普遍,那么它是怎么实现的呢?

首先他的流程是,设计一个复选框,当选中复选框时,就会传值到处理页面,复选框的用途就是判断用户是否愿意记住账号密码。

我们通过一个小例子来掌握他的实现步骤,在开始之前首先要了解一下实现这一功能的关键:

Cookie,所有的实现所依赖的都是cookie,那么什么是Cookie呢?

简单来说:cookie就是一段文本,它存储在客户端(通常来说是浏览器)。你可以把cookie当作一个map,里边是键值对,每个键值对有 过期时间、域、路径、脚本可否访问等属

性;客户端请求时,默认会带上cookie信息,就在http请求报文的header中;服务器响应时,可以设置cookie信息,就在http响应报文的header中;


了解了Cookie,我们就可以实现记住账号密码的功能了

首先,我们写一个login.jsp,来接收用户的操作。

<body>
	<%
		String username = "";
		String password = "";
		Cookie[] c = request.getCookies();
		if (c != null) {
			for (int i = 0; i < c.length; i++) {
				if ("username".equals(c[i].getName())) {
					username = c[i].getValue();
				} else if ("password".equals(c[i].getName())) {
					password = c[i].getValue();
				}
			}
		} else {
			username = " ";
			password = " ";
		}
	%>
	<div id="qq">
		<form action="loginCheck.jsp" method="post">
			<table>
				<tr>
					<td><input type="text" name="username" value="<%=username%>" />
					</td>
				</tr>
				<tr>
					<td><input type="password" name="password"
						value="<%=password%>" />
					</td>
				</tr>
				<tr>
					<td>记住密码:<input type="checkbox" name="passcookies"
						value="jizhu" />
					</td>
					<td><input type="submit" value="登录" />
					</td>
				</tr>
			</table>
		</form>
	</div>
</body>
这段代码实现的思路是,首先搜索浏览器的Cookie,判断是否存在名为username和password,

如果有,就传值到form表单,用value="<%=username%>"来使他显示在输入框;而当搜索不到这套Cookie时,输入框不显示内容,需要用户手动输入。

这时我们需要一个登录信息处理的jsp,这里名字是loginCheck.jsp

<body>

	<%
		request.setCharacterEncoding("utf-8");
		LoginDaoImpl user = new LoginDaoImpl();
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String remember = request.getParameter("passcookies");
		if (!user.loginCheck(username, password)) {
			out.println("<script>alert('error');</script>");
		} else {
			if (remember != null) {
				Cookie c1 = new Cookie("username", username);
				Cookie c2 = new Cookie("password", password);
				c1.setMaxAge(1000);
				c2.setMaxAge(1000);//这里设置保存这条Cookie的时间
				response.addCookie(c1);//添加Cookie
				response.addCookie(c2);
				out.println("<script>alert('success and remember this username&password
');</script>");
			} else {
				out.println("<script>alert('success but not remember this username&password');</script>");
			}
		}
	%>
</body>
这里的实现思路是首先接收登录界面传过来的值,首先判断用户名密码是否存在,不存在程序就终止了,弹出error提示,如果存在再判断用户是否选择了记住密码,即复选框是否有传值过来。如果有,new一个Cookie对象,对Cookie进行保存,如果没有则正常登录。

主要介绍记住账号密码的功能,后台实现思路不做详细介绍,代码如下

public class LoginDaoImpl implements LoginDao {

	public boolean loginCheck(String username, String password) {
		boolean result = false;
		Connection conn = null;
		PreparedStatement state = null;
		ResultSet rs = null;
		try {
			conn = ConnHelper.getConn();
			String sql = "select username from userinfo where username=? and password=?";
			state = conn.prepareStatement(sql);
			state.setString(1, username);
			state.setString(2, password);
			rs = state.executeQuery();
			if (rs.next()) {
				result = true;
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				rs.close();
				state.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
		return result;
	}

}

这样,一个简单的使用Cookie记住账号密码的功能就实现了,同时可以扩展一下,比如,让用户自己选择记住账号密码的时长
表单中加上一个输入框:

<tr>
	<td>记住密码时间:<input type="text" name="time" value="100" /></td>
</tr>
登录处理用输入的时间代替原来设置的值:

<body>

	<%
		request.setCharacterEncoding("utf-8");
		LoginDaoImpl user = new LoginDaoImpl();
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String remember = request.getParameter("passcookies");
		int time = Integer.parseInt(request.getParameter("time"));
		if (!user.loginCheck(username, password)) {
			out.println("<script>alert('error');</script>");
		} else {
			if (remember != null) {
				Cookie c1 = new Cookie("username", username);
				Cookie c2 = new Cookie("password", password);
				c1.setMaxAge(time);
				c2.setMaxAge(time);
				response.addCookie(c1);//添加Cookie
				response.addCookie(c2);
				out.println("<script>alert('success and remember this username&password 记住密码时长="
						+ time + "');</script>");
			} else {
				out.println("<script>alert('success but not remember this username&password');</script>");
			}
		}
	%>
</body>

使用Cookie可以完成很多事情,怎么用它,就要发挥大家想象啦!


目录
相关文章
|
4月前
|
Java
jsp中使用cookie时报错……
jsp中使用cookie时报错……
|
4月前
|
Java 数据安全/隐私保护
jsp使用cookie实现记住用户名和密码
jsp使用cookie实现记住用户名和密码
|
3月前
|
存储 Java
JSP 教程 之 JSP Cookie 处理 8
JSP教程讲解如何处理Cookie。要删除Cookie,需获取已存在Cookie,将其有效期设为0,然后重新添加到响应头。以下示例代码演示如何删除一个名为&quot;name&quot;的Cookie。当运行此JSP,第二次访问时,&quot;name&quot; Cookie将变为null。页面还会显示现有Cookie的名称和解码后的值。
16 2
|
3月前
|
存储 Java
JSP 教程 之 JSP Cookie 处理 7
JSP教程讲解了如何处理Cookie。Cookie是客户端的文本文件,用于存储跟踪信息。在JSP中,通过调用`request.getCookies()`获取Cookie数组,然后遍历并使用`getName()`和`getValue()`读取每个Cookie的名称和值。示例代码展示了一个JSP页面,它遍历请求中的Cookie,并解码显示其名称和值。如果未找到Cookie,则显示相应消息。
21 1
|
22天前
|
供应链 前端开发 Java
服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】
该博客文章介绍了一个使用Mybatis、Layui、MVC和JSP技术栈开发的服装库存管理系统,包括注册登录、权限管理、用户和货号管理、库存管理等功能,并提供了源码下载链接。
服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】
|
3月前
|
存储 Java
JSP 教程 之 JSP Cookie 处理 6
JSP教程讲解了如何处理Cookie。Cookie是客户端的文本文件,用于存储跟踪信息。在JSP中,设置Cookie涉及三步:创建Cookie对象、设置有效期和添加到HTTP响应头。示例代码展示了一个JSP页面,接收HTML表单数据,编码后存储为Cookie,并设置24小时有效期。用户可以通过GET方法提交表单到main.jsp,实现Cookie设置。
24 2
|
3月前
|
存储 JavaScript 前端开发
JSP 教程 之 JSP Cookie 处理 2
JSP教程讲解了如何处理Cookie,Cookie是存储在客户端的文本文件,用于存储跟踪信息。在JSP中,通过设置HTTP头部的Set-Cookie来创建Cookie,包含键值对、过期时间、路径和域名。当用户访问匹配的页面时,浏览器会发送Cookie回服务器。JSP使用request对象的getCookies()方法获取Cookie数组。
16 1
|
4月前
|
存储 Java 应用服务中间件
JSP实现简易的聊天功能(Session机制)
这是一个使用JSP实现的简易聊天功能,基于Session机制和服务器端全局应用空间Application。用户通过login.jsp登录,信息存储在Session中。container.jsp展示聊天界面,包括用户列表、聊天内容和输入框,同时处理发送、清空和刷新等操作。view.jsp动态显示聊天历史,根据用户颜色选择改变消息显示。多用户间通过切换浏览器模拟聊天。网址格式为:http://localhost:8080/项目名/...。如果仅本机可访问,可能因不在同一局域网,需确保所有设备在同一网络并使用本机IP替代localhost。
35 3
|
3月前
|
SQL 数据可视化 数据库
基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
18 0
|
3月前
|
存储 Java
JSP 教程 之 JSP Cookie 处理 4
JSP教程讲解了如何处理Cookie,Cookie是客户端存储的文本信息,用于跟踪用户行为。设置Cookie涉及三步:1) 创建Cookie对象,如`new Cookie(&quot;key&quot;,&quot;value&quot;)`,注意名称和值不能含特殊字符;2) 设定有效期,如`setMaxAge(60*60*24)`表示24小时有效;3) 使用`response.addCookie(cookie)`将其发送到HTTP响应头。
16 0