login..jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2018/5/24 0024
Time: 下午 6:22
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 onload="login()">
<form id="form" action="login" method="post" >
<input id="name" type="text" name="name" value=""/>
<input id="password" type="password" name="password" value=""/>
自动登录<input type="checkbox" name="check"/>
<input id="token" type="hidden" name="token">
<input type="submit" value="login"/>
</form>
<script type="text/javascript">
function login() {
var cookies = document.cookie;
var name = cookies.split(";")[0].split("=")[1];
var token = cookies.split(";")[1].split("=")[1];
var checkon = cookies.split(";")[2].split("=")[1];
console.log(name +" "+token+" "+checkon);
console.log(checkon);
if(checkon=="on"){
console.log("yes");
var nameInp = document.getElementById("name");
nameInp.value = name;
console.log(nameInp);
var tokenInp = document.getElementById("token");
tokenInp.value = token;
document.getElementById("form").submit();
}
}
</script>
</body>
</html>
loginservlet.java
package servlet;
import dao.AutoLoginDao;
import dao.impl.AutoLoginImpl;
import util.RandomUtil;
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 java.io.IOException;
@WebServlet(name = "LoginServlet",urlPatterns = {"/login"})
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String name = request.getParameter("name");
String password = request.getParameter("password");
String check = request.getParameter("check");
String token = request.getParameter("token");
System.out.println("name: "+name+"password: "+password+"check: "+check);
if(name.equals("admin")&&password.equals("admin")){//此处,应该是判断name和password时候在数据库
Cookie cookie = new Cookie("name",name);
cookie.setMaxAge(60*60);
token = RandomUtil.randomString(10);
Cookie cookie1 = new Cookie("token",token);
cookie1.setMaxAge(60*60);
AutoLoginDao ad = new AutoLoginImpl();
ad.addAutoLogin(name,token);//将数据放入数据库
Cookie cookie2 = new Cookie("check",check);
cookie2.setMaxAge(60*60);
response.addCookie(cookie);
response.addCookie(cookie1);
response.addCookie(cookie2);
response.getWriter().write("success");
}else if(token!=null&&!token.equals("")){//token存在且不是为空
AutoLoginDao ad = new AutoLoginImpl();
boolean result = ad.selectByNameAndToken(name,token);//判断token是否和数据库一样
if(result){
response.getWriter().write("success");
}else{
Cookie cookie2 = new Cookie("check","notOn");//防止重复跳转
response.sendRedirect("login.jsp");
}
}else{
response.sendRedirect("login.jsp");//登录不成功
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
auto_login.sql
create table auto_login(
id int primary key auto_increment,
user_id VARCHAR(30) not null ,
token text not null
);
具体这边的token需要随机生成,所以需要用一些特别的加密算法,md5等等