使用Cookie记住表单用户名

思路:

    创建表单

   在操作表单数据之前,首先判断磁盘中是不是存在需要cookie(这里指的是用户名信息)

   获取到表单内容,创建cookie,核对登录信息,登录失败,不做任何操作   登录成功,对复选框进行判断,如果选中,记住用户名,否则删除用户名


建立servlet,名字为LoginUI

package com.itheima.login;

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

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.registry.infomodel.User;

public class LoginUI extends HttpServlet {

	

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/**
		 * 得到缓存中的数据
		 */
		//设置编码
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		String user = "";//用来存储缓存中取出的用户名
		String check="";//用来给复选框赋值
		Cookie[] cook = request.getCookies();//得到缓存中的值
		for (int i = 0;cook!=null && i < cook.length; i++) {//判断缓存是不是为空和长度是不是到末尾了。如果等于空,代表缓存中没有值
			if("cookinfo".equals(cook[i].getName())){//如果缓存中的名字和取出来的名字是一一致的,
				user = cook[i].getValue();//取出缓存中的值
				check= "'checked=checked'";//默认选中复选框
			}
		}
		out.write("<form  action='"+request.getContextPath()+"/servlet/loginservlet' method='post'/>");
		out.write("user:<input type='text' name ='user' value="+user+" ><br>");
		out.write("passsword:<input type = 'password' name ='pwd' > <br/>");
		out.write("<input type= 'checkbox' name = 'check'"+check+"/>记住密码<br/>");
		out.write("<input type = 'submit' value ='提交'/>");
		out.write("</form>");
	/*	
	 * 遇到的问题,
			编码问题,对编码的语法不熟悉。写错了
			获取路径不对,原因是web.xml中的路径写错了。
			*/
				
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

在创建一个servlet 名字为  LoginDemo

package com.itheima.login;

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

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginDemo extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		/**
		 * 处理数据
		 */
		//获取表单数据
		String user = request.getParameter("user");
		String pwd = request.getParameter("pwd");
		//这里本来是需要是用getParameterValues的到复选框中的值,
		//但是。getParameterValues是得到这个复选框中值的内容。
		//我这里,不需要内容,只需判断,这个复选框有没有被选中,
		//如果被选中,值就是on,没有被选中,值就是null
		String check = request.getParameter("check");
		//处理业务逻辑
		//分发转向
		Cookie ck = new Cookie("cookinfo",user);
		//使用数据库中的值和表单的值做比较
		if("tom".equals(user)&&"123".equals(pwd)){
			out.write("登录成功");
			//如果这复选框中的值不为空,代表复选框是选中状态,那么就把这个值个存起来
			if(check!=null){
				ck.setMaxAge(Integer.MAX_VALUE);
			}else{
				//如果值空,就把cookie中所对应的值个删除
				ck.setMaxAge(0);
			}
			//设置自动跳转到登录页面
			response.setHeader("refresh", "3;url="+request.getContextPath()+"/servlet/loginui");
			//response.setHeader("referesh", "3;url='"+request.getContentType()+"/servlet/loginui'");
		}else{
			out.write("登录失败");
			//设置自动跳转到登录页面
			response.setHeader("refresh", "3;url="+request.getContextPath()+"/servlet/loginui");
		}
		//不管这个cookie中有没有值,都需要响应个服务器
		response.addCookie(ck);
		
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

配置web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>
  <servlet>
    <servlet-name>LoginDemo</servlet-name>
    <servlet-class>com.itheima.login.LoginDemo</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>LoginUI</servlet-name>
    <servlet-class>com.itheima.login.LoginUI</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginDemo</servlet-name>
    <url-pattern>/servlet/loginservlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>LoginUI</servlet-name>
    <url-pattern>/servlet/loginui</url-pattern>
  </servlet-mapping>	
</web-app>





猜你喜欢

转载自blog.csdn.net/yz972641975/article/details/48971405