JavaWeb连接数据库

前提条件

配置好编程环境:jdk(包含jre)
配置还Web环境: Tomcat
配置还数据库环境: MySQL, mysql-connector-java-8.0.16.jar
配置好编译器环境: Idea2018企业版

总体布局:

在这里插入图片描述

前端部分:JSP页面

在jsp页面上写上一下代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form method="post" action="http://localhost:8080/Login">
    账号:<input type="text" name="id"><br>
    密码:<input type="password" name="pwd"><br>
    <input type="submit" value="连接数据库">  <input type="reset" value="重新输入">
  </form>
  </body>
</html>

用于展示前端页面

创建数据库的类

为连接数据库作准备

package DateBaseModel;

public class DateBaseModel {
    private Integer id;
    private String Name;
    private String password;

    public DateBaseModel(Integer id, String name, String password) {
        this.id = id;
        Name = name;
        this.password = password;
    }

    public DateBaseModel(String name, String password) {
        Name = name;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

Web连接数据库

注册驱动, 在WEB-INF文件夹下新建一个lib目录,把 mysql-connector-java-8.0.16.jar 复制粘贴到这里,然后右击加为library
在这里插入图片描述

package dbpackage;

import DateBaseModel.DateBaseModel;

import java.sql.*;
import java.util.ArrayList;

public class Linkdb {
    Connection conn = null;

    public Linkdb() throws ClassNotFoundException, SQLException {

        //注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        this.conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/SchoolTownDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC", "root", "qq124519");

    //释放资源
    conn.close();

后台对数据库的操作

//在login表里面添加数据
    public void insert(String name, String pwd) throws SQLException {
        PreparedStatement prep = conn.prepareStatement("insert into SchoolTownDB.login value (null ,?,?)");
        prep.setString(1, name);
        prep.setString(2, pwd);
        prep.execute();

    }

    //查询的方法
    public ArrayList<DateBaseModel> getAlluser() throws SQLException {
        ArrayList<DateBaseModel> useList = new ArrayList<DateBaseModel>();
        PreparedStatement prep = conn.prepareStatement("select * from SchoolTownDB.login");
        prep.execute();

        ResultSet resultSet = prep.executeQuery();

        //判断
        while (resultSet.next()) {
            int myid = resultSet.getInt("id");
            String myname = resultSet.getString("name");
            String mypwd = resultSet.getString("password");

            useList.add(new DateBaseModel(myid, myname, mypwd));
        }
        return useList;
    }

    //在表里查询数据
    public DateBaseModel getUser(int id) throws SQLException {
        PreparedStatement prep = conn.prepareStatement("select * from SchoolTownDB.login where id =?");
        prep.setInt(1, id);
        prep.execute();

        ResultSet resultSet = prep.executeQuery();
        if (resultSet.next()) {
            int myid = resultSet.getInt("id");
            String myname = resultSet.getString("name");
            String mypwd = resultSet.getString("password");
            return new DateBaseModel(myid, myname, mypwd);
        }
        return null;
    }

    //登录的方法
    public DateBaseModel login(int id,String pwd) throws SQLException {
        PreparedStatement prep = conn.prepareStatement("select SchoolTownDB.login.password from SchoolTownDB.login where id=?");
        prep.setInt(1,id);
        //执行,把id的密码给查出来
        prep.execute();
        ResultSet resultSet=prep.executeQuery();
        if(resultSet.next()){
            String mypwd = resultSet.getString("password");
            //判断输入的密码和数据库的密码是否相等
            if (pwd.equals(mypwd)){
                return getUser(id);
            }
            else {
                return null;
            }
        }
        else {
            return null;
        }
	}


用Servlet实现前后交互

package ServletPackage;

import DateBaseModel.DateBaseModel;
import dbpackage.Linkdb;

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.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;

@WebServlet(name = "LoginServlet",urlPatterns = "/Login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //设置一下编码解决网络乱码问题
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");//设置编码

        int id = Integer.parseInt(request.getParameter("id"));
        String pwd = request.getParameter("pwd");
        PrintWriter out = response.getWriter();
        //out.println("输入的id账号为:" + id + "输入密码为:" + pwd);

        try {
            Linkdb database = new Linkdb();
            DateBaseModel usedate = database.login(id, pwd);
            if (usedate == null) {
                out.println("该用户不存在或者密码错误"+"<a href=\"http://localhost:8080\">返回登录</a>");
            } else {
                out.println("数据库连接成功" + usedate.getName());
                ArrayList<DateBaseModel> usedata = database.getAlluser();
                out.println("总表里面共有:" + usedata.size());
                for (DateBaseModel each : usedata) {
                    out.println(each.getId() + "------" + each.getName() + "-------" + each.getPassword());
                }
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

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


启动

在这里插入图片描述

在这里插入图片描述
于是,一个关于服务器连接数据库的小案例成功了.

  • 11
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
JavaWeb连接数据库,一般需要使用 JDBC 技术。下面是连接 MySQL 数据库的示例代码: 1. 导入 JDBC 驱动包 在项目中添加 JDBC 驱动包,例如 MySQL 的驱动包:mysql-connector-java-x.x.xx.jar。 2. 加载 JDBC 驱动 使用 Class.forName() 方法加载 JDBC 驱动,例如 MySQL 的驱动类为 com.mysql.jdbc.Driver: ``` Class.forName("com.mysql.jdbc.Driver"); ``` 3. 设置数据库连接信息 设置数据库连接的 URL、用户名和密码: ``` String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; ``` 其中,url 表示数据库的地址和端口号,test 表示数据库的名称。 4. 建立数据库连接 使用 DriverManager.getConnection() 方法建立数据库连接: ``` Connection conn = DriverManager.getConnection(url, user, password); ``` 5. 操作数据库 使用 Connection 对象进行数据库操作,例如创建 Statement 对象并执行 SQL 语句: ``` Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM user"); while (rs.next()) { System.out.println(rs.getString("name")); } ``` 完整代码示例: ``` import java.sql.*; public class Test { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM user"); while (rs.next()) { System.out.println(rs.getString("name")); } rs.close(); stmt.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 这是一个简单的连接 MySQL 数据库的示例,你可以根据需要修改数据库连接信息和 SQL 语句。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

稻田里展望者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值