具有注册、登陆以及后台管理功能的web开发 设计一个带有注册、登陆、后台用户管理的网站


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


工具:Eclipse(NetBeans)、Mysql8.0.12、Tomcat9.0、Navicat


设计思路如下:

用户方面:

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站


管理员方面:

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

一、设计数据库

在名为joker的数据库中创建一个user1表,内容如下:
具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

二、编写User类

User类用于封装用户信息

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

三、编写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");
	}
}
}

八、adminServlet类

当管理员登陆成功,会从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类

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

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

十、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);	
		}
	}
}

十一、Delservlet类

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

@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.用户注册

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

2.用户登录

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

3.用户登录成功界面

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

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

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

5.管理员登陆界面

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

6.管理员登陆成功界面

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

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

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

8.数据库截图

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

9.项目截图

具有注册、登陆以及后台管理功能的web开发
设计一个带有注册、登陆、后台用户管理的网站

项目地址:

点此下载

书写不易,转载请留言!