具有注册、登陆以及后台管理功能的web开发

设计一个带有注册、登陆、后台用户管理的网站

使用(Html+Css+JavaScript+Jsp+Servlet+JDBC+JSTL+EL)

工具:eclipse(netbeans)、mysql8.0.12、Tomcat9.0、Navicat

设计思路如下:

用户方面:

管理员方面:

一、设计数据库

在名为joker的数据库中创建一个user1表,内容如下:

二、编写User类

User类用于封装用户信息

三、编写JdbcUtils类

JdbcUtils用于连接数据库:

public class JdbcUtils {  
//注册驱动的工具类

private static String url = "jdbc:mysql://localhost:3306/joker?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true";
private static String user = "root";
private static String  password = "joker666";
private static String  dv = "com.mysql.cj.jdbc.Driver";
//注册驱动
static  {
  try {
    Class.forName(dv);
} catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}
//获取连接对象
public static  Connection getCon() throws SQLException{
     Connection conn = null;
     conn = (Connection) DriverManager.getConnection(url, user, password);
     return  conn;
}
//关闭的方法
public static void close(Statement statement,Connection conn){
       if(statement !=null){
           try {
            statement.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       }
       if(conn !=null){
           try {
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       }
}
    
//关闭的方法
public static void close(PreparedStatement preparedStatement,Connection conn,ResultSet resultSet){
           if(preparedStatement !=null){
               try {
                preparedStatement.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           }
           if(conn !=null){
               try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           }
           
           if(resultSet!=null){
               try {
                resultSet.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
          }
}
}

四、编写UserDAO类

UserDAO类用于数据库的插入、查询以及删除(修改没时间写)

public class UserDAO { 
//数据库连接对象
public  User  login(String username,String password) {
   User u=null;
   Connection connection =null;
   PreparedStatement pstmt=null;
   ResultSet resultSet=null;

  //赋值
  try {
    connection=JdbcUtils.getCon();
      //静态sql语句
    String sql = "select * from user1 where name=? and password=?"; 
    pstmt = (PreparedStatement) connection.prepareStatement(sql);
    pstmt.setString(1, username);
    pstmt.setString(2, password);
    resultSet = pstmt.executeQuery();
    if(resultSet.next()){
        u=new User();
        u.setUsername(resultSet.getString("name"));
        u.setPassword(resultSet.getString("password"));
        u.setPnumber(resultSet.getString("phonenumber"));
        u.setSex(resultSet.getString("sex"));
        u.setEmail(resultSet.getString("email"));
        u.setHobby(resultSet.getString("hobby"));
        u.setAddr1(resultSet.getString("addr1"));
        u.setAddr2(resultSet.getString("addr2"));
        u.setIntroduce(resultSet.getString("introduce"));
        System.out.println("登录成功!");
    }else{
        System.out.println("用户名或者密码错误!");
    }  
} catch (SQLException e) {
    e.printStackTrace();
}finally {  
   JdbcUtils.close(pstmt, connection);  
}
 return u;
}

/**
 * 添加用户
 * @param user
 */
public void addUser(User user) {
    Connection connection = null;
    PreparedStatement psmt = null;
    try {
         connection = JdbcUtils.getCon();
         
         String sql  ="insert into user1(name,password,phonenumber,sex,email,hobby,addr1,addr2,introduce)values(?,?,?,?,?,?,?,?,?);";
         
         psmt = (PreparedStatement) connection.prepareStatement(sql);
         
         //运用实体对象进行参数赋值
         psmt.setString(1, user.getUsername());
         psmt.setString(2,user.getPassword());
         psmt.setString(3,user.getPnumber());
         psmt.setString(4,user.getSex());
         psmt.setString(5,user.getEmail());
         psmt.setString(6,user.getHobby());
         psmt.setString(7,user.getAddr1());
         psmt.setString(8,user.getAddr2());
         psmt.setString(9,user.getIntroduce());
         psmt.executeUpdate();       
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
         JdbcUtils.close(psmt, connection);
    }
}

/**
 * 删除用户
 * @param name
 * @return
 * @throws UnsupportedEncodingException 
 */
public void delUser(String id) throws UnsupportedEncodingException {
    Connection connection = null;
    PreparedStatement psmt = null;
    int i_d;
    i_d = Integer.parseInt(id);
    try {
        connection = JdbcUtils.getCon();
        String sql  = "delete from user1 where id=?";
        psmt = (PreparedStatement) connection.prepareStatement(sql);
        psmt.setInt(1, i_d);
        psmt.executeUpdate();   
        System.out.println("删除成功!");
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
         JdbcUtils.close(psmt, connection);
    }
}

/**
 * 查询用户
 * @return
 */
public ResultSet seleUser() {
    Connection connection =null;
    PreparedStatement ps=null;
    ResultSet resultSet=null;
    //赋值
      try {
        connection=JdbcUtils.getCon();
        //静态sql语句
        String sql = "select * from user1";
        ps = (PreparedStatement) connection.prepareStatement(sql);
        resultSet = ps.executeQuery();
    } catch (SQLException e) {
        e.printStackTrace();
    }
      return resultSet;
}
}

五、RegisterServlet类

用户点击注册按钮会跳转到此类,在此类将信息进行处理:

/**
 * Servlet implementation class RegisterServlet
 */
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

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

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8"); 
    request.setCharacterEncoding("utf-8");  
    //获得请求的各项信息
    String name=request.getParameter("realname");
    String password=request.getParameter("password");
    String phonenumber=request.getParameter("phonenumber");
    String sex=request.getParameter("sex");
    String email=request.getParameter("email");
    String[] hobby=request.getParameterValues("hobby");
    String hobby1 = "";
    int i;
    String addr1=request.getParameter("addr1");
    String addr2=request.getParameter("addr2");
    String introduce=request.getParameter("introduce");
    //进行“转码”翻译
    for(i=0;i<hobby.length;i++) {
        if(hobby[i] != null) {
            hobby1 += hobby[i];
        }
    }
    if(addr1.equals("1")) {
        addr1 = "河北省";
        if(addr2.equals("10")) {
            addr2 = "承德市";
        }
        if(addr2.equals("11")) {
            addr2 = "廊坊市";
        }
        if(addr2.equals("12")) {
            addr2 = "唐山市";
        }
    }
    if(addr1.equals("2")) {
        addr1 = "河南省";
        if(addr2.equals("20")) {
            addr2 = "郑州市";
        }
        if(addr2.equals("21")) {
            addr2 = "开封市";
        }
        if(addr2.equals("22")) {
            addr2 = "洛阳市";
        }
    }
    if(addr1.equals("3")) {
        addr1 = "山东省";
        if(addr2.equals("30")) {
            addr2 = "烟台市";
        }
        if(addr2.equals("31")) {
            addr2 = "德州市";
        }
        if(addr2.equals("32")) {
            addr2 = "临沂市";
        }
    }
    //将信息封装至User类中
    User user=new User();
    user.setUsername(name);
    user.setPassword(password);
    user.setPnumber(phonenumber);
    user.setSex(sex);
    user.setEmail(email);
    user.setHobby(hobby1);
    user.setAddr1(addr1);
    user.setAddr2(addr2);
    user.setIntroduce(introduce);
    //进行数据库的插入
    UserDAO userDAO=new UserDAO(); 
    userDAO.addUser(user);
    System.out.println("注册成功");
    request.getRequestDispatcher("./index.jsp").forward(request, response);
}
}

六、LoginServlet类

用户注册成功后会跳转到登录界面,当用户点击登录按钮会跳转到此类,在此类将请求的信息进行处理:

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     doPost(request, response);
   }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    HttpSession session = request.getSession();
    //获得请求信息
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    //判断用户是否存在
    UserDAO userDAO=new UserDAO(); 
    User user=userDAO.login(username, password);
    if(user!=null){
        session.setMaxInactiveInterval(1800);
        session.setAttribute("user", user);
        //将对象放入session中
        response.sendRedirect("./success1.jsp");
    }else{
        response.sendRedirect("./fail.jsp");
    }   
}
}

