用户信息添加查重系统

来源:互联网 发布:人工智能影响社会稳定 编辑:程序博客网 时间:2024/05/16 12:14

  • 项目描述
    • 项目流程
  • 主页面
  • AddUserServlet
  • RegisterService
  • 创建实体类User
  • RegisterServiceImpl
  • UserDao
  • AddUserDaoImpl
  • JNDIBaseDao


项目描述

实现一个添加角色信息查重系统,若数据库存在该角色相关信息,则提示添加失败,否则添加成功。

实现工具:Myeclipse , Oracle .

项目流程:

首先进入添加信息首页,然后将数据传至AddUserServlet,然后定义接口RegisterService,

然后实现接口RegisterServiceImpl,定义UserDao接口,AddUserDaoImpl实现UserDao接

口中的查询方法;AddUserDaoImpl继承连接池,实现数据库的增删改查等方法。

主页面

这里写图片描述

部门代码实现:

<form action="user.action" method="post">//学工号 <input  name="id"  /> //角色名 <input  name="unmae"  /> //权限 <input  name="qx"  />  //提交按钮 <input type="button" value="提交"> </form>

AddUserServlet

通过注解的方式关联添加信息页面。

@WebServlet(value="/System/user.action")

在该类中,实现查重方法。

private RegisterService service=new RegisterServiceImpl();

该类继承HttpServlet方法,重写其中的doPost方法。

@Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {        // TODO Auto-generated method stub        Connection con=null;        Statement st=null;        try {            //1.加载驱动            Class.forName("oracle.jdbc.driver.OracleDriver");            //2.建立数据库连接            con= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:jredu","OnlineTest","Jredu12345");            //3.获取执行sql语句的平台            st= con.createStatement();            String id = req.getParameter("id");            String uname = req.getParameter("uname");            String qx = req.getParameter("qx");            String type=req.getParameter("type");            if(service.valid(id)){                resp.sendRedirect("false.html");            }else{                resp.sendRedirect("success.html");            String sql = "INSERT INTO users(id,uname, pwd, qx) "                      + " VALUES(?,?, ?, ?)";               PreparedStatement pstmt = con.prepareStatement(sql);               pstmt.setString(1, req.getParameter("id"));               pstmt.setString(2, req.getParameter("uname"));               pstmt.setString(3, "123456");               pstmt.setString(4, req.getParameter("qx"));               pstmt.execute();              }            //4.执行sql语句插入数据        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{                         //关闭st              if(st != null){                  try {                      st.close();                  } catch (SQLException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }              }              //关闭con              if(con != null){                  try {                      con.close();                  } catch (SQLException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }              }          } 

RegisterService

在该接口之中,定义一个boolean方法,接收一个id值。

public interface RegisterService {    boolean valid(String id);}

创建实体类User

该实体类是的相关属性及方法:

public class User  {    public User(String id) {        // TODO Auto-generated constructor stub    }    private String id;    public Object getId() {        // TODO Auto-generated method stub        return null;    }    public void setId(String string) {        // TODO Auto-generated method stub    }

RegisterServiceImpl

该类实现接口RegisterService,实现其中的boolean valid(String id);方法。

public class RegisterServiceImpl implements RegisterService{    //数据库对象,查找数据库是否存在相关信息    private UserDao dao=new AddUserDaoImpl();    @Override    public boolean valid(String id) {        // TODO Auto-generated method stub        User user=new User();        user.setId(id);        if(dao.findUser(user)!=null) {            return true;        }        return false;    }}

通过 UserDao 关联数据库,实现数据库中查询相关信息。

private UserDao dao=new AddUserDaoImpl();

UserDao

该接口中定义查询方法。

public interface UserDao {    //查询    User findUser(User user);   }

AddUserDaoImpl

AddUserDaoImpl继承JNDIBaseDao,关联相关数据库。

AddUserDaoImpl类实现接口UserDao中的查询方法。

public class AddUserDaoImpl extends JNDIBaseDao implements UserDao{    @Override    public User findUser(User user) {        // TODO Auto-generated method stub        //3.执行sql语句        //4.获取结果集        String sql="select * from users where 1=1 ";        List list = new ArrayList();        if(user.getId()!=null&&!user.getId().equals("")) {            sql+=" and id=?";            list.add(user.getId());        }        ResultSet rs=executeQuery(sql, list.toArray());        //访问数据库查询是否存在该用户        try {            //登录成功            if(rs.next()) {                //把结果集转换成实体类                user.setId(rs.getString("id"));                return user;            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            closeAll();        }        //不存在该用户        return null;    }}

JNDIBaseDao

连接池方式与数据库交互,进行增、删、改、查等方法。

public class JNDIBaseDao extends HttpServlet{    private DataSource source;    private Connection connection;    private PreparedStatement ps;    private ResultSet rs;    {        try {            Context ic = new InitialContext();            source = (DataSource)ic.lookup("java:comp/env/jdbc/OnlineTest");        } catch (NamingException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public void getConnection() {        try {            connection=source.getConnection();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    /**     * 增删改操作     * @param sql     * @param objs     * @return 影响行数     */    public int executeUpdate(String sql,Object... objs) {        if(connection==null) {            getConnection();        }        int res=-1;        try {            //设置手动提交事务            connection.setAutoCommit(false);            connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);            ps=connection.prepareStatement(sql);            if(objs!=null) {                for(int i=0;i<objs.length;i++) {                    ps.setObject(i+1, objs[i]);                }            }            res=ps.executeUpdate();            //手动提交事务            connection.commit();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();            try {                connection.rollback();            } catch (SQLException e1) {                // TODO Auto-generated catch block                e1.printStackTrace();            }        } finally {            if(ps!=null) {                try {                    ps.close();                } catch (SQLException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }        return res;    }    /**     * 查询操作     * @param sql     * @param objs     * @return     */    public ResultSet executeQuery(String sql,Object... objs) {        if(connection==null) {            getConnection();        }        try {            ps=connection.prepareStatement(sql);            if(objs!=null) {                for(int i=0;i<objs.length;i++) {                    ps.setObject(i+1, objs[i]);                }            }            rs=ps.executeQuery();            return rs;        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return null;    }    public void closeAll() {        try {            if(rs!=null) {                rs.close();            }            if(ps!=null) {                ps.close();            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
原创粉丝点击