java连接数据库实现一个简单的登陆界面
文章目录
- 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连接数据库实现一个简单的登陆界面相关推荐
- java swing 创建一个简单的QQ界面
记录自己用java swing做的第一个简易界面. LoginAction.java package com.QQUI0819;import javax.swing.*; import java.aw ...
- jsp实现一个简单的登陆界面(不连数据库)
基本思想 1.用户在登陆界面输入用户名和密码(设定为用户名和密码全为admin) 2.然后提交给处理jsp文件,由这个文件进行处理 3.处理完跳转到登陆成功或者失败界面 1.登陆界面 <%@ p ...
- java qq ui界面_java swing 创建一个简单的QQ界面教程
记录自己用java swing做的第一个简易界面. LoginAction.java package com.QQUI0819; import javax.swing.*; import java.a ...
- 如何用Java设计一个简单的窗口界面(学习中.1)
如何用Java设计一个简单的窗口界面 一.前言 二.简单了解 1.Swing简介 2.框架(frame) 3.层次 三.步骤 1.打开eclipse,依次创建项目,包,类. 2.代码 2.1最简单的可 ...
- JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...
用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...
- 用java设计实现一个简单的动作冒险类游戏
用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...
- java设计游戏_用java设计实现一个简单的动作冒险类游戏
用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...
- java动作游戏教程_用java设计实现一个简单的动作冒险类游戏
用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...
- Android(安卓)一个简单的聊天界面的实现(eclipse实现)
这几天刚刚学习一下安卓的编程,尝试制作了一个简单的聊天界面(还没有实现网络等后续功能)软件界面如图.(使用eclipse实现) 当输入一些内容后,聊天界面可以下拉显示更多的聊天信息,如下图 首先对这个 ...
- java计算器如何实现运算_用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢...
用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢 2020 - 9 - 16 TAG : view sourceprint?import java.awt.BorderLayout; im ...
最新文章
- Elasticsearch之集群脑裂
- cannot import name 'multiarray'
- python程序员月薪智的-在三线城市Python工程师也能拿到月薪20K
- python怎么封装方法然后调用_Python实现封装打包自己写的代码,被python import
- 阿里RocketMQ是怎样孵化成Apache顶级项目的?
- android 返回图标,在Toolbar中添加一个返回图标
- 师从施一公,4年8篇CNS,西湖大学博士后获世界最具潜力女科学家奖
- mysql身份验证失败_SMTP身份验证失败PAM-MySQL无法进行身份验证
- Android系统(转)
- python 元组是什么_python元组是什么?python元组的用法介绍
- 大数据系列之分布式数据库HBase-1.2.4+Zookeeper 安装及增删改查实践
- 中国象棋程序的设计与实现(七)--心得体会和开发日志
- Postfix无法在centos上启动
- mysql中的explain_mysql中的explain分析
- 检错码之奇偶校验编码
- 视频编解码(十三):list_for_each_entry列表总结
- 关于编码问题,报错:'gbk' codec can't encode character '\u3164' in position 0: illegal multibyte sequence...
- 对于 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针 的简单理解
- 开源阅读书源_开源阅读——(免费)
- 技校自我鉴定范文计算机600字,技校自我鉴定100字范文18篇
热门文章
- 用100多行python代码开发java代码生成器
- matlab2013和2014,64位机器MATLAB2013b和MATLAB2014a没有LCC编译器,怎么安装它呢?
- 使用struts框架的简单jsp登录页面
- Fatal error: Class 'GearmanClient' not found解决方法
- 免费下载加速软件IDM,让你的下载不限速,高达10M每秒
- HTML5新控件 - 日期和时间选择输入
- 需求分析文档、概要设计文档、详细设计文档
- Python操作Kafka例子
- Java基础知识点面试手册
- 网站在线沟通工具,网站即时聊天工具-TTKEFU在线客服系统功能介绍