168 lines
5.8 KiB
Java
168 lines
5.8 KiB
Java
package com.qf.controller;
|
||
|
||
import com.qf.entity.User;
|
||
import com.qf.service.UserService;
|
||
import com.qf.service.impl.UserServiceImpl;
|
||
import com.qf.utils.Base64Utils;
|
||
import com.qf.utils.Constants;
|
||
import com.qf.utils.MD5Utils;
|
||
import com.qf.utils.RandomUtils;
|
||
import org.apache.commons.beanutils.BeanUtils;
|
||
|
||
import javax.servlet.annotation.WebServlet;
|
||
import javax.servlet.http.Cookie;
|
||
import javax.servlet.http.HttpServletRequest;
|
||
import javax.servlet.http.HttpServletResponse;
|
||
import javax.servlet.http.HttpSession;
|
||
import java.lang.reflect.InvocationTargetException;
|
||
import java.sql.SQLException;
|
||
import java.util.Map;
|
||
|
||
/**
|
||
* @author 小灰灰呀
|
||
*/
|
||
@WebServlet("/user")
|
||
public class UserController extends BaseServlet {
|
||
|
||
/**
|
||
* 1.查询用户是否存在
|
||
*/
|
||
public String check(HttpServletRequest request, HttpServletResponse response) throws SQLException {
|
||
//1.获取用户名
|
||
String username = request.getParameter("username");
|
||
if (username == null) {
|
||
return "1";
|
||
}
|
||
//2.调用对应的业务逻辑判断用户名是否存在
|
||
UserService userService = new UserServiceImpl();
|
||
boolean b = userService.checkedUser(username);
|
||
//3.响应
|
||
if (b) {
|
||
//用户名存在
|
||
return "1";
|
||
}
|
||
return "0";
|
||
}
|
||
|
||
/**
|
||
* 2.注册功能
|
||
*/
|
||
public String register(HttpServletRequest request, HttpServletResponse response) {
|
||
//1.获取到我们的用户信息
|
||
Map<String, String[]> parameterMap = request.getParameterMap();
|
||
//定义一个User
|
||
User user = new User();
|
||
try {
|
||
BeanUtils.populate(user, parameterMap);
|
||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||
e.printStackTrace();
|
||
}
|
||
//2.完善我们用户信息
|
||
user.setUstatus("0");
|
||
user.setUrole(0);
|
||
user.setCode(RandomUtils.createActive());
|
||
//对密码进行加密处理
|
||
user.setUpassword(MD5Utils.md5(user.getUpassword()));
|
||
//3.调用对应的业务逻辑进行注册
|
||
UserService userService = new UserServiceImpl();
|
||
|
||
try {
|
||
userService.registerUser(user);
|
||
} catch (SQLException e) {
|
||
e.printStackTrace();
|
||
request.setAttribute("registerMsg", "注册失败!");
|
||
return Constants.FORWARD + "/register.jsp";
|
||
}
|
||
//4.响应
|
||
return Constants.FORWARD + "/registerSuccess.jsp";
|
||
}
|
||
|
||
/**
|
||
* 3.登录功能
|
||
*/
|
||
public String login(HttpServletRequest request, HttpServletResponse response) throws SQLException {
|
||
|
||
//1.获取请求参数
|
||
String username = request.getParameter("username");
|
||
String password = request.getParameter("password");
|
||
|
||
//用户输入的验证码
|
||
String code = request.getParameter("code");
|
||
//自动登录标识
|
||
String auto = request.getParameter("auto");
|
||
|
||
//2.获取正确的验证码(在session中)
|
||
HttpSession session = request.getSession();
|
||
String codestr = (String) session.getAttribute("code");
|
||
|
||
//3.判断验证码是否正确(空或者不匹配)
|
||
if (code == null || !code.equalsIgnoreCase(codestr)) {
|
||
//错误提示
|
||
request.setAttribute("msg", "验证码错误!");
|
||
//将页面返回登录页面
|
||
return Constants.FORWARD + "login.jsp";
|
||
}
|
||
//4.调用业务逻辑判断账号密码是否正确(验证码正确的情况下)
|
||
UserService userService = new UserServiceImpl();
|
||
User user = userService.login(username, password);
|
||
|
||
//5.响应
|
||
if (user == null) {
|
||
//错误提示
|
||
request.setAttribute("msg", "用户名或密码错误!");
|
||
//将页面返回登录页面
|
||
return Constants.FORWARD + "login.jsp";
|
||
}
|
||
//6.进行登录
|
||
session.setAttribute("loginUser", user);
|
||
|
||
/*
|
||
自动登录
|
||
*/
|
||
//7.判断是否勾选自动登录
|
||
if (auto == null) {
|
||
//将本地浏览器的cookie'清空'
|
||
//创建一个cookie 常量autoUser,value里面没有值主要是一个覆盖功能
|
||
Cookie cookie = new Cookie(Constants.AUTO_NAME, "");
|
||
//表示当前项目下所有的访问资源servlet都可以访问这个cookie
|
||
cookie.setPath("/");
|
||
cookie.setMaxAge(0);
|
||
//写回cookie
|
||
response.addCookie(cookie);
|
||
} else {
|
||
//将cookie存入到本地
|
||
String content = username + ":" + password;
|
||
//用Base64转一下码,就无法直接看出来了
|
||
content = Base64Utils.encode(content);
|
||
//传入我们的账号密码
|
||
Cookie cookie = new Cookie(Constants.AUTO_NAME, content);
|
||
//表示当前项目下所有的访问资源servlet都可以访问这个cookie
|
||
cookie.setPath("/");
|
||
//两周
|
||
cookie.setMaxAge(14 * 24 * 60 * 60);
|
||
//写回cookie
|
||
response.addCookie(cookie);
|
||
}
|
||
return Constants.FORWARD + "/index.jsp";
|
||
}
|
||
|
||
/**
|
||
* 4.注销登录
|
||
*/
|
||
public String logOut(HttpServletRequest request, HttpServletResponse response) {
|
||
//1.清空session中的用户数据
|
||
HttpSession session = request.getSession();
|
||
session.removeAttribute("loginUser");
|
||
|
||
//2.清空和覆盖cookie存储的自动登录信息
|
||
Cookie cookie = new Cookie(Constants.AUTO_NAME, "");
|
||
cookie.setPath("/");
|
||
cookie.setMaxAge(0);
|
||
response.addCookie(cookie);
|
||
|
||
//3.提示注销并将页面转发到登录页面
|
||
request.setAttribute("msg", "注销登录成功!");
|
||
return Constants.FORWARD + "login.jsp";
|
||
}
|
||
}
|