session和cookie完成自动登录
其他
2021-01-29 16:33:44
阅读次数: 0
1.模拟登录
- 目录图片
- indexServlet代码
package com.dl.code;
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;
/**
* @公司 DL19121630工作室
* @作者 代先生
* @日期 2021/1/9 -- 10:16
* @微信 D19121630L
* @温馨提示:原创代码,翻版必究!如需代写,微信联系!
*/
@WebServlet("/indexServlet")
public class IndexServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//如果用户直接访问IndexServlet
//先判断用户是否登录过,也就是判断cookie和session中是否有对应的值存在
//获取cookie
Cookie[] cookies = req.getCookies();
String name = null;
String password = null;
//查找,键为name的cookie
if (cookies!=null){
for (Cookie cookie : cookies) {
if(cookie.getName().equals("name")){
//存入用户名
name=cookie.getValue();
}
if (cookie.getName().equals("password")){
//存入密码
password=cookie.getValue();
}
}
}
//判断 name 和 password 是否为空,如果为空,则表明,没有成功登录过,则不允许自动登录
if (name !=null && password !=null){
//自动登录,跳转道主页面
resp.sendRedirect("index-index.html");
}else {
resp.sendRedirect("login.html");
}
}
}
- LoginServlet代码
package com.dl.code;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
/**
* @公司 DL19121630工作室
* @作者 代先生
* @日期 2021/1/9 -- 10:16
* @微信 D19121630L
* @温馨提示:原创代码,翻版必究!如需代写,微信联系!
*/
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//登录的相关操作
//设置请求编码
req.setCharacterEncoding("utf-8");
//获取用户输入的用户名和密码
String userName = req.getParameter("userName");
String password = req.getParameter("password");
//判断账户是否存在,以及密码是否正确 -- 这里只进行模拟操作
//模拟设置:账户名为:dl19121630 密码:123456789
if (userName.equals("dl19121630")){
//账户存在
if (password.equals("123456789")){
//密码正确
//将账户名存入到cookie中
Cookie name = new Cookie("name",userName);
//将密码存入到cookie中
Cookie pwd = new Cookie("password", password);
//设置cookie的有效期限,这里设置成一个小时
name.setMaxAge(60*60);
pwd.setMaxAge(60*60);
//将cookie发送到浏览器
resp.addCookie(pwd);
resp.addCookie(name);
//将用户的密码保存到session中
//获取一个session
HttpSession session = req.getSession();
//将密码存入到session中
session.setAttribute("password",password);
//设置session的有效期
session.setMaxInactiveInterval(60*60);
//转发到主页面
resp.sendRedirect("index-index.html");
return;
}
}
resp.sendRedirect("error.html");
}
}
- LogoutServlet代码
package com.dl.code;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
/**
* @公司 DL19121630工作室
* @作者 代先生
* @日期 2021/1/9 -- 10:19
* @微信 D19121630L
* @温馨提示:原创代码,翻版必究!如需代写,微信联系!
*/
@WebServlet("/logoutServlet")
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//退出登录的操作
//第一步:消除 cookie和session
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
if(cookie.getName().equals("name")){
cookie.setMaxAge(0);
resp.addCookie(cookie);
}
if (cookie.getName().equals("password")){
cookie.setMaxAge(0);
resp.addCookie(cookie);
}
}
HttpSession session = req.getSession(false);
System.out.println(session);
if (session != null){
session.invalidate();
}
//跳转到登录页面
resp.sendRedirect("login.html");
}
}
-
转载自blog.csdn.net/weixin_45634682/article/details/112391304