900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > JDBC连接数据库 实现简单的用户登录功能

JDBC连接数据库 实现简单的用户登录功能

时间:2022-07-21 16:55:59

相关推荐

JDBC连接数据库 实现简单的用户登录功能

目录

一、jdbc连接8.0以上的mysql

二、查询数据库中的login表,与form表单传来的账号密码进行对比,校验登录

一、jdbc连接8.0以上的mysql

mysql在8.0以上的版本更新以后,对应的jdbc连接也有了新的变化。

首先,我们需要配置mysql的环境,推荐大家去网上找教程跟着走就行,这里就不多说mysql的安装配置了。

然后,我们需要下载基于java平台的连接器,这里给大家一个传送门,方便大家下载。MySQL :: Download Connector/J

在我们下载完了这个连接器以后,我们要将其配置在自己的环境中去,这里说一说sts和idea两个编译环境的配置过程。

(1)sts:

第一步:找到自己的项目,右键找到Bulid Path进入其中

第二步:

在Libraries界面点击Add External JARS,加载额外的war包

第三步:选中我们从zip中解压出来的jar包,添加进去,就完成了。

如果你发现这个jar包依然没起作用的话,试试将这个jar包放入项目下的lib文件夹中。

(2)idea:

第一步:点击File进入如下界面

第二步:点击加号,添加自己的依赖,选中我们从zip中解压出来的jar包

第三步:将其放入lib文件夹下

服务启动时会在里面寻找依赖。

配置好了环境以后,就让我们开始吧。

(1)首先,我们要加载驱动

Class.forName("com.mysql.cj.jdbc.Driver"); //这是8.0版本以后的驱动加载Class.forName("com.mysql.jdbc.Driver"); //这是8.0版本以前的驱动加载

根据不同的版本,我们进行不同的驱动加载。

(2)然后我们要准备对数据库进行连接

建议大家,将其封装成一个类,然后通过导入包的形式来调用里面的函数,避免重复写相同代码。

package mySqlCon;import java.sql.*;public class mySqlJdbcCon {private static Connection con=null;public static Connection getCon(){try{Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动String username="root";String password="root";//这是8.0版本以后url的写法String url="jdbc:mysql://localhost:3306/datebaseName?"+"useSSL=false&serverTimezone=GMT";//url="jdbc:mysql://localhost:3306/datebaseName 这是8.0版本以前url的写法con=DriverManager.getConnection(url,username,password);//连接数据库}catch (Exception e) {// TODO: handle exception}return con;//返回连接}}

那么现在我们已经成功连接数据库了。

二、查询数据库中的login表,与form表单传来的账号密码进行对比,校验登录

package majie;import javax.servlet.ServletException;import java.io.PrintWriter;//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.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import mySqlCon.mySqlJdbcCon;//@WebServlet("/loginServlet")public class loginServlet extends HttpServlet {public loginServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");//控制格式输出int judge_is_ture=0;PrintWriter out = response.getWriter();Statement sql=null;ResultSet rs=null;Connection con=null;//获取表单传来的账号密码String username_html=request.getParameter("user");String password_html=request.getParameter("pass");//开始在数据库中寻找有没有对应的账号密码try{con=mySqlJdbcCon.getCon();//连接数据库sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM login");while(rs.next()) {String username=rs.getString(1);String pass=rs.getString(2);if(username.equals(username_html)&&pass.equals(password_html)) {judge_is_ture++;break;}//插旗观察System.out.printf("%s %s\n", username,pass);}rs.close();sql.close();con.close();}catch (SQLException e) {System.out.println(e);// TODO: handle exception}catch(Exception e) {// 处理 Class.forName 错误e.printStackTrace();}finally{// 最后是用于关闭资源的块try{if(sql!=null)sql.close();}catch(SQLException se2){}try{if(con!=null)con.close();}catch(SQLException se){se.printStackTrace();}}//成功从数据库中找到匹配的学号和密码,通过验证,进入系统if(judge_is_ture==1) {response.sendRedirect(request.getContextPath()+"/index.jsp");}//未从数据库中找到对应的学号和密码,校验不通过,返回登录页面else {response.sendRedirect(request.getContextPath()+"/login.jsp");}}@Overrideprotected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{doGet(request, response);}public void destroy() {}}

我们将form表单传来的数据和数据库中的数据进行对比,如果有相同的,那我们跳出数据查询,开始进行页面跳转,跳转到登录成功以后的页面,如果我们一直都没有找到相同的账号和密码,那引导用户重新返回登录页面。

(1)成功登录

(2)登录失败

(3)与此同时,我们通过插旗,观察到了对数据库中具体数据的访问,可以看到,确确实实是读取了数据库中的数据,并进行了对比

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。