[JavaWeb] JavaBean encapsula datos y encapsula la lógica empresarial

Uno: Definición de JavaBean (es decir, una clase):

1: Clase pública modificada , construcción pública sin parámetros
2: Todos los atributos son privados y se proporcionan métodos get / set

(Los usuarios pueden pensar que JavaBean proporciona una función de copiar y pegar en cualquier momento y en cualquier lugar, sin preocuparse por los cambios).

Dos: el nivel de uso de JavaBean:

(1): JavaBean que encapsula la lógica empresarial : el código JDBC en jsp se puede encapsular en la clase Login.java .

Datos de la base de datos:

Inserte la descripción de la imagen aquí

proyecto web:

Código:

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 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="登录" /> <br/>
	</form>
</body>
</html>

check.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="org.lanqiao.dao.LoginDao" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
		<%
			String name = request.getParameter("uname");
			String pwd = request.getParameter("upwd");
			LoginDao dao = new LoginDao();
			int count = dao.login(name, pwd);
			
			if(count==1) out.print("登录成功!");
			else if(count==0) out.print("用户名或密码错误!");
			else out.print("出现异常!");
		%>
</body>
</html>

LoginDao.java:

package org.lanqiao.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class LoginDao {
    
    
	public int login(String name , String pwd)
	{
    
    
		String URL="jdbc:mysql://127.0.0.1:3306/jdbc?serverTimezone=UTC&characterEncoding=UTF-8";
	    String USERNAME = "root"; //账号
	    String PWD = "123456"; //密码
	    Connection conn = null;
	    PreparedStatement pstmt = null;
	    ResultSet rs = null;
	    
		try{
    
    
			//导入驱动,加载具体的驱动类
			Class.forName("com.mysql.cj.jdbc.Driver");
			
			//连接数据库
			conn = DriverManager.getConnection(URL,USERNAME,PWD);
			
			//发送sql语句
			// String sql = "select count(*) from login where name = ? and pwd = ?"; //报错,找不到原因
			
			String sql = "select * from login";
			pstmt = conn.prepareStatement(sql);
//			pstmt.setString(1, name);
//			pstmt.setString(2, pwd);
			
			//执行查询,获取结果集
			rs = pstmt.executeQuery(sql);
			
			//处理结果集
			int count=0;
			while(rs.next()){
    
    
				String daoName = rs.getString("name");
				String daoPwd = rs.getString("pwd");
				if(name.equals(daoName) && pwd.equals(daoPwd)){
    
    
					count = 1;
					break;
				}
			}
				
			return count;
			
			}catch(Exception e){
    
    
				e.printStackTrace();
				return -1;
			}finally{
    
    
					try {
    
    
						//关闭连接
						if(rs!=null) rs.close();
						if(pstmt!=null) pstmt.close();
						if(conn!=null) conn.close();
					} catch (SQLException e) {
    
    
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
			}
	}
		
}

resultado de la operación:

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí


Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí


(2): JavaBean que encapsula datos (clase de entidad student.java):
Login login = nuevo Login (nombre, pwd) Use el objeto Login para encapsular dos datos

Sobre la base del código anterior:

(1) Recuerde guiar el paquete en check.jsp:

<%@ page import="userLogin.Login" %>

(2) Modificación de código bajo control:

int count = dao.login(new Login(name,pwd));

Encapsular un javabean: Login.java (nombre del paquete, pwd)

package userLogin;

public class Login {
    
    
	
	private String name;
	private String pwd;
	
	public Login() {
    
     //无参构造
		super();
		// TODO Auto-generated constructor stub
	}
	
	public Login(String name, String pwd) {
    
     //有参构造
		super();
		this.name = name;
		this.pwd = pwd;
	}
	
	public String getName() {
    
    
		return name;
	}
	
	public void setName(String name) {
    
    
		this.name = name;
	}
	
	public String getPwd() {
    
    
		return pwd;
	}
	
	public void setPwd(String pwd) {
    
    
		this.pwd = pwd;
	}
	
}

Modifique ligeramente LoginDao.java (reemplace los parámetros con javabean)

package org.lanqiao.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import userLogin.Login;

public class LoginDao {
    
    
	public int login(Login login) //使用bean代替数据
	{
    
    
		String URL="jdbc:mysql://127.0.0.1:3306/jdbc?serverTimezone=UTC&characterEncoding=UTF-8";
	    String USERNAME = "root"; //账号
	    String PWD = "123456"; //密码
	    Connection conn = null;
	    PreparedStatement pstmt = null;
	    ResultSet rs = null;
	    
		try{
    
    
			//导入驱动,加载具体的驱动类
			Class.forName("com.mysql.cj.jdbc.Driver");
			
			//连接数据库
			conn = DriverManager.getConnection(URL,USERNAME,PWD);
			
			//发送sql语句
			// String sql = "select count(*) from login where name = ? and pwd = ?"; //报错,找不到原因
			
			String sql = "select * from login";
			pstmt = conn.prepareStatement(sql);
//			pstmt.setString(1, name);
//			pstmt.setString(2, pwd);
			
			//执行查询,获取结果集
			rs = pstmt.executeQuery(sql);
			
			//处理结果集
			int count=0;
			while(rs.next()){
    
    
				String daoName = rs.getString("name");
				String daoPwd = rs.getString("pwd");
				if(login.getName().equals(daoName) && login.getPwd().equals(daoPwd)){
    
    
					count = 1;
					break;
				}
			}
				
			return count;
			
			}catch(Exception e){
    
    
				e.printStackTrace();
				return -1;
			}finally{
    
    
					try {
    
    
						//关闭连接
						if(rs!=null) rs.close();
						if(pstmt!=null) pstmt.close();
						if(conn!=null) conn.close();
					} catch (SQLException e) {
    
    
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
			}
	}
		
}


El JavaBean que encapsula los datos corresponde a una tabla en la base de datos (Login (name, pwd))

La lógica empresarial de encapsulación de JavaBean se utiliza para manipular datos de encapsulación de JavaBean


Tres: el papel de JavaBean:

1: Reducir la complejidad de JSP (jsp solo contiene algunos códigos relacionados con objetos integrados, etc.)

2: Mejorar la reutilización del código (JavaBean es un componente Java reutilizable que puede ser utilizado por aplicaciones Java como Applet, Servlet, JSP, etc.) transferencia)

Supongo que te gusta

Origin blog.csdn.net/weixin_45260385/article/details/109430488
Recomendado
Clasificación