文章目录

  • java连接数据库实现一个简单的登陆界面
  • 效果展示
  • 使用到的工具
  • 配置环境
  • 创建一个数据库
  • 在idea中连接数据库
    • 在idea中加载数据库驱动
      • 测试一下
  • 创建一个web项目
    • 前端页面
  • 部署tomcat服务器
  • 后端处理数据
    • loginservlet类
    • sqID类

java连接数据库实现一个简单的登陆界面

刚开始学习java,学习了一阵子老师要求做一个登陆界面,由于刚开始学习所以也是做了两三天,各种查阅资料才终于完成。作为纪念也是一个以后的参考,决定记录一下过程。其中借鉴学习了很多别人的代码,只是一个记录哈。

效果展示

在浏览器中打开,输入用户名和密码后登陆


如果数据库中有该数据则登陆成功,否则登陆失败
输入错误的密码或者数据库中不存在该用户则登陆失败

使用到的工具

  • idea(专业版)
  • java
  • tomcat
  • mysql(navicat可视化工具)

配置环境

  • java开发环境
  • 数据库配置
  • tomcat配置

这个网上教程还是挺多的,跟着一步一步来就可以了,设置变量这些不是很难

创建一个数据库

我这里创建了一个叫jdbc的数据库,建了一张表users,包含id和用户名密码,并且插入了一些数据

这是插入数据的代码

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;public class testInsert {public static void main(String[] args) throws SQLException {Connection conn = null;Statement st = null;Connection rs = null;try {conn = jdbcUtils.getConn();st = conn.createStatement();for (int i = 1 ;i<999;i++){String id = String.valueOf(i);String sql = String.format("UPDATE users SET name='%s' WHERE id=%d","user"+id,i);st.executeUpdate(sql);}} catch (SQLException throwables) {throwables.printStackTrace();}finally {jdbcUtils.release(conn,st,null);}}
}

在idea中连接数据库

在idea中加载数据库驱动

项目中创建一个新的文件夹lib,把mysql-connector-java-8.0.26.jar数据库驱动复制到lib文件夹下,把lib加载到库中

测试一下

这里没错的话可以输出数据库中的数据了(学习的狂神的mysql教程)

public class test1 {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.加载驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.用户信息和urlString url = "jdbc:mysql://localhost:3306/jdbcStudyuseUnicode=true&characterEncoding=utf8";String username = "root";String password = "12345678";//3.连接数据库connection对象Connection connection = DriverManager.getConnection(url, username, password);//4.执行sql对象statementStatement statement = connection.createStatement();//5.去执行sqlString sql = "SELECT * FROM `users`";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()){System.out.println("id=" + resultSet.getObject("id"));System.out.println("name=" + resultSet.getObject("name"));System.out.println("password=" + resultSet.getObject("password"));System.out.println("----------------------------------------");}//        6.释放链接resultSet.close();statement.close();connection.close();}
}

创建一个web项目

还要去配置一下classes文件夹和lib文件夹,网上也有教程的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rlwln5DK-1627461343989)(/Users/yi/Library/Application Support/typora-user-images/image-20210728145145233.png)]

前端页面

index 这里是抄的别人的,还没学jsp搞不定从服务器获取数据那部分

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->
</head>
<body>
<form class="login" action="loginservlet" method="post"><p class="title">登陆页面</p><input type="text" placeholder="username" autofocus name="username" /><br><i class="fa fa-user"></i><input type="password" placeholder="123" name="password" /> <i class="fa fa-key"></i><br><button type="submit"><i class="spinner"></i> <span class="state">登陆</span></button>
</form>
</body>
</html>

成功页面显示

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>成了!</h1>
</body>
</html>

失败页面显示

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>不行</h1>
</body>
</html>

部署tomcat服务器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wXdnLteW-1627461343990)(/Users/yi/Library/Application Support/typora-user-images/image-20210728145253678.png)]

我在启动tomcat服务器时出现的错误

27-Jul-2021 14:44:43.583 严重 [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[org.apache.coyote.http11.Http11Protocol-8080]]

​ org.apache.catalina.LifecycleException: 协议处理程序初始化失败

端口被占用了,打开终端输入 lsof -i tcp:8080 查看端口号被什么进程占用,然后用kill -9 进程号 杀掉进程就好了

后端处理数据

从服务器接收到数据以后,需要处理数据是否和数据库匹配

loginservlet类

处理传回来的数据的类

package Servlet;import java.io.IOException;
import java.sql.SQLException;
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 Utils.sqlD;
import com.sun.org.slf4j.internal.Logger;
import com.sun.org.slf4j.internal.LoggerFactory;
import com.sun.tools.javac.util.Log;/*** Servlet implementation class loginservlet*/@WebServlet("/loginservlet")
public class loginservlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public loginservlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}/*** request请求* response响应* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("数据传过来了");String username = request.getParameter("username");//获取表单中name="username"String userpassword = request.getParameter("password");//获取表单中nam="password"的数据System.out.println(username + "," + userpassword);//测试是否能够传到这里//验证表单数据是否与数据库数据相匹配sqlD util = new sqlD(); //jdbc连接数据库的类try {if (util.login(username, userpassword) == 1) { //在sqlD类中的login方法,如果返回值为1,if语句为trueSystem.out.println("登录成功!");response.sendRedirect("HelloWorld.html");          //跳转到登录成功的页面/*第二种跳转方式,并且能够传参* request.setAttribute("username", username);* request.getRequestDispatcher("suce.jsp").forward(request, response);*/}else {                                     //如果if语句为false,跳转会登录界面或者跳转到失败界面System.out.println("登录失败!");response.sendRedirect("NewFile.html");}} catch (SQLException throwables) {throwables.printStackTrace();}}
}

sqID类

和数据库连接的类

package Utils;
/*** 数据库工具类* @author Administrator**/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.liu.utils.jdbcUtils;public class sqlD {public static Connection getConnection(){ //连接数据库的方法//与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。Connection conn=null;//连接的IP加端口号    //数据库名     //跳过安全认证String ip="jdbc:mysql://localhost:3306/oli?useSSL=false";String username="root";     //数据库用户名String password="123456";//数据库用户密码try {   //返回与带有给定字符串名的类或接口相关联的 Class 对象。Class.forName("com.mysql.jdbc.Driver");//指向jdbc包下的"com.mysql.jdbc.Driver"类
//管理一组 JDBC 驱动程序的基本服务。      //试图建立到给定数据库 URL 的连接。conn=DriverManager.getConnection(ip,username,password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}public int login(String username,String userpassword) throws SQLException { //将doPost()传来的值和数据库用户密码表的数据相比较Connection conn = null;conn = getConnection();//与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。if (conn != null) {Statement stat = null;ResultSet rs = null;//表示数据库结果集的数据表,try {stat = conn.createStatement(); //创建一个 Statement 对象来将 SQL 语句发送到数据库。//数据库条件查询语句String sql = String.format("SELECT * FROM `users` WHERE `NAME` = '%s' AND `PASSWORD` = '%s'",username,userpassword);rs = stat.executeQuery(sql);//executeQuery()执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。if (rs.next()) { //有返回结果集为true,帐号密码正确return 1;//方法返回1}else {return 0;//方法返回0}} catch (SQLException e) {e.printStackTrace();}}return 0;   //方法返回0}
}

顺利的话到这里就完成了

java连接数据库实现一个简单的登陆界面相关推荐

  1. java swing 创建一个简单的QQ界面

    记录自己用java swing做的第一个简易界面. LoginAction.java package com.QQUI0819;import javax.swing.*; import java.aw ...

  2. jsp实现一个简单的登陆界面(不连数据库)

    基本思想 1.用户在登陆界面输入用户名和密码(设定为用户名和密码全为admin) 2.然后提交给处理jsp文件,由这个文件进行处理 3.处理完跳转到登陆成功或者失败界面 1.登陆界面 <%@ p ...

  3. java qq ui界面_java swing 创建一个简单的QQ界面教程

    记录自己用java swing做的第一个简易界面. LoginAction.java package com.QQUI0819; import javax.swing.*; import java.a ...

  4. 如何用Java设计一个简单的窗口界面(学习中.1)

    如何用Java设计一个简单的窗口界面 一.前言 二.简单了解 1.Swing简介 2.框架(frame) 3.层次 三.步骤 1.打开eclipse,依次创建项目,包,类. 2.代码 2.1最简单的可 ...

  5. JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...

    用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...

  6. 用java设计实现一个简单的动作冒险类游戏

    用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...

  7. java设计游戏_用java设计实现一个简单的动作冒险类游戏

    用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...

  8. java动作游戏教程_用java设计实现一个简单的动作冒险类游戏

    用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...

  9. Android(安卓)一个简单的聊天界面的实现(eclipse实现)

    这几天刚刚学习一下安卓的编程,尝试制作了一个简单的聊天界面(还没有实现网络等后续功能)软件界面如图.(使用eclipse实现) 当输入一些内容后,聊天界面可以下拉显示更多的聊天信息,如下图 首先对这个 ...

  10. java计算器如何实现运算_用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢...

    用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢 2020 - 9 - 16 TAG : view sourceprint?import java.awt.BorderLayout; im ...

最新文章

  1. Elasticsearch之集群脑裂
  2. cannot import name 'multiarray'
  3. python程序员月薪智的-在三线城市Python工程师也能拿到月薪20K
  4. python怎么封装方法然后调用_Python实现封装打包自己写的代码,被python import
  5. 阿里RocketMQ是怎样孵化成Apache顶级项目的?
  6. android 返回图标,在Toolbar中添加一个返回图标
  7. 师从施一公,4年8篇CNS,西湖大学博士后获世界最具潜力女科学家奖
  8. mysql身份验证失败_SMTP身份验证失败PAM-MySQL无法进行身份验证
  9. Android系统(转)
  10. python 元组是什么_python元组是什么?python元组的用法介绍
  11. 大数据系列之分布式数据库HBase-1.2.4+Zookeeper 安装及增删改查实践
  12. 中国象棋程序的设计与实现(七)--心得体会和开发日志
  13. Postfix无法在centos上启动
  14. mysql中的explain_mysql中的explain分析
  15. 检错码之奇偶校验编码
  16. 视频编解码(十三):list_for_each_entry列表总结
  17. 关于编码问题,报错:'gbk' codec can't encode character '\u3164' in position 0: illegal multibyte sequence...
  18. 对于 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针 的简单理解
  19. 开源阅读书源_开源阅读——(免费)
  20. 技校自我鉴定范文计算机600字,技校自我鉴定100字范文18篇

热门文章

  1. 用100多行python代码开发java代码生成器
  2. matlab2013和2014,64位机器MATLAB2013b和MATLAB2014a没有LCC编译器,怎么安装它呢?
  3. 使用struts框架的简单jsp登录页面
  4. Fatal error: Class 'GearmanClient' not found解决方法
  5. 免费下载加速软件IDM,让你的下载不限速,高达10M每秒
  6. HTML5新控件 - 日期和时间选择输入
  7. 需求分析文档、概要设计文档、详细设计文档
  8. Python操作Kafka例子
  9. Java基础知识点面试手册
  10. 网站在线沟通工具,网站即时聊天工具-TTKEFU在线客服系统功能介绍