JavaWeb与数据库驱动连接类的实现

在之前的博客中写过类似的文章,如:
JavaWeb中的数据库连接文件写法(db.properties)

介绍

但是今天博主想继续分享一下这种写法,在原基础上做了很大的改进。仍然需要db.properties这个文件,当然文件的名字你可以随意更改,但是后缀名不能改变哦~。
那么这个类来获取数据库的驱动连接,怎么写呢?在学习JavaWeb课上,教的方法是通过 一个Servlet的监听器web.xml来配置数据库的连接。在经过几天的摸索之后,开始尝试一种更好用更简便的方式来实现。
下面开始上硬货。

实现类

通过下面的类来实现数据库的驱动加载,你只需要在数据访问对象(Data Access Object DAO)设计模式的类中,调用此类中的方法即可!

package dao;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;



/**
 *  关于获取数据库连接配置的类
 * @author OriginalCoder
 */
public class DataBaseDAO {
	private Connection cn=null;
	private PreparedStatement ps=null;
	private ResultSet rs=null;
	private static String driver;
	private static String url;
	private static String username;
	private static String password;
	
	/**
	 * 静态加载资源内存
	 */
	static{
		try {
			initial();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 连接初始化
	 * @throws ClassNotFoundException 
	 */
	public static void initial() throws ClassNotFoundException{
		//读取资源文件,获取连接对象
		//1.properties集合类
		Properties properties=new Properties();
		//方法一
		//2.获取src路径下的文件访问-------》ClassLoader    类加载器
//		ClassLoader classloader = DataBaseDAO.class.getClassLoader();
//		URL res = classloader.getResource("db.properties");
//		String path =  res.getPath();
	3.加载文件
//		properties.load(new FileReader(path));
		
		//方法二
		InputStream is=DataBaseDAO.class.getClassLoader().getResourceAsStream("db.properties");
		try {
			//加载文件
			properties.load(is);
		} catch (IOException e) {
			e.printStackTrace();
		}
		//获取属性并赋值
		driver=properties.getProperty("driver");
		url=properties.getProperty("url");
		username=properties.getProperty("username");
		password=properties.getProperty("password");
	}
	
	/**
	 * 获取驱动连接
	 * @return
	 */
	public static Connection getConnection() {
		Connection cn = null;			//声明数据库连接对象
		try {
			Class.forName(driver);
			cn = DriverManager.getConnection(url, username, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		if (cn == null) {
			System.err.println("警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:" + driver
					+ "\r\n链接位置:" + url + "\r\n用户/密码" + username + "/" + password);
		}
		return cn;
	}

	
	
	/**
	 * 更新执行结果
	 * @param sql
	 * @return
	 */
	public int executeUpdate(String sql) {
		int result = 0; 	// 更新数据的记录条数
		try { 
			cn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn
			ps = cn.prepareStatement(sql);
			result = ps.executeUpdate(sql); // 执行更新操作
		} catch (SQLException e) {
			result = 0; // 将保存返回值的变量赋值为0
			e.printStackTrace();
		}
		return result; // 返回保存返回值的变量
	}
	
	/**
	 * 处理结果集
	 * @param sql
	 * @return
	 */
	public ResultSet executeQuery(String sql) {
		try {
			cn = getConnection();
			ps = cn.prepareStatement(sql);
			rs = ps.executeQuery(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return rs;
	}
	
	
	/**
	 * 释放资源
	 * @param connection
	 * @param ps
	 * @param rs
	 */
	public static void closeAll(Connection cn,PreparedStatement ps,ResultSet rs){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(ps!=null){
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(cn!=null){
			try {
				cn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void closeBoth(Connection cn,PreparedStatement ps){
		if(ps!=null){
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(cn!=null){
			try {
				cn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	//测试代码
//	public static void main(String[] args)  {
//		String sql = "Select * from tbUser";
//		DataBaseDAO u=new DataBaseDAO();
//		ResultSet rs=u.executeQuery(sql);
//		try {
//			if(rs.next()) {
//				System.out.println(rs.getInt(1));
//			}
//		} catch (SQLException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//	}
}

测试类

使用案例
新建一个类
在类中定义一个登录的验证方法,代码如下:

/**
	 * 密码登陆验证
	 * @param uid 		用户id
	 * @param pwd		密码
	 * @return			false
	 */
public boolean loginVerify(String uid,String pwd) {
		Connection conn = null;
		PreparedStatement psmt = null;
		ResultSet rs = null;
		conn = DataBaseDAO.getConnection();
		String sql = "select * from tbUser where uid='"+uid+"' and pwd='"+pwd+"'";
		try {
			psmt = conn.prepareStatement(sql);
			rs = psmt.executeQuery();
			if(rs.next()) {
				return true;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DataBaseDAO.closeAll(conn, psmt, rs);
		}
		return false;
	}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: JavaWeb连接数据库实现登录注册的步骤如下: 1. 首先需要创建一个数据库,可以使用MySQL或者Oracle等关系型数据库。 2. 在JavaWeb项目中引入数据库驱动程序,例如MySQL驱动程序mysql-connector-java.jar。 3. 在Java代码中使用JDBC连接数据库,可以使用以下代码: ``` Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); ``` 其中,test为数据库名称,root为数据库用户名,password为数据库密码。 4. 实现登录功能,可以使用以下代码: ``` String sql = "select * from user where username=? and password=?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, username); ps.setString(2, password); ResultSet rs = ps.executeQuery(); if(rs.next()){ // 登录成功 }else{ // 登录失败 } ``` 其中,user为数据库中的用户表,username和password为用户输入的用户名和密码。 5. 实现注册功能,可以使用以下代码: ``` String sql = "insert into user(username, password) values(?, ?)"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, username); ps.setString(2, password); int result = ps.executeUpdate(); if(result > ){ // 注册成功 }else{ // 注册失败 } ``` 其中,username和password为用户输入的用户名和密码。 以上就是JavaWeb连接数据库实现登录注册的基本步骤。 ### 回答2: 在Java Web开发中,使用数据库实现登录注册是非常常见和重要的一步。通常情况下,我们需要使用MySQL数据库来存储用户的信息。 连接数据库的第一步是导入数据库驱动包,一般使用JDBC驱动,可以从官方网站下载并导入到项目中。 在Java连接MySQL数据库,需要使用Java Database Connectivity(JDBC)来实现JDBCJava的一个API,可以访问各种关系型数据库。 为了访问MySQL数据库,我们需要获取MySQL JDBC驱动程序的正确实例。在Java中访问MySQL数据库,需要使用如下格式的URL: jdbc:mysql://host:port/database 其中,host表示服务器的地址,port表示端口,database表示要连接MySQL数据库名。 在Java实现登录注册,我们需要先创建一个用户表。在用户表中,通常包含以下字段: 1. 用户名 2. 密码 3. 邮箱 4. 电话号码 我们需要在程序中编写SQL语句来创建这个用户表。 在用户输入用户名和密码时,我们需要使用Java中的PreparedStatement来防止SQL注入攻击。使用PreparedStatement时,我们可以使用占位符来代替用户输入的值,然后在执行SQL语句时,使用setString()等方法来设置占位符的值。 在用户注册时,我们需要验证用户输入的用户名是否已经存在于数据库中。如果用户名已经存在,则必须提示用户重新输入。 在用户登录时,我们需要查询数据库以验证用户名和密码是否正确。如果验证通过,则允许用户登录。 在Java Web中,我们可以使用JSP和Servlet来实现登录注册。当用户点击登录或注册按钮时,客户端会向服务器发送一个请求,服务器会使用JSP和Servlet来处理这个请求,并返回相应的结果。在处理请求时,Servlet会从客户端接收用户输入,并将其传递给JDBC驱动程序来访问MySQL数据库。在获取了数据库的响应后,Servlet会渲染JSP页面并将其返回给客户端。 总之,Java Web连接数据库实现登录注册需要使用JDBC驱动程序、SQL语句、Servlet和JSP等技术。正确地使用这些技术,我们可以创建一个安全、高效且易于维护的登录注册系统。 ### 回答3: JavaWeb连接数据库实现登录注册,是常见的网站开发功能,主要通过JavaEE技术中的Servlet和JSP实现。其基本流程如下: 1. 创建数据库表 首先需要在数据库中创建一个用户表,包含用户ID,用户名和密码等信息。 2. 导入 JDBC 驱动程序 使用jdbc连接数据库需要导入对应的jdbc驱动程序,在项目中引入MySQLjdbc驱动。 3. 创建数据库连接Java Web应用中,要使用javax.sql.DataSource来管理数据库连接池,获取连接对象,简化连接数据库的过程。 4. 编写Servlet代码 Servlet是Java Web应用中的核心组件之一,负责接收和处理浏览器发送的请求,比如登录和注册请求。在Servlet中需要完成以下几项工作: - 获取用户提交的用户名和密码等信息; - 根据请求型,判断是登录还是注册请求; - 查询数据库中是否存在该用户; - 验证用户输入的密码是否正确; - 根据验证结果,跳转到不同的页面。 5. 编写 JSP 页面 在Servlet中获取到数据信息后,需要使用JSP呈现出来,给用户提示错误信息或跳转到相应页面。包括登录页面,注册页面和欢迎页面等。 6. 进行测试 完成代码编写后,需要对程序进行测试,检查登录和注册流程是否正常,是否能够正确处理错误情况。 JavaWeb连接数据库实现登录注册是一个较为复杂的工程,需要熟练掌握Java Web开发相关知识,包括Servlet、JSP、JavaBean和数据库等知识。同时需要使用IDE工具进行编程,例如Eclipse、IntelliJ IDEA等,可极大提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值