JavaWeb之原生数据库连接

我们在开发JavaWeb项目时,常会需要连接数据库。我们以MySQL数据库为例,IDE工具为eclipse,讲述数据库连接与基本操作。

第一步,我们在我们在Web项目的WebContent中简单建一个前端页面login.html,内容如下:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>登录页</title>

</head>

<body>

<p>

请登录

</p>

<form action="LoginServlet" method="post">

<p><input type="text" placeholder="请输入用户名" name="username"> </p>

<p><input type="password" placeholder="请输入密码" name="userpwd"> </p>

<p><input type="submit" value="登录"> </p>

</form>

</body>

</html>

接着,我们修改WebContent--->WEB-INF中的web.xml,对立面的配置做如下修改:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

version="3.1">

<welcome-file-list>

<welcome-file>login.html</welcome-file>

</welcome-file-list>

<servlet>

<servlet-name>LoginServlet</servlet-name>

<servlet-class>com.itszt.demo.LoginServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>LoginServlet</servlet-name>

<url-pattern>/LoginServlet</url-pattern>

</servlet-mapping>

</web-app>

第二步,我们在Web项目的WebContent--->WEB-INF中看有无名称为lib的文件夹,若没有则建立一个名称为lib的文件夹,若有则使用该文件夹,然后将mysql驱动文件拷贝到lib文件夹里。同时,在Java Resources--->src中建立名称为db-config.properties的属性配置文件,改文件内容为:

db.DRIVER=com.mysql.jdbc.Driver

db.URL=jdbc:mysql://localhost:3306/itszt2

db.USERNAME=root

db.PASSWROD=2017

第三步,我们在Java Resources--->src中分别建立两个文件夹com.itszt.demo和com.itszt.utils,在com.itszt.demo文件夹中创建一个名称为LoginServlet.java的Servlet文件,用以接收与处理前端页面传来的数据;在com.itszt.utils里创建一个名称为Util_1_JDBC.java的工具类文件,用以处理数据库连接。

Util_1_JDBC.java文件内容如下:

import java.io.IOException;

import java.io.InputStream;

import java.sql.*;

import java.util.Properties;

import java.util.ResourceBundle;

/**

* 连接数据库,以及释放资源

*/

public abstract class Util_1_JDBC {

private static String DB_DRIVER=null;

private static String DB_URL=null;

private static String DB_USER=null;

private static String DB_PASSWORD=null;

//注册mysql驱动

static {

//也可以采用ResourceBundle来解析与读取属性文件里的配置信息;我们在此采用Properties类加载属性文件

//        ResourceBundle bundle = ResourceBundle.getBundle("db-config.properties");

//        String DB_DRIVER=bundle.getString("db.DRIVER");

//      ...

Properties properties=new Properties();

InputStream resourceAsStream = Util_1_JDBC.class.getClassLoader().getResourceAsStream("db-config.properties");

try {

properties.load(resourceAsStream);

String DB_DRIVER = properties.getProperty("db.DRIVER");

String DB_URL = properties.getProperty("db.URL");

String DB_USER = properties.getProperty("db.USERNAME");

String DB_PASSWORD = properties.getProperty("db.PASSWROD");

} catch (IOException e) {

throw new RuntimeException("读取属性文件失败!");

}

try {

Class.forName(DB_DRIVER);

} catch (ClassNotFoundException e) {

throw new RuntimeException("注册驱动失败!");

}

}

/**

* 打开与数据库的连接

* @return 一个连接对象

*/

public static Connection openConnection(){

try {

return DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWORD);

} catch (SQLException e) {

e.printStackTrace();

}

return null;

}

//释放资源

