JavaWeb学习(九): JavaBean 的知识及实例

为什么要用 JavaBean?

通过上一节的知识我们了解到 在 Jsp 页面里含有大量的 Java 代码,之后项目更加复杂的话还会出现大量
的 Html 代码,那么当你将这么一份源代码呈现给他人观看时,大大小小会存在代码可读性差的问题,那么采
取什么样的方法使得我们的代码像音乐般美妙呢?

JavaBean 闪亮登场!!!

JavaBean 的作用?

具体作用是 实现代码的封装,使代码更加具体化、模块化。

1、减轻 Jsp 代码的复杂度,增加可读性。
2、提高代码复用,相当于是一个函数,我们可以在任何我们需要调用的地方进行调用,
   导入相应的包和类即可。

JavaBean 的定义:

只要满足一下两点,就可以称之为 JavaBean.

a、public 修饰的类,public 无参构造。
b、所有属性(如果有)都是 private, 并且提供 set/get 方法, 
   如果是 Boolean, 则 get 可以替换成 is(比如判断某个用户是否是会员)

JavaBean 一般都写在 项目的  src 目录,一般都在 src 目录建 Java 类。

JavaBean 的使用层面:

两大层面:
1、封装业务逻辑的 JavaBean (封装数据库,查询数据库中是否有该用户)
2、封装数据的 JavaBean (实体类: Student.java、Person.java)
  (对应数据库中的一张表,几个字段对应几个属性,类名最好和 表名一致)

代码分析:

index.jsp:

<%@ 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目录下建类,最好加上包名)

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 总的来说就是使得我们的项目的源代码各司其职,分工明确,这样不仅看的舒服,用起来也方便。
有的地方可能比较绕,绕的地方多看几遍,还是比较容易理解的。
原文地址:https://www.cnblogs.com/prjruckyone/p/12545300.html