使用JavaBean连接数据库

本文详细介绍了如何通过Java和数据库进行身份验证,并在验证成功后跳转到登录成功页面,包括请求处理流程、数据库连接、SQL查询及响应设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.proc-login.jsp

<%@ page language="java" contentType="text/html;charset=gb2312" pageEncoding="GB18030" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="Ds" scope="page" class="DataBase.DataSource" />

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>身份验证</title>
</head>
<body  style = "background:#ddd;">
  <%
	request.setCharacterEncoding("GB18030");
	
	/* 从数据库中核实登录用户 */
	Ds.ConnMysql("users");
 
	String sqlLookup = "select * from userinfo";
	ResultSet rs = Ds.execSql(sqlLookup);
	String queryName = null;
	String queryPwd = null;
	   
    boolean isInDb = false;
    
	while(rs.next()) 
    {
       String dbName    = rs.getString("name");
          String dbPwd     = rs.getString("password");
          
       
             queryName= request.getParameter("userName");
             queryPwd = request.getParameter("userPwd");
             
             if(queryName.equals(dbName) && queryPwd.equals(dbPwd))
             {
               isInDb = true;
               break;
             }
        }

     rs.close();   
     Ds.closeState();
     Ds.closeConn(); 
	
	if(isInDb) 
	{
		response.setHeader("Refresh", "3; url=../../index.jsp");
	}
	else
	{
		RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
		rd.forward(request, response);
	}
%>
</body>
</html> 

2.DataSource.java

package DataBase;

import java.sql.*;

public class DataSource {
	private Statement state = null;
	private Connection dbConn = null;
	ResultSet results = null;

	public DataSource() {
	}

	public void ConnObdc(String name) throws Exception // 连接数据库
	{
		try {
			String dbDrv = "sun.jdbc.odbc.JdbcOdbcDriver";
			Class.forName(dbDrv);

			String dbUrl = "jdbc:odbc:" + name;
			dbConn = DriverManager.getConnection(dbUrl, "", ""); // 数据库、用户名、密码
																	// ,创建连接对象
		} catch (SQLException e) // 异常处理
		{
			System.err.println("Data.executeQuery: " + e.getMessage());
		}
	}

	public void ConnMysql(String dbName) throws Exception // 连接数据库
	{
		try {
			String mysqlUser = "root";
			String mysqlPwd = "123456";

			String dbDrv = "com.mysql.jdbc.Driver";
			Class.forName(dbDrv);

			String url = "jdbc:mysql://localhost/" + dbName + "?user="
					+ mysqlUser + "&password=" + mysqlPwd;
			dbConn = DriverManager.getConnection(url); // 创建连接对象
		} catch (SQLException e) // 异常处理
		{
			System.err.println("Conn err");
			System.err.println("Data.executeQuery: " + e.getMessage());
		}
	}

	public ResultSet execSql(String sql) {
		results = null;
		try {
			state = dbConn.createStatement(); // 创建访问数据库的对象
			results = state.executeQuery(sql); // 查询并返回结果

		} catch (SQLException e) {
			System.err.println("execSql err");
			System.err.println("state.executeQuery: " + e.getMessage());
		}

		return results;
	}

	public void closeState() {
		try {
			state.close(); // 关闭访问数据库的对象
		} catch (SQLException e) {
			System.err.println("state.close: " + e.getMessage());
		}
	}

	public void closeConn() {
		try {
			dbConn.close(); // 断开连接
		} catch (SQLException e) {
			System.err.println("dbConn.close: " + e.getMessage());
		}
	}
}

3.proc-login.jsp

<%@ page language="java" contentType="text/html;charset=gb2312" pageEncoding="GB18030" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="Ds" scope="page" class="DataBase.DataSource" />

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>身份验证</title>
</head>
<body  style = "background:#ddd;">
  <%
	request.setCharacterEncoding("GB18030");
	
	/* 从数据库中核实登录用户 */
	Ds.ConnMysql("users");
 
	String sqlLookup = "select * from userinfo";
	ResultSet rs = Ds.execSql(sqlLookup);
	String queryName = null;
	String queryPwd = null;
	   
    boolean isInDb = false;
    
	while(rs.next()) 
    {
       String dbName    = rs.getString("name");
          String dbPwd     = rs.getString("password");
          
       
             queryName= request.getParameter("userName");
             queryPwd = request.getParameter("userPwd");
             
             if(queryName.equals(dbName) && queryPwd.equals(dbPwd))
             {
               isInDb = true;
               break;
             }
        }

     rs.close();   
     Ds.closeState();
     Ds.closeConn(); 
	
	if(isInDb) 
	{
		response.setHeader("Refresh", "3; url=../../index.jsp");
	}
	else
	{
		RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
		rd.forward(request, response);
	}
%>
</body>
</html> 

4.ok-login.jsp

<html>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 <title>登录成功</title>
</head>
<body  style = "background:#ddd;">
  <%
   request.setCharacterEncoding("GB18030");
   String name = request.getParameter("userName");
   out.println("欢迎你:" + name);
  %>
</body>
</html> 

5.index.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<html>
<a href = "Login/Webs/login.jsp">登录</a>
</html>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值