public static void release(Connection connection, Statement statement, ResultSet resultSet){

if(connection!=null){

try {

connection.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (statement != null) {

try {

statement.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (resultSet != null) {

try {

resultSet.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

我们再来看LoginServlet.java的内容:

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

@WebServlet(name = "LoginServlet")

public class LoginServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");

String username = request.getParameter("username");

System.out.println("username="+username);

String userpwd = request.getParameter("userpwd");

System.out.println("userpwd="+userpwd);

PreparedStatement statement=null;

ResultSet resultSet=null;

//1.不采用数据源连接池,需要频繁建立与数据库的连接与释放资源

Connection connection = UtilJDBC.openConnection();

try {

statement=connection.prepareStatement("SELECT * FROM users where username=? AND  userpwd=?");

statement.setString(1,username);

statement.setString(2,userpwd);

resultSet = statement.executeQuery();

if(resultSet.next()){

System.out.println("登录成功!");

}else{

System.out.println("登录失败!");

}

} catch (SQLException e) {

e.printStackTrace();

}finally {

Util_1_JDBC.release(connection,statement,resultSet);

}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

}

另外,数据库名称为itszt2,要访问的表users的结构为:

CREATE TABLE `users` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`username` varchar(20) NOT NULL,

`userpwd` varchar(20) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

该表中存了一条数据,即(“xiaoming”,123456)。

读者可以在自己的电脑上对上述代码进行测试,以观察数据库连接,以及练习sql语句的若干操作。

原文地址:https://www.cnblogs.com/lizhangyong/p/8117321.html

时间: 2024-11-02 21:04:17

JavaWeb之原生数据库连接的相关文章

MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)

设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计模式,JSP,Servlet,POJO .数据库使用mysql .数据库连接池需要使用C3P0数据库连接池 .页面上的提示需要使用jQuery ----技术难点 .多个请求如何使用一个Servlet .如何模糊查询 .如何在创建和修改的情况下,验证用户信息是否已被使用,并给出提示 ---------

JavaWeb之事务&amp;数据库连接池

1. 事务 Transaction 其实指的就是一组操作,里面包含许多单一的逻辑,如果有一个逻辑没有执行成功,那么 个事务就是执行失败,所有的数据都会回滚到未执行前的状态. 事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问,比如银行转账. 2. 事务的使用 命令行方式 # 开启事务 start transaction; # 提交事务 commit; # 回滚事务 rollback; 代码方式 import org.junit.Test; import java.sql.Con

将js进行到底:node学习9

node.js数据库篇--Mongoose ODM 介绍mongoose 几乎所有的语言都有原生数据库连接驱动,这个我们上一回已经了解了,比如java的jdbc,mysql-connector,但是实际的开发中为了追求效率都不会使用原生的连接方式,不会每次都建立连接,上一回中,我们的注册和登陆各写了一次连接操作,至少我们应该封装一个数据库连接文件,不应该每次操作都连接.为此,Mongoose ODM诞生了,目标就是简化数据库操作,将操作打包成简单的方法,并提供数据的验证规则,安全保障等特性. 什

去哪网实习总结:怎样配置数据库连接(JavaWeb)

本来是以做数据挖掘的目的进去哪网的,结构却成了系统开发... 不过还是比较认真的做了三个月,老师很认同我的工作态度和成果... 实习马上就要结束了,总结一下几点之前没有注意过的变成习惯和问题,分享给大家. 同时打个广告:去哪网内审部招JavaWeb开发实习生,时间非常自由,每周一天.周六周日甚至都可以,时间充裕的小伙伴给我留言啊,挣个零花钱,还能长点经验....(保研的.想工作的大四狗最合适不过了...) 在公司里,开发系统往往使用开发环境,真实环境只有在系统开发好了之后,才可以上线使用,那么数

去哪网实习总结:如何配置数据库连接(JavaWeb)

本来是以做数据挖掘的目的进去哪网的,结构却成了系统开发.. . 只是还是比較认真的做了三个月,老师非常认同我的工作态度和成果. .. 实习立即就要结束了.总结一下几点之前没有注意过的变成习惯和问题,分享给大家. 同一时候打个广告:去哪网内审部招JavaWeb开发实习生.时间很自由,每周一天.周六周日甚至都能够,时间充裕的小伙伴给我留言啊,挣个零花钱,还能长点经验. ...(保研的.想工作的大四狗最合适只是了... ) 在公司里,开发系统往往使用开发环境.真实环境仅仅有在系统开发好了之后,才干够上

数据库——JavaWEB数据库连接

一.数据库连接的发展 1.数据库连接 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出.拓机.如下图所示: 2.解决创建数据库连接花费系统开销浪费系统资源和可能产生数据库服务器内存溢出和宕机的办法 ①数据库连接池 数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个 数据库连接池

javaweb学习总结(三十九)——数据库连接池

一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出.拓机.如下图所示: 二.使用数据库连接池优化程序性能 2.1.数据库连接池的基本概念 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性

JavaWEB小知识学习--原生AJAX

AJAX的作用局部刷新,作为提升页面体验还是很重要的,不过大家都说对SEO不是很友好,一直使用jQuery封装的AJAX,没有了解过原生的是什么样子的,特此学习下,补充知识 1.原生AJAX的Get方式 页面中定义一个a标签.想要实现的效果点击a标签,能够请求服务器,弹出服务器返回的字段 <body> <a href="/ajaxTest">点击我!</a> </body> 对应的AJAX请求如下,注释步骤很详细的 //具体的函数可以参考

20160409 javaweb 数据库连接池

1.自己编写数据库连接池: package com.dzq.pool; import java.io.PrintWriter; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQