javaweb中Cookie的使用

这篇博客介绍了在Java Web应用中如何利用Cookie实现自动登录功能。通过在登录页面设置自动登录选项,并在Servlet中编写Cookie处理代码,博主解决了按照书本教程无法成功的问题,通过调整代码逻辑,实现了在页面刷新时正确执行Cookie写入的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前的代码中已经学习了关于javaweb的简单程序编写,现在需要使用cookie来进行参数的传递,这里以自动登录来学习。

  • 首先我们需要在登陆页面中插入自动登录选项框,相应的代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>login</title>
</head>


<!-- 页面的样式文件 -->
<style type="text/css">
body{
	background-color : #eee;
}
#first{
	width:500px;
	margin:30px auto;
}
</style>

<body>
<div id="first">
	${sessionScope.message}<br><br>
	<form action="login.do" method="post" >
		<table>
		<tr>
			<td>用户名:</td>
			<td><input type="text" name="username"></td>	
		</tr>
		<tr>
			<td>密 码:</td>
			<td><input type="password" name="password"></td>	
		</tr>
		<tr>
			<td><input type="checkbox" name="check" value="check"/>自动登录<br></td>	
		</tr>
		<tr>
			<td><input type="submit" value="确认"></td>
			<td><input type="reset" value="取消"></td>	
		</tr>
		</table>
	</form>
</div>
</body>
</html>

  • 其次我们在验证登陆的servlet中进行cookie代码编写,但是我按照书本上的来进行发现不会实现相应的功能,所以我就按照自己的方式来完成了(页面在刷新的时候应该是先执行doget方法,但是将cookie写在doget方法里程序运行的时候并不会执行,所以我将doget要实现的功能在dopost里面来进行代码编写,最终实现了相应的功能)。相应的代码如下:
package king;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class loginservlet
 */
@WebServlet(name="loginservlet",urlPatterns={"/login.do"})
public class loginservlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	String message = "";
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		//发现写在doget方法里的代码不会执行
		
		String value1 = "",value2 = "";
		Cookie cookie = null;
		Cookie[] cookies = request.getCookies();//获得Cookie对象数组
		
		if(cookies!=null){
			for(int i = 0;i<cookies.length;i++){
				cookie = cookies[i];
				if(cookie.getName().equals("username")){
					value1 = cookie.getValue();
				}
				if(cookie.getName().equals("password")){
					value2 = cookie.getValue();
				}
			}
			if(value1.equals("admin") && value2.equals("1234")){
				message = "欢迎您!" + value1 + "再次登录该页面!";
				request.getSession().setAttribute("message", message);
				response.sendRedirect("register.jsp");
			}
			else{
				response.sendRedirect("login.jsp");
			}
		}
		else{
			response.sendRedirect("login.jsp");
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {	
		
		String value1 = "",value2 = "";
		Cookie cookie = null;
		Cookie[] cookies = request.getCookies();//获得Cookie对象数组
		
		if(cookies!=null){
			for(int i = 0;i<cookies.length;i++){
				cookie = cookies[i];
				if(cookie.getName().equals("username")){
					value1 = cookie.getValue();
				}
				if(cookie.getName().equals("password")){
					value2 = cookie.getValue();
				}
			}
			if(value1.equals("admin") && value2.equals("1234")){
				message = "欢迎您!" + value1 + "再次登录该页面!";
				request.getSession().setAttribute("message", message);
				response.sendRedirect("register.jsp");
			}
			else{
				response.sendRedirect("login.jsp");
			}
		}
		//如果没有cookie
		else{
			//获得用户的用户名和密码
			String username = request.getParameter("username").trim();
			String password = request.getParameter("password").trim();
			
			//Cookie代码
			if(!username.equals("admin") || !password.equals("1234")){
				message = "用户名或密码错误,请重试!";
				request.getSession().setAttribute("message", message);
				response.sendRedirect("login.jsp");
			}
			else{
				//如果用户选中了“自动登陆”复选框,向浏览器发送两个Cookie
				if(request.getParameter("check")!=null && (request.getParameter("check").equals("check"))){
					Cookie namecookie = new Cookie("username",username);
					Cookie passwordcookie = new Cookie("password",password);
					namecookie.setMaxAge(60*60);
					passwordcookie.setMaxAge(60*60);
					response.addCookie(namecookie);
					response.addCookie(passwordcookie);
				}		
				message = "欢迎"+username+"你已成功登陆!";
				request.getSession().setAttribute("message", message);
				response.sendRedirect("register.jsp");
			}
		}
	}		
}

  • 进行程序验证。
首先登陆界面:

登陆之后:


在Javaweb中的cookie使用上,我也是有点懵,如果哪位大神看了之后有什么不对的地方,希望能够不吝赐教。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值