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 总的来说就是使得我们的项目的源代码各司其职,分工明确,这样不仅看的舒服,用起来也方便。
有的地方可能比较绕,绕的地方多看几遍,还是比较容易理解的。
如果说年轻人未来是一场盛宴的话,那么我首先要有赴宴的资格。