Um: definição JavaBean (ou seja, uma classe):
1: Classe pública modificada , construção pública sem parâmetro
2: Todos os atributos são privados e os métodos get / set são fornecidos
Dois: o nível de uso do JavaBean:
(1): JavaBean que encapsula a lógica de negócios : o código JDBC em jsp pode ser encapsulado na classe Login.java .
Dados do banco de dados:
projeto 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 da operação:
(2): JavaBean que encapsula dados (classe de entidade student.java):
Login login = novo Login (nome, pwd) Use o objeto Login para encapsular dois dados
Com base no código acima:
(1) Lembre-se de orientar o pacote em check.jsp:
<%@ page import="userLogin.Login" %>
(2) Modificação do código em cheque:
int count = dao.login(new Login(name,pwd));
Encapsule um javabean: Login.java (nome do pacote, 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 ligeiramente LoginDao.java (substitua os parâmetros por 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();
}
}
}
}
O JavaBean que encapsula os dados corresponde a uma tabela no banco de dados (Login (nome, pwd))
JavaBean encapsulando a lógica de negócios é usado para manipular um JavaBean encapsulando dados
Três: O papel do JavaBean:
1: Reduza a complexidade de JSP (jsp contém apenas alguns códigos relacionados a objetos integrados, etc.)2: Melhore a reutilização de código (JavaBean é um componente Java reutilizável que pode ser usado por aplicativos Java, como Applet, Servlet, JSP, etc.) transferência)