欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java web之路 jsp状态管理 cookie在登陆中的应用

程序员文章站 2022-07-03 23:26:30
...

通过cookie保存登陆使用的使用名及密码

login.jsp页面中输入用户名及密码,选择是否将帐户信息保存在cookie中

提交至dologin.jsp页面中,在dologin.jsp中使用cookie保存用户信息,设置链接到user.jsp页面

user.jsp页面通过cookie来读取帐户信息,验证cookie保存是否成功

login.jsp

<form action="dologin.jsp" name="login" 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><button type="submit" value="dologin">登陆</td>
			</tr>
			<tr>
			<td><input type="checkbox" name="usecookie" checked="checked">十天内记住用户名密码</td>
			</tr>

		</table>
	</form>

dologin.jsp

<%
	String username="";
	String password="";
	//获得是否选择了保存帐户信息
 	String isusecookie = request.getParameter("usecookie"); 
/* 	String[] isusecookie = request.getParameterValues("usecookie"); */
	if(isusecookie!=null){
		username=request.getParameter("username");
		password=request.getParameter("password");
		Cookie usernamecookie=new Cookie("username",username);//新建username cookie对象
		Cookie passwordcookie=new Cookie("password",password);
		usernamecookie.setMaxAge(846000);//设置cookie存在的时间,单位秒
		passwordcookie.setMaxAge(846000);
		response.addCookie(usernamecookie);//将username cookie对象写入cookie中
		response.addCookie(passwordcookie);
	}else{
		Cookie[] cookies=request.getCookies();//不保存帐户信息时需要清除原cookie信息
		if(cookies!=null&&cookies.length>0){
			for(Cookie c : cookies){
				if(c.getName().equals("username")||c.getName().equals("password")){
					c.setMaxAge(0);
					response.addCookie(c);
				}
			}
		}
	}
%>
<a href="user.jsp">链接到user.jsp</a>

user.jsp

<%
	String username="";
	String password="";
	Cookie[] cookie = request.getCookies();
	for (Cookie c : cookie) {
		if(c.getName().equals("username")){
			username=c.getValue();
		}
		if(c.getName().equals("password")){
			password=c.getValue();
		}

	}
%>
用户名:<%=username %>
<br>
 密码:<%=password %>

login.jsp页面  如果保存了帐户信息,那么在帐户输入框中显示,修改后的页面

<%
	String username="";
	String password="";
	Cookie[] cookie = request.getCookies();
	for (Cookie c : cookie) {
		if(c.getName().equals("username")){
			username=c.getValue();
		}
		if(c.getName().equals("password")){
			password=c.getValue();
		}

	}
%>
<body>
	<form action="dologin.jsp" name="login" 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><button type="submit" value="dologin">登陆</td>
			</tr>
			<tr>
			<td><input type="checkbox" name="usecookie" checked="checked">十天内记住用户名密码</td>
			</tr>

		</table>
	</form>

题外话:

学习的过程中,有过一点迷糊:什么时候使用request/resonpse ?

web有页面->页面, 页面->服务器

页面之前跳转,A到B,A提交信息至B,那么在B中使用request对象来得到相关信息,相反,B要把信息返回给A或者返回给客户端,B中使用response。

无论是谁传给谁,获取信息时使用requset, 发出信息时使用response;

在cookie的使用中,需要将cookie信息给到客户端,所以只有response对象才有addCookie方法