日期:2014-05-17  浏览次数:20866 次

简单账号管理系统的实现(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 extend