JavaWeb學習(九): JavaBean 的知識及實例

#爲何要用 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 總的來講就是使得咱們的項目的源代碼各司其職,分工明確,這樣不只看的舒服,用起來也方便。 有的地方可能比較繞,繞的地方多看幾遍,仍是比較容易理解的。函數

相關文章
相關標籤/搜索