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
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:
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:
(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)