`

简单账号管理系统的实现(b/s、servlet、html、mysql)

阅读更多

      漫漫学习路,无处是尽头。“技术是学不完的,只能学会学习能力,并不断学习才是真”这句绝对的真理。总结的虽是,斌哥布置的练习,但完成这个练习的过程中,却真心是温习了很多,学习了很多。

      进入正题,下面总结下简单账号管理系统的实现过程。

      设计如下:

一、表结构

表名:userinfo

字段信息:id-int

               name-varchar

               password-varchar

二、模块结构

   1、数据操作模块

       将数据库操作写在一个包下。

public class DAO {
	//创建arrylist用以存放查询结果
 	 private  ArrayList<Userinfo> al;
/**
 * 插入数据到数据库中的方法
 */
 	public  ArrayList<Userinfo> add(Userinfo user){
		//获取数据库连接对象
		Connection conn=Until.getDBConnect();
		//sql操作数据
		String sql="insert into userinfo(name,pwd) values('"+user.name+"','"+user.password+"')";
		try {
			Statement stmt=conn.createStatement();
			int i=stmt.executeUpdate(sql);
			if(i>0){
				System.out.println("插入数据成功!");
			}
			//关闭数据库连接
			conn.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return searchAll();
	}
	/**
	 * 查询数据库所有数据
	 */
 	public  ArrayList<Userinfo>   searchAll(){
 		al=new ArrayList<Userinfo>();
		//获取数据库连接对象
		Connection conn=Until.getDBConnect();
		//sql操作数据
		String sql="select * from userinfo";
		try {
			Statement stmt=conn.createStatement();
			ResultSet rs=stmt.executeQuery(sql);
			while(rs.next()){
				Userinfo user=new Userinfo(rs.getInt("id"), rs.getString("name"),rs.getString("pwd"));
				this.al.add(user);
			}
			//清空结果集
			rs.close();
			//关闭数据库
			conn.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return al;
		
	}
	/**
	 * 按给定的id查询数据的方法
	 */
 	public  ArrayList<Userinfo> searchById(int id){
		//获得数据库连接对象
		Connection conn=Until.getDBConnect();
		//操作数据
		String sql="select * from userinfo where id="+id;
		try {
			Statement stmt=conn.createStatement();
			ResultSet rs=stmt.executeQuery(sql);
			while(rs.next()){
				System.out.println("id="+rs.getInt("id")+",name="+rs.getString("name")+",password="+rs.getString(3));
			}
			conn.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return searchAll();
	}
	/**
	 * 删除指定id的数据的方法
	 */
 	public  ArrayList<Userinfo> deleteById(int id){
		//获取数据库连接对象
		Connection conn=Until.getDBConnect();
		//操作数据
		String sql="delete from userinfo where id="+id;
		try {
			Statement stmt=conn.createStatement();
			int i=stmt.executeUpdate(sql);
			if(i>0){
				System.out.println("删除成功!!");
			}
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return searchAll();
	}
	/**
	 * 根据指定id修改数据的方法
	 */
 	public  ArrayList<Userinfo> updateById(int id,Userinfo user){
		//获取数据库连接对象
		Connection conn=Until.getDBConnect();
		//数据操作
		String sql="update userinfo set name=?,pwd=? where id=?";	
		
		try {
			//预编译
			PreparedStatement ps=conn.prepareStatement(sql);
		//设置对象参数
			ps.setString(1, user.name);
			ps.setString(2, user.password);
			ps.setInt(3, id);
			int i=ps.executeUpdate();
			if(i>0){
				System.out.println("数据修改成功!");
			}
			conn.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return searchAll();
	}
}

 

 2、用5个servlet、2个html页面进行页面

5个servlet:Userinfo-用户列表servlet-用于查找并显示所有用户

                   Deleteservlet-删除操作servlet-用于删除指定用户

                   Updateservlet-更新操作servlet-用于更新指定用户信息

                   Regesiterservlet-添加操作(注册)servlet-用于注册新用户

                   Logincheck-用户身份验证servlet-用于验证登陆用户是否为注册用户

2个html:page.html-登陆页面

               register.html-注册页面

3、系统各页面交互流程



 4、代码示例

userinfo:

/**显示用户servlet:用于显示当前全部用户信息
 * Servlet implementation class Userinfo
 */
public class Userinfo extends HttpServlet {
       DAO dao=new DAO();
  

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置响应文本字符集
		response.setContentType("text/html;charset=gbk");
		PrintWriter out=response.getWriter();
		//创建arraylist来接收查询结果
		ArrayList<test1_db.Userinfo> al_temp=dao.searchAll();
		//拼出显示页面
		out.println("<!DOCTYPE HTML PUBLIC\"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<html>");
		out.println("<head><title>Userinfo</title></head>");
		out.println("<body>");
		out.println("userinfo show as follows:");
		out.println("<table border=\"5\"width=\"250px\"bgcolor=\"green\"bordercolor=\"gray\">");
		out.println("<tr><td>ID</td><td>姓名</td><td>密码</td><td>操作</td><td>操作</td></tr>");
		//循环查询用户信息以显示
		for(int i=0;i<al_temp.size();i++){
		test1_db.Userinfo user_temp=al_temp.get(i);
		int id=user_temp.id;
		String name=user_temp.name;
		String password=user_temp.password;
		out.println("<tr><td>"+id+"</td><td>"+name+"</td><td>"+password+"</td><td><a href='Deleteservlet?id="+id+" '>删除用户</a></td><td><a href='Updateservlet?id="+id+"'>修改信息</a></td></tr>");
		}
		out.println("</border>");
		out.println("</table>");
		out.println("</body>");
		out.println("</html>");
	}

 logincheck:

/**
 * Servlet implementation class Logincheck
 */
public class Logincheck extends HttpServlet {
	private static final long serialVersionUID = 1L;
       DAO dao=new DAO();
  
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=gbk");
		PrintWriter out=response.getWriter();
		//获得参数
		String name=request.getParameter("username");
		String password=request.getParameter("password");
		//创建用户列表以存放查询结果
		ArrayList<test1_db.Userinfo> al_temp=dao.searchAll();
		//循环得到每条记录以验证身份
		for(int i=0;i<al_temp.size();i++){
		test1_db.Userinfo user_temp=al_temp.get(i);
		//判断用户名和密码是否存在
		if(user_temp.name.equals(name)&&user_temp.password.equals(password)){
			//是,则跳转到用户列表servlet并跳出循环
			response.sendRedirect("Userinfo");
			break;
		}
		}
		//否,则拼出提示页面
		out.println("<!DOCTYPE HTML PUBLIC\"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<html>");
		out.println("<body>");
		out.println("用户不存在,请注册……");
		out.println("<p><a href='register.html'>注册</a></p>");
		out.println("</body>");
		out.println("</html>");
	}

 updateservlet:

/**
 * Servlet implementation class Updateservlet
 */
public class Updateservlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	DAO dao = new DAO();

	
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=gbk");
		PrintWriter out = response.getWriter();
		//获得来自于用户列表servlet的参数id
		String id_temp = request.getParameter("id");
		int id = Integer.parseInt(id_temp);
		//创建arraylist以存放查找的对应id的记录
		ArrayList<test1_db.Userinfo> al_temp = dao.searchById(id);
		//拼出查找结果显示页面
		out.println("<!DOCTYPE HTML PUBLIC\"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<html>");
		out.println("<head><title>Update</title></head>");
		out.println("<body>");
		out.println("please recorrect the information as follows:");
		out.println("<table border=\"5\"width=\"250px\"bgcolor=\"green\"bordercolor=\"gray\">");
		out.println("<tr><td>ID</td><td>姓名</td><td>密码</td></tr>");
		//获得查找结果集中的参数以用于传入“修改”响应
		test1_db.Userinfo user = al_temp.get(0);
		String name = user.name;
		String password = user.password;
		String username = "username";
		String userpassword = "userpassword";
		// 1、重写url传值
//		out.println("<form action='Updateservlet?id=" + user.id
//				+ "'  method='post'>");
//		out.println("<tr><td >" + id + "</td><td><input type='text' name='"
//				+ username + "' value='" + name
//				+ "'><br></td><td><input type='text' name='" + userpassword
//				+ "' value='" + password + "'><br></td></tr>");
		// 2、表单传值
		out.println("<form action='Updateservlet'  method='post'>");
		out.println("<tr><td >" + id + "</td><td><input type='text' name='"
				+ username + "' value='" + name
				+ "'><br></td><td><input type='text' name='" + userpassword
				+ "' value='" + password + "'><br></td></tr>");
		out.println("<input type='hidden' name='id' value='" + id + "'>");
		out.println("<input type='submit' value='提交'><input type='reset' name='reset'>");
		out.println("</form>");
		out.println("</border>");
		out.println("</table>");
		out.println("</body>");

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		//获得updateservlet中传入的更新数据所需的参数
		String name_update = request.getParameter("username");
		String password_update = request.getParameter("userpassword");
		String id_update = request.getParameter("id");
		int id = Integer.parseInt(id_update);
		//创建更新后的用户对象、执行更新操作并跳转页面到用户列表servlet
		test1_db.Userinfo user_update = new test1_db.Userinfo(id, name_update,
				password_update);
		dao.updateById(id, user_update);
		response.sendRedirect("Userinfo");
	}

}

 registerservlet:

/**
 * Servlet implementation class Register
 */
public class Register extends HttpServlet {
	private static final long serialVersionUID = 1L;
       DAO dao=new DAO();
   

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获得参数
		String username=request.getParameter("username");
		String password=request.getParameter("password");
		//创建要添加的用户对象
		test1_db.Userinfo user_temp=new test1_db.Userinfo(username, password);
		dao.add(user_temp);
		//跳转回登陆界面
		response.sendRedirect("page.html");
	}

 deleteservlet:

/**
 * Servlet implementation class Deleteservlet
 */
public class Deleteservlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setCharacterEncoding("gbk");
		PrintWriter out=response.getWriter();
		out.println("进入删除servlet!");
		//获得需删除的用户信息的id
		String id_temp=request.getParameter("id");
		int id=Integer.parseInt(id_temp);
		DAO dao=new DAO();
		dao.deleteById(id);
		//跳转回用户显示servlet
		response.sendRedirect("Userinfo");
		
	}
 
  • 大小: 6.8 KB
  • 大小: 40.3 KB
2
0
分享到:
评论
2 楼 JuliaAilse 2012-05-21  
lovebegar 写道
这些简单的东西也要学习下~

恩恩。简单的东西更容易理清思路。哈哈,谢谢光临哈!
1 楼 lovebegar 2012-05-21  
这些简单的东西也要学习下~

相关推荐

Global site tag (gtag.js) - Google Analytics