#为何要用 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 总的来讲就是使得咱们的项目的源代码各司其职,分工明确,这样不只看的舒服,用起来也方便。 有的地方可能比较绕,绕的地方多看几遍,仍是比较容易理解的。函数