为什么要用 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"%>

Insert title here

用户名:

密码 :

check.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ page import="practice.LoginDao" import="org.entity.Login"%>

Insert title here

<%

// 实现 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("登录失败!");

}

%>

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 总的来说就是使得我们的项目的源代码各司其职,分工明确,这样不仅看的舒服,用起来也方便。

有的地方可能比较绕,绕的地方多看几遍,还是比较容易理解的。