1、需求分析
在实际运用中的用户登陆网站中,多提供有记住密码和自动登陆等功能,方便同一用户短时间内不用再输入用户名和密码等繁琐信息可以快捷登陆。本案例将模拟用户自动登陆功能。
1.2、设计思路(实现原理)
- 创建login.html页面,编写用户登陆界面
- 创建Demo6类, 编写用户登陆判断逻辑处理和自动登陆业务,
- 在web.xml中配置初始化参数和类的映射
2、作业要求
2.1、启动Tomcat服务器,在地址栏中输入http://localhost:8080/chapter05/ login.html,访问浏览器显示的结果如下图所示:
2.2、在输入框随机输入用户名,如”zhangsan”,第一次不选中自动登陆框,然后点击提交按钮,浏览器显示的结果如下图所示:
2.3、则用户就会登陆网站了,当点击上图页面中的退出按钮就又返回到了初始登陆页面,如下所示;
2.4、可以在不输入用户名的情况下点击提交按钮,查看浏览器页面出现以下结果:
提醒用户输入用户名(因为还没有选中自动登陆功能),2秒后自动跳转到登陆页面,让用户必须登陆才可以;
2.5、第二次,在登陆界面随机输入用户名,如”zhangsan”,在勾选自动登陆框,点击提交按钮,浏览器显示结果如下:
2.6、
则用户就会登陆网站了,当点击上图页面中的退出按钮就又返回到了初始登陆页面,这次不用输入用户名(必须在退出后的10秒内,因为代码中设置cookie的有效期是10秒钟),再次直接点击提价按钮,浏览器显示结果如下(用户实现了自动登陆功能):
问题
这里有个缺点就是,你登录进的时候kookie就生效了只有十秒的有效期,所以你在这10秒内退出然后再登录页面直接点登录就可以了,
解决方案
你只需要再写一个类,这个类处理你退出的时候设置cookie的时间为10秒过期就行了.欢迎大佬们在评论区留言
3、代码
login.html
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="Demo6" method="post">
用户名: <input type="text" name="username" ><br>
自动登录: <input type="checkbox" name="remember"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
demo6Servlet.java
package com.gued.w4.anli54;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet("/Demo6")
public class Demo6Servlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String username=request.getParameter("username");
String remember=request.getParameter("remember");
System.out.println(remember);
//创建或者获取用户的Session对象
HttpSession session1 = request.getSession();
Object remember1 = session1.getAttribute("remember1");
if (remember==null){
if(remember1!=null){
String url="/test01/login.html";
response.getWriter().println("您以登录欢迎您"+"<a href='"+url+"'>退出</a>");
}else {
if(username.equals("zhangsan") ){
String url="/test01/login.html";
response.getWriter().println("您以登录欢迎您"+"<a href='"+url+"'>退出</a>");
}else {
response.getWriter().write("请输入用户名,页面2秒后调转");
response.setHeader("Refresh","2;url=/test01/login.html");
}
}
}else {
if (username.equals("zhangsan")){
String url="/test01/login.html";
response.getWriter().println("您以登录欢迎您"+"<a href='"+url+"'>退出</a>");
}
session1.setAttribute("remember1",remember);
//创建Cookie存放Session的标记号
Cookie cookie = new Cookie("JSESSIONID", session1.getId());
cookie.setMaxAge(10);
cookie.setPath("/test01");
response.addCookie(cookie);
}
}
}
我的大学:梦开始的地方
https://www.bilibili.com/