JAVAWeb项目 微型商城项目-------(六)管理员登录

管理员登录

1.定义管理员操作的DAO

- 定义Admin管理员的vo类
        需要有get ,set,方法,toString方法
- 定义IAdminDAO接口,只需要登录的操作方法        
    `public interface IAdminDAO extends IDAO<String, Admin> {
                //登录方法    
          public boolean findLogin(Admin vo) throws Exception;
                //更新登录日期
          public boolean doUpdatelastdate(String aid) throws Exception;
        }`
- 定义AdminDAOImpl继承IAdminDAO接口实现方法

- DAOFactory(通过DAO工厂实例化)
        `public static AdminDAOImpl getIAdminDAOInstance() {
                return new AdminDAOImpl(); `

2.定义业务层操作

    -管理员登录属于后台业务层所以和前台注册,登录分开 保存到    service.back包中

    -定义IAdminServiceback接口 
            ` /**
               * 
               * @Title: login   
               * @Description: TODO(后台管理员登录操作)   
               * @param: @param vo
               * @param: @return
               * @param: @throws Exception      
               * @return: boolean      
               * @throws   调用 findLogin确定密码和用户名正确  doUpdatelastdate更新登录时间
               */
              public boolean login(Admin vo) throws Exception;`
    -定义AdminServicebackImpl类实现    IAdminServiceback接口 

3.编写AdminLoginServletBack类

    -业务实现类

                    注解设置servlet
            @WebServlet(name = "AdminLoginServletBack", urlPatterns = "/pages/AdminLoginServletBack/*")
            public class AdminLoginServletBack extends HttpServlet {
              private static final long serialVersionUID = 1L;

              protected void doGet(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException {

                        String path = "/pages/errors.jsp";
                        // 获取地址*的部分转换为字符串
                        String status = request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/") + 1);
                        System.out.println(status);
                        if (status != null) {// 为空直接跳转到错误页面
                                 //如果登录到后台登录页面
                          if ("login".equals(status)) {
                        path = this.login(request);
                          } else if ("logout".equals(status)) {
                        path = this.logout(request);
              }
            }
            System.err.println("跳转网页" + path);
            request.getRequestDispatcher(path).forward(request, response);
              }

                 private String login(HttpServletRequest request) {
                    String msg = null;
                    String url = null;
                    Admin vo = new Admin();
                    String aid = request.getParameter("aid");
                    String password = request.getParameter("password");
                    String code = request.getParameter("code");// 验证码
                    String rand = (String) request.getSession().getAttribute("rand");
                       //判断输入的有内容
                     if (VakidateUtil.VakidateNoEmpty(aid) && VakidateUtil.VakidateNoEmpty(password)
                        && VakidateUtil.VakidateNoEmpty(code) && VakidateUtil.VakidateNoEmpty(rand)) {
                             //判断验证码必须正确
                         if (VakidateUtil.Vakidatesame(code, rand)) {

                        vo.setAid(aid);
                        vo.setPassword(new MD5Code().MD5Encode(password));
                        try {
                                //判断数据库内容匹配
                          if (ServletBackFactory.getIAdminServiceback().login(vo)) {
                            request.getSession().setAttribute("aid", aid);
                            request.getSession().setAttribute("lastdate", vo.getLastdate());
                            msg = "管理员登录成功";
                            url = "/pages/back/admin/index.jsp";
                          } else {
                            msg = "管理员登录失败,请重新登录";
                            // 该地址不受到过滤器限制
                            url = "/pages/back/login.jsp";
                          }
                        } catch (Exception e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                        }
                      } else {
                        msg = "填写信息错误,请重新登录";
                        url = "/pages/forward.jsp";
                      }
                    } else {
                      msg = "验证码错误请重新输入";
                      // 该地址不受到过滤器限制
                      url = "/pages/back/login.jsp";
                    }
                    request.setAttribute("msg", msg);
                    request.setAttribute("url", url);
                    return "/pages/forward.jsp";
                  }

              private String logout(HttpServletRequest request) {
                request.getSession().invalidate();
                request.setAttribute("msg", "管理员注销成功");
                request.setAttribute("url", "/pages/back/login.jsp");
                return "/pages/forward.jsp";
              }

4.建立后台登录页面

-略

5.建立管理员登录过滤器

-只检测管理员后台页面   
    `@WebFilter(filterName="AdminLoginFilter",urlPatterns="/pages/back/admin/*")
        public class AdminLoginFilter implements Filter {

          @Override
          public void init(FilterConfig filterConfig) throws ServletException {
            // TODO Auto-generated method stub

          }

          @Override
          public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
              throws IOException, ServletException {
            HttpServletRequest request2 = (HttpServletRequest) request;// 取得session
            HttpSession hs = request2.getSession();
            if (hs.getAttribute("aid") != null) {// 没有登陆过
              // 放过
              chain.doFilter(request, response);
            } else {
              hs.setAttribute("mid", "你还没有登录,请登录");
              hs.setAttribute("photo", "/pages/back/login.jsp");
              request.getRequestDispatcher("/pages/forward.jsp").forward(request, response);
            }

          }

          @Override
          public void destroy() {
            // TODO Auto-generated method stub

          }


        }`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值