用Cookie记住上次登录用户名

一个登录页面设置查看Cookie中的数据(Cookie不为null);然后将页面提交到另一个页面去,在这个页面中的到是否选择记住用户名,如果选择了,

就创建Cookie对象,将用户名存储起来,下次登录时,用户名直接显示在上面,注意:路径一定要一致,且都能访问。

登录页面

package com.itheima.cookie;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
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;

import com.itheima.myConstant;

//模拟登录时,记住用户名和密码
@WebServlet(
		urlPatterns = { "/CookieDemo2" }, 
		initParams = { 
				@WebInitParam(name = "CookieDemo2", value = "com.itheima.cookie.CookieDemo2")
		})

public class CookieDemo2 extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//读取记住的用户名
		String name="";
		String rem="";
		Cookie[] cookies=request.getCookies();
		for(int i=0;cookies!=null&&i<cookies.length;i++){
			Cookie c=cookies[i];
			if(myConstant.USER_NAME.equals(c.getName())){
				//找到了
				String value=c.getValue();
				name=value;
				rem="checked='checked'";
				
			}
		}
		//显示出登陆界面
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		out.println("<html>");
		out.println("<head><title>用户登陆</title></head>");
		out.println("<body>");
		out.println("<form action='/CookieTest/CookieDemo3' method='post'>");
		out.println("<table width='400' border='1'>");
		out.println("<tr>");
		out.println("<td>用户名</td>");
		out.println("<td><input type='text' name='username' value="+name+"/></td>");
		out.println("</tr>");
		
		out.println("<tr>");
		out.println("<td>密码</td>");
		out.println("<td><input type='password' name='password'/></td>");
		out.println("</tr>");
		
		out.println("<tr>");
		out.println("<td colspan='2'><input type='checkbox' name='remember'"+rem+"/>记住用户名</td>");
		out.println("</tr>");
		
		out.println("<tr>");
		out.println("<td colspan='2'><input type='submit' value='go'/></td>");
		out.println("</tr>");
		out.println("</table></form></body></html>");
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

}

 处理页面

package com.itheima.cookie;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
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;

import com.itheima.myConstant;

/**
 * 接收用户名和密码,验证是否是合法用户
 *看用户是否选中了checkbox,如果选中,将数据写入Cookie
 */
@WebServlet(
		urlPatterns = { "/CookieDemo3" }, 
		initParams = { 
				@WebInitParam(name = "CookieDemo3", value = "com.itheima.cookie.CookieDemo3")
		})
public class CookieDemo3 extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String remember=request.getParameter("remember");
//		System.out.println(remember);//选中输出on,不选中输出null(value的值)
		if(remember!=null){
			//如果选中,把用户名写入Cookie
			Cookie c=new Cookie(myConstant.USER_NAME,request.getParameter("username"));
			c.setPath(request.getContextPath());
			c.setMaxAge(Integer.MAX_VALUE);//永久保存
			response.addCookie(c);
			
		}
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write("登陆成功,这是主页");	
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request,response);
	}

}
原文地址:https://www.cnblogs.com/lzzhuany/p/4702027.html