七、ManaloginServelet类

当管理员在登陆的时候会跳转到此类,此类将信息进行处理:

/**
 * Servlet implementation class ManaloginServelet
 */
@WebServlet("/ManaloginServelet")
public class ManaloginServelet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    HttpSession session = request.getSession();
    //获得请求的管理员的用户名和密码
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    //默认内置账号为admin,密码为123456
    if(username.equals("admin") && password.equals("123456")) {
        UserDAO userDAO=new UserDAO();
        ResultSet resultSet = userDAO.seleUser();
        //显示第一页的用户信息
        request.setAttribute("page", 1);
        session.setMaxInactiveInterval(1800);
        //将查询到的用户信息放入session中
        session.setAttribute("rs", resultSet);
        response.sendRedirect("./adminServlet");
        System.out.println("管理员登陆成功");
    } else {
        response.sendRedirect("./Manafail.jsp");
    }
}
}

八、ManaloginServelet类

当管理员登陆成功,会从ManaloginServelet跳转至此类,在此将用户信息分页显示,默认一页显示10人

/**
 * Servlet implementation class adminServlet
 */
@WebServlet("/adminServlet")
public class adminServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

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

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    listPage listPage=new listPage();
    List<User> list = new ArrayList<User>();
    int rowCount;      //记录总个数
    int pageCount;     //记录总页数
    int beginIndex = 1;  //开始的个数
    int i = 0;         //用作循环
    int pageSize = 10; //一页大小
    int prePage;      //前一页
    int nextPage;     //后一页
    int curPage = 1;      //当前页
    String strcurPage ;
    
    HttpSession session = request.getSession();
    ResultSet rs = (ResultSet)session.getAttribute("rs");
    session.setAttribute("rs", rs);
    if(rs != null ) {
        try {
            UserDAO userDAO=new UserDAO();
            ResultSet resultSet = userDAO.seleUser();
            resultSet.last();
            
            rowCount = resultSet.getRow();        // 总个数
            pageCount = (int) Math.ceil(rowCount/(pageSize*1.0));  //总页数
            strcurPage = request.getParameter("cur");           
            if(strcurPage != null) {
                curPage = Integer.parseInt(strcurPage);
            }
            //设置上一页
            prePage = curPage-1;
               if(prePage <= 0)
                 prePage = 1;
               
            //设置下一页
            nextPage = curPage+1;
            if(nextPage >= pageCount)
                nextPage = pageCount;
            
            beginIndex = (curPage-1)*pageSize+1;      //开始指针指向当前页的第一个数据
            
            if (beginIndex <= 0) {                    //无上一页
                beginIndex = 1;
            }

            if (resultSet.absolute(beginIndex)) {
                do {
                    //设置用户信息
                    User user = new User() ;
                    user.setUserID(beginIndex+i);
                    user.setUser_ID(Integer.parseInt(resultSet.getString("id")));
                    user.setUsername(resultSet.getString("name"));
                    user.setPassword(resultSet.getString("password"));
                    user.setPnumber(resultSet.getString("phonenumber"));
                    user.setSex(resultSet.getString("sex"));
                    user.setEmail(resultSet.getString("email"));
                    user.setHobby(resultSet.getString("hobby"));
                    user.setAddr1(resultSet.getString("addr1"));
                    user.setAddr2(resultSet.getString("addr2"));
                    user.setIntroduce(resultSet.getString("introduce"));
                    //添加用户信息
                    list.add(user);
                    i++;
                    if (i == pageSize) {
                        break;
                    }
                } while (resultSet.next());
            }
           //将信息封装在listPage类中
           listPage.setCurPage(curPage);
           listPage.setPrePage(prePage);
           listPage.setNextPage(nextPage);
           listPage.setPageCount(pageCount);
           listPage.setPageSize(pageSize);
           listPage.setRowCount(rowCount);
           listPage.setList(list);

            request.setAttribute("listPage", listPage);
            request.getRequestDispatcher("./Manasuccess1.jsp").forward(request, response);
        } catch (SQLException e) {
             e.printStackTrace();
        }
    }
}
}

