• 用户管理的小demo--登录校检


    目录

    在user里面 装session

    1、 LoginServlet.java

    2、LoginFilter.java

    3、配置路径

    结果:


    在user里面 装session

    1、 LoginServlet.java

    1. package com.by.servlet;
    2. import com.by.pojo.User;
    3. import com.by.service.UserService;
    4. import com.by.service.impl.UserServiceImpl;
    5. import javax.servlet.ServletException;
    6. import javax.servlet.http.HttpServlet;
    7. import javax.servlet.http.HttpServletRequest;
    8. import javax.servlet.http.HttpServletResponse;
    9. import javax.servlet.http.HttpSession;
    10. import java.io.IOException;
    11. /**
    12. * 注意:
    13. * 1、一次只写一层
    14. * 2、复杂的代码先写注释,后写代码
    15. * web层: 接受请求 控制跳转, 并调用service层
    16. */
    17. public class LoginServlet extends HttpServlet {
    18. private UserService userService = new UserServiceImpl();
    19. @Override
    20. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    21. doPost(req, resp);
    22. }
    23. @Override
    24. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    25. try{
    26. String username = req.getParameter("username");
    27. String password = req.getParameter("password");
    28. User user = userService.login(username,password);
    29. //控制页面的跳转
    30. if(user != null){ //登录成功
    31. //在user里面 装session : session 可以设置失效时间--浏览器进行关闭
    32. HttpSession session = req.getSession();
    33. session.setAttribute("user",user);
    34. session.setMaxInactiveInterval(60*30); //30分钟
    35. //利用重定向
    36. //重定向到selectServlet,在selectServlet查询数据,并把数据传递到main.jsp
    37. resp.sendRedirect("selectUser");
    38. // resp.sendRedirect("deleteUser");
    39. }else{
    40. resp.sendRedirect("login.jsp"); //登录失败 去登录页面
    41. }
    42. }catch (Exception e){
    43. e.printStackTrace();
    44. }
    45. }
    46. }

    2、LoginFilter.java

    1. package com.by.filter;
    2. import javax.servlet.*;
    3. import javax.servlet.http.HttpServletRequest;
    4. import javax.servlet.http.HttpServletResponse;
    5. import java.io.IOException;
    6. public class LoginFilter implements Filter {
    7. @Override
    8. public void init(FilterConfig filterConfig) throws ServletException {
    9. }
    10. @Override
    11. public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
    12. HttpServletRequest request = (HttpServletRequest) req;
    13. HttpServletResponse response = (HttpServletResponse) resp;
    14. //直接放行: “login.jsp”和“/”
    15. String uri = request.getRequestURI();
    16. if(uri.contains("login") || uri.endsWith("/")){
    17. System.out.println("uri:"+uri+"中包含login或以/结尾 --> 直接放行");
    18. //放行
    19. chain.doFilter(req,resp);
    20. //结束
    21. return;
    22. }
    23. //1、从session获取user
    24. Object user = request.getSession().getAttribute("user");
    25. //2、获取到user,则放行
    26. if(user != null){
    27. System.out.println("用户已登录 --> 直接放行");
    28. //放行
    29. chain.doFilter(req,resp);
    30. //结束
    31. return;
    32. }else{
    33. System.out.println("用户未登录 --> 重定向到 login.jsp");
    34. //3、没有获取到user,则重定向到login.jsp
    35. response.sendRedirect("login.jsp");
    36. }
    37. }
    38. @Override
    39. public void destroy() {
    40. }
    41. }

    3、配置路径

    结果:

  • 相关阅读:
    Vue08 事件的基本使用
    蓝桥杯练习
    【Docker项目实战】使用Docker部署Plik临时文件上传系统
    labview技术交流-判断两个数组的元素是否完全相同
    Python 之 numpy.unique函数的介绍以及使用
    通信总线协议三 :IIC
    搜索接口搜索“苏州协同创新智能科技时”超时调优
    CentOS 7基础操作05_Linux查看及切换目录
    Linux驱动开发入门
    边缘计算网关在智能工业园区中的的应用及其优势-天拓四方
  • 原文地址:https://blog.csdn.net/m0_57030122/article/details/139444552