專案總結整理

貓寧一發表於2017-04-23

專案總結整理

專案描述:

寫一個登入介面,輸入賬號密碼,對比資料庫裡面的資料,如果匹配成功的話,跳轉到顯示“Welcome +使用者名稱”的頁面,如果與資料庫裡面的資料匹配不成功,則留在原頁面

專案思路:

建一個使用者類,用來傳參;建一個dao層,專門連線資料庫裡面的資料;在WRB-INF檔案下建一個html登入介面;建立一個Servlet檔案,用於獲取登入介面裡輸入的值,判斷User是否為空

專案程式碼及註釋解釋:

第一步:因為要和資料庫連線,所以先導進Oracle的jdbc的jar包

找到Oracle安裝路徑,在jdbc檔案中找到ojdbc.jar複製到WebContent--WEB-INF-lib資料夾下,這個資料夾統一放第三方jar包,當然想要使用資料庫得先開啟電腦的監聽啥的,這些細節就不講了,擴充套件起來主題就沒啦

第二步:建一個使用者類

publicclass User {

    private String name;

    private String pass;

    public User() {

       super();

    }

    public User(String name, String pass) {

       super();

       this.name = name;

       this.pass = pass;

    }

    //實現get set方法用來後面使用者名稱密碼的賦值,傳參

    public String getName() {

       returnname;

    }

    publicvoid setName(String name) {

       this.name = name;

    }

    public String getPass() {

       returnpass;

    }

    publicvoid setPass(String pass) {

       this.pass = pass;

}

    }

    第三步:建立一個db.properties配置檔案,用來存放呼叫資料庫的資料

Java Resources—src資料夾下建此檔案,第一行資料是資料庫介面,其中YLMF123-3131857是計算機名、1521為資料庫軟體介面

    url=jdbc:oracle:thin:@YLMF123-3131857:1521:orcl

name=scott

pass=tiger

driver=oracle.jdbc.driver.OracleDriver

   

第四步:建一個dao層介面Interface

publicinterface UserDao {

    User LoginUser(String name,String pass);

}

第五步:建一個類實現dao層介面

publicclass UserDaoImpl implements UserDao {

    @Override

    public User LoginUser(String name, String pass) {

       //建立配置檔案例項,用來呼叫

Properties p = new Properties();

       Connection conn = null;

       PreparedStatement pstmt = null;

       ResultSet rs = null;

       try {

       //載入db.properties配置檔案

       p.load(this.getClass().getClassLoader().getResourceAsStream("db.properties"));

       //建立反射機制

       Class.forName(p.getProperty("driver"));

        //連線資料庫

conn=DriverManager.getConnection(p.getProperty("url"),p.getProperty("name"),p.getProperty("pass"));

       String sql = "select *from userinfo where name = ? and pass = ?";

       //運算元據庫,將sql語句傳送到資料庫

       pstmt = conn.prepareStatement(sql);

       //給第一個佔位符賦值,將方法中的引數賦值進去,此引數被ServletDemo中獲取到的表單域中的name賦值,

如果資料庫中存在此name和密碼則能查到資訊,否則查不到資訊,返回值為空

       pstmt.setString(1, name);

       pstmt.setString(2, pass);

        //將查詢到的結果返回到結果集

       rs = pstmt.executeQuery();

       while(rs.next()){

           //將從資料庫中得到的使用者名稱和密碼返回到User類中,如果沒有此使用者名稱則返回為空

           User u = new User(rs.getString("name"),rs.getString("pass"));

       }

       } catch (IOException e) {

           e.printStackTrace();

       } catch (ClassNotFoundException e) {

           e.printStackTrace();

       } catch (SQLException e) {

           e.printStackTrace();

       }finally{

           try {

              if(rs!=null){//一定要判斷不為空,預防空指標

              rs.close();//關閉結果集,按照宣告的順序反向關閉

              }

           } catch (SQLException e) {

              e.printStackTrace();

           }

           try {

              if(pstmt!=null){

              pstmt.close();

              }

           } catch (SQLException e) {

              e.printStackTrace();

           }

           try {

              if(conn!=null){

              conn.close();

              }

           } catch (SQLException e) {

              e.printStackTrace();

           }

       }

       returnu;//返回使用者類的值,用以ServletDemo()中判斷User是否為空,為空則轉發到zuoyelogin.jsp

頁面,不為空(說明資料庫中有此使用者名稱和密碼,說明登入成功)則跳轉到welcome頁面

    }

}

第六步:建立一個Servlet檔案,用於獲取登入介面裡輸入的值

@WebServlet("/ServletDemo")

publicclass ServletDemo extends HttpServlet{

    privatestaticfinallongserialVersionUID = 1L;

    public ServletDemo() {

        super();

    }

    protectedvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {

       //呼叫本類的doPost()方法

this.doPost(request, response);

    }

    protectedvoid doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {

       //獲取登入介面中表單域的輸入的值

String name = request.getParameter("name");

       String pass = request.getParameter("pass");

       //例項化UserDaoImpl物件,用來呼叫

       UserDao ud = new UserDaoImpl();

       //將獲取到的表單域中輸入的值傳參到UserDaoImplLoginUser()方法中,用來呼叫資料庫中的值,如果

與資料庫中的namepass沒有匹配的,則返回空

       User u = ud.LoginUser(name, pass);

       if(u==null){

            //判斷為空的話,轉發到zuoyelogin.jsp檔案,及本頁面檔案

           RequestDispatcher rd=request.getRequestDispatcher("zuoyelogin.jsp");

           rd.forward(request, response);

       }else{

           //判斷不為空時,則說明與資料庫中的值匹配,登入成功,跳轉到welcome介面

           PrintWriter out = response.getWriter();

           out.write("welcome"+u.getName());

       }  

    }

}

 

相關文章