Jsp使用Cookie完成记住账号密码的功能-阿里云开发者社区

开发者社区> 笔记侠> 正文

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可以完成很多事情,怎么用它,就要发挥大家想象啦!


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
前端 css+js实现返回顶部功能
描述:        本文主要是讲,通过css+js实现网页中的【返回顶部】功能。   实现代码: HTML: 1 2 返回顶部 3   CSS: 1 /* return top */ 2 #btnTop { 3 display: none; 4 position:...
1133 0
使用ApiPost测试接口时需要先登录怎么办?利用Cookie模拟登陆!
在后台在开发、调试接口时,常常会遇到需要登陆才能请求的接口。本文主要介绍利用ApiPost发送Cookie,使服务器识别已登录用户的Cookie。
2623 0
Android Studio 通过一个登录功能介绍SQLite数据库的使用
前言:         SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
4229 0
DataV账号间屏幕拷贝功能指南
账户间的拷屏功能就是这么低调地上线了。虽然操作非常简单,但是会涉及到一个用户识别码的新概念,拷屏过程中也会有一定的规则,所以还是向各位介绍具体操作。
7407 0
JSP---JavaBean的使用-jsp:useBean标签相关
JavaBean介绍: JavaBean其实就是一个遵循特定写法的java类,但是必须具有如下特点: 1.这个java类必须具有一个公开的无参构造函数 2.属性必须私有化,类必须公开 3.私有化的属性必须通过public类型的方法暴露给其他程序,并且方法的命名也必须遵守一定的命名规范---getXxx和setXxx方法。
959 0
SSM框架之关于使用JSP作为视图展示问题解决方案
JSP作为视图层展示数据,已经有很长一段时间了,不管是在校学习还是企业工作,总会或多或少接触这个。特别是对于一些传统中小型或者一些几年前的企业而言,有很多使用JSP作为视图展示层。 JSP本质是就是Servlet,Servlet可以说也是JSP。
1555 0
【开源】QuickPager ASP.NET2.0分页控件——使用示例、基本应用和查询功能
    myPage分页控件发出来之后,虽然开源了,但是没有给一个简单一点的 demo,真是漏掉了一个很重要的部分。     先说明一下使用myPage分页控件需要的文件。     Controls.dll :这个是分页控件的dll文件,您可能要问,为什么不叫 myPage.dll呢?因为里面不仅有分页控件,还包含其他的控件,比如扩展功能的TextBox等控件,这是多个控件的集合,所以就叫做 Controls.dll 了。
910 0
+关注
笔记侠
Java开发,喜欢交流,个人网站:https://www.javazhiyin.com/ 欢迎多多交流
88
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载