zoukankan      html  css  js  c++  java
  • 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 总的来说就是使得我们的项目的源代码各司其职,分工明确,这样不仅看的舒服,用起来也方便。
    有的地方可能比较绕,绕的地方多看几遍,还是比较容易理解的。
  • 相关阅读:
    maven 配置国内镜像仓库加速获取jar包的配置方法
    java 开发工具包 jdk 64位 jdk-8u221-windows-x64.exe 迅雷下载
    idea 更新后和新的直接安装前,都需要配置 idea64.exe.vmoptions 后再使用
    OpenCV编程入门目录
    类 — 成员函数的重载、覆盖与隐藏
    STL不同容器的使用方法
    STL容器之间的差异和联系
    STL之顺序容器 deque 动态数组
    Win10下Anaconda3安装CPU版本TensorFlow并使用Pycharm开发
    CNN中已知input_size、kernel_size、padding、stide计算output公式的理解
  • 原文地址:https://www.cnblogs.com/prjruckyone/p/12545300.html
Copyright © 2011-2022 走看看