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

打印 上一主题 下一主题

主题 544|帖子 544|积分 1632

目录
在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、配置路径




结果:











免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表