zoukankan      html  css  js  c++  java
  • 用户信息添加查重系统


    项目描述

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

    实现工具: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();
            }
        }
    
    }
  • 相关阅读:
    合并两个排序的链表
    反转链表
    java网络编程之TCP通讯
    java网络编程之UDP通讯
    Java中的线程同步机制
    阿里研发工程师面试题三个小结
    Android开发的进阶之路
    获取一个字符串中每一个字母出现的次数使用map集合
    Android常见面试题目
    Java垃圾回收
  • 原文地址:https://www.cnblogs.com/aixing/p/13327690.html
Copyright © 2011-2022 走看看