九、listPage类

用于封装用户以及分页信息

十、admin2Servlet类

管理员在查看用户信息界面,欲查看用户的介绍界面,会跳转到此类

/**
 * Servlet implementation class admin2Servlet
 */
@WebServlet("/admin2Servlet")
public class admin2Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;

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

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String id;
    HttpSession session = request.getSession();
    ResultSet rs = (ResultSet)session.getAttribute("rs");
    Connection connection =null;
    PreparedStatement ps=null;
    String introduce = "";
    String cur = "";
    int i_d;
        try {
            //获得请求的id,并转换成int类型
            id = request.getParameter("id");
            id = java.net.URLDecoder.decode(id,"utf-8");
            i_d = Integer.parseInt(id);
            //获得当前页信息,用于返回
            cur = request.getParameter("cur");
            cur = java.net.URLDecoder.decode(cur,"utf-8");
            session.setAttribute("rs", rs);
            connection=JdbcUtils.getCon();
            //静态sql语句
            String sql = "select * from user1 where id=?";
            ps = (PreparedStatement) connection.prepareStatement(sql);
            ps.setInt(1, i_d);
            rs = ps.executeQuery();
            if(rs.next()){
                introduce = rs.getString("introduce");
            }
            //将introduce与cur放入request中
            request.setAttribute("introduce", introduce);
            request.setAttribute("cur", cur);
            request.getRequestDispatcher("./Manasuccess2.jsp").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.close(ps, connection);    
        }
    }
}

十一、admin2Servlet类

管理员在查看用户信息界面,欲某个用户,会跳转到此类

@WebServlet("/Delservlet")
public class Delservlet extends HttpServlet {
private static final long serialVersionUID = 1L;

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

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    HttpSession session = request.getSession();
    ResultSet res = (ResultSet)session.getAttribute("rs");
    if(res != null){
        String id = request.getParameter("id");
        String cur = request.getParameter("cur");
        id = java.net.URLDecoder.decode(id,"utf-8");
        //删除用户信息
        UserDAO userDAO=new UserDAO(); 
        userDAO.delUser(id);
        session.setAttribute("rs", res);
        request.setAttribute("cur", cur);
        request.getRequestDispatcher("adminServlet").forward(request, response);
    }else{
        response.sendRedirect("./fail.jsp");
    }
}
}

十二、各个页面展示

1.用户注册

2.用户登录

3.用户登录成功界面

4.用户查看自我介绍界面

5.管理员登陆界面

6.管理员登陆成功界面

7.管理员查看用户介绍界面

8.数据库截图

9.项目截图

书写不易,转载请留言!

猜你喜欢

转载自www.cnblogs.com/zqm-sau/p/9818849.html