使用cookie进行登录操作
要求:1、登录的账号是首次登录则显示成功登录;
2、登录的账号非首次登录则显示最后一次登录的时间。
由于技术有限,目前所作的是固定账户名相同的,并非采用数据库进行对比。
首先需要设置登录界面,login.jsp文件:
<%-- Created by IntelliJ IDEA. User: TY Date: 2022/8/17 Time: 13:54 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/homework" method="post" ><br> 用户名<input id="username" name="username" type="text" ><br> 密码 <input name="password" type="password"><br> <button type="submit">提交</button> </form> <%--<span style="color:red"></span>--%> <span style="width: auto">${sessionScope.msg}</span> </body> </html>
然后可以设置一个登陆成功界面进行跳转,success.jsp:
<%-- Created by IntelliJ IDEA. User: TY Date: 2022/8/17 Time: 14:38 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>成功登录</h1> </body> </html>
然后对主要文件cookie.java进行书写:
package com.hqyj.gwr.homework; import com.sun.applet2.AppletParameters; import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; 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; import javax.xml.crypto.Data; import java.io.IOException; import java.io.PrintWriter; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; @WebServlet("/homework") public class homework extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String encode = URLEncoder.encode("password", "UTF-8"); String username=request.getParameter("username"); String password=request.getParameter("password"); Cookie cookie = new Cookie("password", encode); //将cookie放在响应中传入浏览器 response.addCookie(cookie); Cookie username1= new Cookie("username", "123456"); response.addCookie(username1); Date date = new Date(); String s = date.toString(); System.out.println(s); Cookie[] cookies = request.getCookies(); for (Cookie c:cookies){ String name = c.getName(); String value = c.getValue(); //对拿到的cookie进行解码 String decode = URLDecoder.decode(value,"UTF-8"); response.setContentType("text/html;charset=utf-8");//固定写法 } if ("zhangsan".equals(username)){ Date d= new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String now = df.format(d); PrintWriter writer = response.getWriter(); writer.print("上次您登录的时间是:"+now); }else{ request.getRequestDispatcher("/success.jsp").forward(request,response); } }}
cookie存储的东西只能是字符串并且大小有限制;获取数据的方法与数组类似。