#爲何要用 JavaBean? 經過上一節的知識咱們瞭解到 在 Jsp 頁面裏含有大量的 Java 代碼,以後項目更加複雜的話還會出現大量 的 Html 代碼,那麼當你將這麼一份源代碼呈現給他人觀看時,大大小小會存在代碼可讀性差的問題,那麼採 取什麼樣的方法使得咱們的代碼像音樂般美妙呢?html
JavaBean 閃亮登場!!!
#JavaBean 的做用? 具體做用是 實現代碼的封裝,使代碼更加具體化、模塊化。java
一、減輕 Jsp 代碼的複雜度,增長可讀性。 二、提升代碼複用,至關因而一個函數,咱們能夠在任何咱們須要調用的地方進行調用, 導入相應的包和類便可。
#JavaBean 的定義: 只要知足一下兩點,就能夠稱之爲 JavaBean.mysql
a、public 修飾的類,public 無參構造。 b、全部屬性(若是有)都是 private, 而且提供 set/get 方法, 若是是 Boolean, 則 get 能夠替換成 is(好比判斷某個用戶是不是會員) JavaBean 通常都寫在 項目的 src 目錄,通常都在 src 目錄建 Java 類。
#JavaBean 的使用層面: 兩大層面: 一、封裝業務邏輯的 JavaBean (封裝數據庫,查詢數據庫中是否有該用戶) 二、封裝數據的 JavaBean (實體類: Student.java、Person.java) (對應數據庫中的一張表,幾個字段對應幾個屬性,類名最好和 表名一致) #代碼分析: ##index.jsp:sql
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="check.jsp" method = "post"> 用戶名:<input type = "text" name = "uname"> <br> 密碼 : <input type = "password" name = "upwd"> <br> <input type = "submit" value = "登陸"> </form> </body> </html>
##check.jsp數據庫
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 導入的時候最好加上包名 --> <%@ page import="practice.LoginDao" import="org.entity.Login"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% // 實現 Java 代碼 和 Jsp 代碼的分離 String name = request.getParameter("uname"); String password = request.getParameter("upwd"); // 封裝業務邏輯的 JavaBeen,用於操做封裝數據的 JavaBeen LoginDao dao = new LoginDao(); // 封裝數據(實體類)的 JavaBeen,對應數據庫的一張表 Login login = new Login(name, password); /* 傳入參數(實現了JavaBean 對數據的封裝,因此由原來的兩個參數變爲傳一個參數,咱們將 全部須要傳的參數都組合到一塊兒,使其成爲一個對象,這樣用的時候直接調用便可) 傳入封裝數據的 JavaBean ,便於 業務邏輯的 JavaBean 進行操縱,因爲咱們傳入的是對象 全部直接對象.方法名便可調用(具體見 LoginDao.java) */ int cnt = dao.Login(login); if (cnt > 0) { out.print("登陸成功!"); } else { out.print("登陸失敗!"); } %> </body> </html>
##LoginDao.java(在src目錄下建類,最好加上包名)jsp
package practice; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.entity.Login; /* * Dao(Date Access Obiect) * : 專門負責對數據庫的訪問。 * */ public class LoginDao { public int Login(Login login) { String URL = "jdbc:mysql://localhost:3306/sqlTest"; String User = "root"; String Password = "root"; Connection connection = null; Statement stamt = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection(URL, User, Password); stamt = connection.createStatement(); String sql = "select count(*) from login where uname = '"+login.getName()+"' and upwd = '"+login.getPassword()+"'"; rs = stamt.executeQuery(sql); int cnt = -1; if(rs.next()) { cnt = rs.getInt(1); } return cnt; } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { rs.close(); stamt.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } } return 0; } }
##Login.java(對應數據庫中的一張表):模塊化
package org.entity; public class Login { private String name; private String password; public Login() { } public Login(String name, String password) { this.name = name; this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
#後記: JavaBean 總的來講就是使得咱們的項目的源代碼各司其職,分工明確,這樣不只看的舒服,用起來也方便。 有的地方可能比較繞,繞的地方多看幾遍,仍是比較容易理解的。函數