zoukankan      html  css  js  c++  java
  • 登录和注册功能思路

    注册功能

    1.创建一个package  domain  在里面创建一个User对象(开发一个Javabean) 添加username password  email等属性

     自动生成get set方法和构造函数

    2.创建一个package service  来处理User对象,在里面提供一个registUser方法,返回一个User对象

    3.在registUser方法检测用户名是否重复,就要调用数据库

      A.在里面创建一个UsrDao对象,让UsrDao对象提供一个findByUserName方法 

        a..在package dao 包里创建一个findUserByUsername方法,用来在数据库中通过姓名查找数据,返回一个User对象

        b.    Connection conn = null;

          PreparedStatement ps = null;

            ResultSet rs = null;

            try { conn = JDBCUtils.getConnection();

          ps = conn.prepareStatement("select * from user where username = ?");

          ps.setString(1, username);

          rs = ps.executeQuery();

          if(rs.next()){

          //rs结果集中如果有数据则证明查询到了用户

    //创建一个

    user对象并向其中封装数据

          User user = new User(); user.setId(rs.getInt("id"));

          user.setUsername(rs.getString("username"));                                           user.setPassword(rs.getString("password"));                                                                 user.setNickname(rs.getString("nickname"));

                          user.setEmail(rs.getString("email")); return user;

                           }else{

                           //没有查询到用户。

                            return null;

                             }

                             } catch (SQLException e) {

                             e.printStackTrace();

            throw new RuntimeException(e);//dao层异常往上抛,谁调用就抛给谁

            }finally{

            JDBCUtils.close(conn, ps, rs); }

            }

      B.判断findByUserName是否为空,不为空就是名字存在,就抛异常

        if(findUser != null){
        /重复则抛出异常
        throw new MsgException("用户名已存在");

        a.创建一个package exception 来自定义异常

          package com.easymall.exception;

          public class MsgException extends RuntimeException{

          public MsgException(){

          }
          //准备的参数是为了让用户自己将异常信息传入,以便在页面中做出提示。
          public MsgException(String msg){
          super(msg);
          }

          }

        b.如果用户名不存在就插入数据,在dao层中完成addUser方法

          conn = JDBCUtils.getConnection();

          ps = conn.prepareStatement("insert into user values(null,?,?,?,?)");

    //将用户信息通过user

    这个javabean对象依次获取

          ps.setString(1, user.getUsername());

          ps.setString(2, user.getPassword());       

          ps.setString(3, user.getNickname());

          ps.setString(4,user.getEmail());

          ps.executeUpdate();

    4.如果用户存在则请求转发异常,因为是web层所以异常没地方抛,直接把错误显示在页面

      User user = new User(0,username,password,nickname,email);
      UserService userService = new UserService();
      try{
      userService.registUser(user);
      }catch(MsgException e){
      //提示红字用户名已存在,调用异常信息做提示
      request.setAttribute("msg", e.getMessage());
      request.getRequestDispatcher("/regist.jsp").forward(request, response);
      return;
      }

    登录功能

    1.web层loginServlet类 因为要判断user所以又要在service层的userService创建一个loginUser的方法,参数是用户名和密码

    2.在service层的userService的loginUser方法,要在dao层查询数据库,则需要在dao层创建一个findUserByUsernameAndPassword方法,返回的是一个User对象

      ps = conn.prepareStatement("select * from user where username = ? and password = ?");

      ps.setString(1, username);
      ps.setString(2, password);
      rs = ps.executeQuery();

    3.如果findUserByUsernameAndPassword方法反回数据为null,则在service层的userService的loginUser方法里抛出(用户名和密码错误)的异常到web层loginServlet类,如果不为null就返回User对象

    4.如果(用户名和密码错误)就把异常显示到JSP页面

      request.setAttribute("msg", e.getMessage());
      request.getRequestDispatcher("/login.jsp").forward(request, response);

    5.(用户名和密码正确)从web层把user回显到JSP页面,并且跳到主页

      //发送user对象到jsp页面。
      request.getSession().setAttribute("user", user);

        //跳转到主页
        response.sendRedirect(request.getContextPath()+"/index.jsp");
     

      

  • 相关阅读:
    第08组 Alpha冲刺 (2/6)
    第08组 Alpha冲刺 (1/6)
    结对编程作业
    第01组 Alpha冲刺总结
    第01组 Alpha冲刺(6/6轮)
    第01组 Alpha冲刺(6/6)
    第01组 Alpha冲刺(5/6)
    第01组 Alpha冲刺(5/6轮)
    第01组 Alpha冲刺(4/6)
    第01组 Alpha冲刺(3/6)
  • 原文地址:https://www.cnblogs.com/akic/p/10722905.html
Copyright © 2011-2022 走看看