使用jsp完成浏览器登录自动填写账号及密码功能

描述:使用jsp完成浏览器登录自动填写账号及密码功能

技术:pageContext + reqeust + response + cookie + EL

原理:

    1.本程序表单是提交到本身

    2.设置reqeust对象的编码,防止获取中文出现乱码

    3.request调用getParameter方法获取账号及密码,提交到本身必须要进行空值判断并获取获取所有cookie

    4.扫描客户端所有cookie判断是否已经存在标志属性,例如程序中使用的my,如果查找到则直接将标记设置为false,如果无标志属性则设置cookie,并将cookie添加到response中和设置cookie的保存时间,账号及密码使用#作为分隔,方便分隔

    5.同理取出再次扫描客户端所有cookie,如果查找到属性标志则取出其值,然后调用split方法将账号及密码分隔并设置pageContext内置对象中,方便EL进行获取

    6.EL根据属性取出值,EL的好处就是如果属性为空则用""进行替换

代码:

<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<title>JSP</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

<body>
	<%
		boolean flag = true;						// 用于记录是否插入
		Cookie[] cookiesTmp = request.getCookies();			// 获取所有cookie
		
		request.setCharacterEncoding("UTF-8");				//设置编码,防止出现中文乱码
		String name = request.getParameter("uname");		        // 获取用户名
		String pass = request.getParameter("upass");		        // 获取密码
		
		// 注意表单提交到本身必须进行控制判断
		if(cookiesTmp != null && name != null & pass!= null){
			for (Cookie i : cookiesTmp) {				// foreach方法遍历
				if ("my".equals(i.getName())){			// 如果已经存在god(为此程序的cookie读取标志)
					flag = false;				// 设置标记为不能插入	
					break;					// 跳出
				}
			}
			
			// 如果flag为真则设置cookie
			if (flag) {
				Cookie cookie = new Cookie("my",name + "#" + pass);
				
				// 设置保存时间为30分钟,单位秒30 * 60得到半小时的秒数
				cookie.setMaxAge(30 * 60);
				response.addCookie(cookie);
			}
		}
	%>
	
	<!-- 假如有则取出账号及密码并设置属性 -->
	<%
		Cookie[] cookies = request.getCookies();
		if(cookies != null){
			for (Cookie i : cookies) {
				if ("my".equals(i.getName())){
					
					// 设置属性,此处使用用了字符串分隔方法split
					// pageContext.setAttribute("属性名","值");
					pageContext.setAttribute("name", i.getValue().split("#")[0]);
					pageContext.setAttribute("pass", i.getValue().split("#")[1]);
				}
			}
		}
	%>
	
	<!-- action=""表示提交到本身;${name}为EL表达式意思为取出name的属性值 -->
	<form action="" method="post">
		<label for="uname">账号:</label>
		<input type="text" id="uname" name="uname"  value="${name}">
		<br>
		<br>
		<label for="upass">密码:</label>
		<input type="password" id="upass" name="upass" value="${pass}">
		<br>
		<br>
		<input type="submit" value="登录">
		<input type="reset" value="重置">
	</form>
</body>
</html>

运行结果:

    1.首次登陆


    2.输入账号及密码并选择登陆


    3.登陆完成后会回到,此时刷新一下发现账号和密码自动填写


提示:使用cookie保存密码很不安全,所以通常保存用户名即可,当然也可以由用户选择是否保存账号或密码

猜你喜欢

转载自blog.csdn.net/sinat_34104446/article/details/80073868
今日推荐