javaWeb連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)簡(jiǎn)單登陸注冊(cè)功能的全過(guò)程
實(shí)現(xiàn)步驟
創(chuàng)建maven項(xiàng)目 配置Tomcat 這些都不細(xì)說(shuō)了
jar包
因?yàn)橐B接數(shù)據(jù)庫(kù)所以一定要在maven項(xiàng)目下的xml文件下配置數(shù)據(jù)庫(kù)的jar包依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
這個(gè)千萬(wàn)不要忘了 重重之重
數(shù)據(jù)庫(kù)的驅(qū)動(dòng)以及用戶密碼
package com.li.Servlet.blit;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class JDBC {
private static String url = null;
private static String name = null;
private static String password = null;
static {
try {
Class.forName ( "com.mysql.cj.jdbc.Driver" );
} catch (Exception e) {
e.printStackTrace ( );
}
url = "jdbc:mysql://localhost:3306/zhiqingli?useUnicode=true&characterEncoding=utf8&useSSL=true";
name = "root";
password = "root";
}
public static Connection getConn() throws Exception {
return DriverManager.getConnection ( url, name, password );
}
public static void release(Connection conn, PreparedStatement pst, ResultSet res) {
try {
if (res != null) {
res.close ( );
}
if (pst != null) {
pst.close ( );
}
if (conn != null) {
conn.close ( );
}
} catch (Exception e) {
e.printStackTrace ( );
}
}
}
這個(gè)類可以直接復(fù)制使用,但要改成自己的數(shù)據(jù)庫(kù)名字
jsp頁(yè)面
登陸頁(yè)面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<form action="${pageContext.request.contextPath}/test" method="get">
<h3>賬號(hào):<input type="text" name="account"></h3>
<h3>密碼:<input type="password" name="paw"></h3>
<h3><input type="submit" value="登陸"><a href="Register.jsp" rel="external nofollow" target="_blank">注冊(cè)</a></h3>
</form>
</body>
</html>注冊(cè)頁(yè)面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注冊(cè)</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/res" method="post">
<h3>賬號(hào):<input type="text" placeholder="請(qǐng)輸入注冊(cè)的賬號(hào)" name="number"></h3>
<h3>密碼:<input type="password" placeholder="請(qǐng)輸入注冊(cè)的密碼" name="word" id="one"></h3>
<h3>確認(rèn)密碼:<input type="password" placeholder="確認(rèn)一遍密碼" name="u" id="two"></h3>
<input type="submit" value="提交" οnclick="show()">
</form>
<Script>
function show(){
var one = document.getElementById("one").value;
var two = document.getElementById("two").value;
if (one === two){
alert("注冊(cè)成功");
window.open("index.jsp")
}else {
alert("兩次輸入的密碼不一致");
}
}
</Script>
</body>
</html>
登陸成功和失敗的頁(yè)面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>成功頁(yè)面</title> </head> <body> <h1>登陸成功,感謝使用</h1> </body> </html> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>失敗頁(yè)面</title> </head> <body> <h1>登陸失敗,賬號(hào)密碼找不到或者錯(cuò)誤</h1> </body> </html>
工具類
工具人上線
//登陸使用的方法
Connection conn = null;
PreparedStatement pst = null;
ResultSet res = null;
boolean isQ;
public boolean Select(String username,String paw) {
try {
conn = JDBC.getConn ( );
String sql = "SELECT * FROM `username` where `name`=? and `password`=?";
pst = conn.prepareStatement (sql);
pst.setObject ( 1,username );
pst.setObject ( 2,paw );
res = pst.executeQuery ( );
if (res.next ()){
isQ = true;
System.out.println (res.getObject ( "name" )+" "+res.getObject ( "password" ));
System.out.println ("登陸成功");
}else {
isQ = false;
System.out.println ("登陸失敗");
}
}catch (Exception e){
e.printStackTrace ();
}finally {
JDBC.release ( conn,pst,res );
}
return isQ;
}
//注冊(cè)用的方法
public void addUser(String name,String paw){
try {
conn = JDBC.getConn ( );
String sql = "insert into `username`(`name`,`password`) values (?,?)";
pst = conn.prepareStatement ( sql );
pst.setObject ( 1,name );
pst.setObject ( 2,paw );
int i = pst.executeUpdate ( );
if (i>0){
System.out.println ("添加成功");
}
}catch (Exception e){
e.printStackTrace ();
}finally {
JDBC.release ( conn,pst,res );
}
}
登陸的類
package com.li.Servlet.test;
import com.li.Servlet.blit.Way;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class index extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String account = req.getParameter ( "account" );
String paw = req.getParameter ( "paw" );
Way way = new Way ();
if (way.Select ( account,paw )){
resp.sendRedirect ( "/s4/true.jsp" );
}else {
resp.sendRedirect ( "/s4/false.jsp" );
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet ( req, resp );
}
}
注冊(cè)的類
package com.li.Servlet.test;
import com.li.Servlet.blit.Way;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class index02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String number = req.getParameter ( "number" );
String word = req.getParameter ( "word" );
String u = req.getParameter ( "u" );
if (word.equals ( u )){
Way way = new Way ( );
way.addUser ( number,word );
}else {
//當(dāng)兩次密碼不一致的時(shí)候?yàn)g覽器響應(yīng)給用戶當(dāng)前注冊(cè)的頁(yè)面
resp.sendRedirect ( "/s4/Register.jsp" );
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet ( req, resp );
}
}
兩個(gè)映射路徑
<!--登陸-->
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>com.li.Servlet.test.index</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
<!--注冊(cè)-->
<servlet>
<servlet-name>res</servlet-name>
<servlet-class>com.li.Servlet.test.index02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>res</servlet-name>
<url-pattern>/res</url-pattern>
</servlet-mapping>
思路
登陸
這個(gè)就是用戶輸入的賬號(hào)和密碼看看數(shù)據(jù)庫(kù)里有沒(méi)有,有的話就重定向到成功或這失敗的頁(yè)面,相當(dāng)于瀏覽器響應(yīng)給用戶的請(qǐng)求結(jié)果
注冊(cè)
相當(dāng)于就是往數(shù)據(jù)庫(kù)里面添加一個(gè)賬號(hào)或者密碼然返回到登陸頁(yè)面
這里我在注冊(cè)類面沒(méi)有用到重定向,而是在注冊(cè)的jsp頁(yè)面里判斷之后跳轉(zhuǎn)到登陸頁(yè)面
注意:這里為什么沒(méi)在注冊(cè)類里面用重定向
因?yàn)槭褂弥囟ㄏ蛑缶椭苯臃祷亓说顷戭愡\(yùn)行的結(jié)果
總結(jié)
到此這篇關(guān)于javaWeb連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)簡(jiǎn)單登陸注冊(cè)功能的文章就介紹到這了,更多相關(guān)javaWeb登陸注冊(cè)功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java連接sftp服務(wù)器實(shí)現(xiàn)上傳下載功能
這篇文章主要介紹了java連接sftp服務(wù)器實(shí)現(xiàn)上傳下載,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
springboot打包部署到linux服務(wù)器的方法
這篇文章主要介紹了springboot打包部署到linux服務(wù)器的方法,通過(guò)實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
詳解Spring Boot 中實(shí)現(xiàn)定時(shí)任務(wù)的兩種方式
這篇文章主要介紹了Spring Boot 中實(shí)現(xiàn)定時(shí)任務(wù)的兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
SpringMVC互聯(lián)網(wǎng)軟件架構(gòu)REST使用詳解
這篇文章主要為大家詳細(xì)介紹了SpringMVC互聯(lián)網(wǎng)軟件架構(gòu)REST的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Spring Security實(shí)現(xiàn)微信公眾號(hào)網(wǎng)頁(yè)授權(quán)功能
這篇文章主要介紹了Spring Security中實(shí)現(xiàn)微信網(wǎng)頁(yè)授權(quán),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
關(guān)于mybatis的一級(jí)緩存和二級(jí)緩存的那些事兒
MyBatis自帶的緩存有一級(jí)緩存和二級(jí)緩存,今天我們就來(lái)學(xué)習(xí)一下,文中有非常詳細(xì)的總結(jié),對(duì)正在學(xué)習(xí)的小伙伴們很有幫助,需要的朋友可以參考下2021-06-06
SpringBoot中實(shí)現(xiàn)多數(shù)據(jù)源連接和切換的方案
在Spring Boot中,通過(guò)AbstractRoutingDataSource實(shí)現(xiàn)多數(shù)據(jù)源連接是一種常見(jiàn)的做法,這種技術(shù)允許你在運(yùn)行時(shí)動(dòng)態(tài)地切換數(shù)據(jù)源,從而支持對(duì)多個(gè)數(shù)據(jù)庫(kù)的操作,本文給大家介紹了SpringBoot中實(shí)現(xiàn)多數(shù)據(jù)源連接和切換的方案,需要的朋友可以參考下2024-11-11

