註冊介面從資料庫中判斷使用者名稱是否存在(jsp+servlet+sqlserver)
在CSDN上找了很多Ajax+jquery方法,但是不適合我用,我看了一些關於用ajax的,他們說不用在資料庫中進行查詢,直接在伺服器段進行查詢判斷就可以知道使用者名稱是否被佔用,但是我拿過來之後發現不可用(也可能我做的方法不對),所以我用了最笨的方法,直接到資料庫中進行查詢判斷,然後提示給使用者(註冊成功或者註冊失敗),Ajax+Jquery這塊我沒有學過(我可能上了個假大學,課堂中從來不講關鍵部分,就撿一些皮毛的介面的講(到面試的時候才知道spring和vue框架是多麼的重要))
如果大家知道ajax+jquery怎麼做!希望能給我發個私信或者留言(雖然這個技術有點老了,但是就想用這個把它做出來,求求了!!!)
迴歸正題:
首先是登陸介面:
zhuce.jsp(名字可以隨便起)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>註冊介面</title>
</head>
<script type="text/javascript">
function a(){
var text1=loginfrm.password1.value;
var text2=loginfrm.password2.value;
var text3=loginfrm.username.value;
if(text1=="" || text2=="" || text3==""){
alert("使用者名稱或密碼不能為空!");
return false;//false:阻止提交表單
}
if(text1!=text2 && text1!="" && text2!=""){
alert("密碼不一致!");
return false;//false:阻止提交表單
}
// if(text1==text2 && text1!="" && text2!="" && text3!=""){
// alert("註冊成功,跳轉登入介面");
// //window.location.href='Login.jsp';
// }
}
</script>
<style>
.margin{
margin:20px 300px;
}
.textrange{
width:200px;
}
</style>
<body>
<h1 class="margin">註冊介面</h1>
<form name="loginfrm" action="loginserv.do" method="post" class="margin" onsubmit="return a()">
<table>
<tr><td>角色</td><td> <select name="role">
<option value="1">學生</option>
<option value="2">招聘企業</option>
<option value="3">管理員</option>
</select></td></tr>
<tr>
<td>使用者名稱:</td>
<td><input type="text" name="username" class="textrange"></td>
</tr>
<tr>
<td>密 碼:</td>
<td><input type="password" name="password1" class="textrange"></td>
<tr>
<td>確認密碼:</td>
<td><input type="password" name="password2" class="textrange"></td>
</tr>
</table>
<input name="button" type="submit" value="註冊" >
</form>
</body>
</html>
然後是判斷的servlet(名字也可以隨便取)
ConnectRe(servlet類)
但是要注意的是package com.dao是我自己建立的包,xml的配置,這裡已經採用自動配置@WebServlet("/loginserv.do"),loginserv.do是登錄檔單action提交過來的。
package com.dao;
/*註冊serverlet*/
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ConnectRe
*/
@WebServlet("/loginserv.do")
public class ConnectRe extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ConnectRe() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//設定編碼
response.setCharacterEncoding("UTF-8");
//response.getWriter().append("Served at: ").append(request.getContextPath());
response.setHeader("Content-type", "text/html;charset=UTF-8");
//(1)通用資訊頭即能用於請求訊息中,也能用於響應資訊中,但與被傳輸的實體內容沒有關係的資訊頭,如Data,
//Pragma主要: Cache-Control , Connection , Data , Pragma , Trailer , Transfer-Encoding , Upgrade,UTF-8主要解決亂碼的問題
doPost(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//設定編碼
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-type", "text/html;charset=utf-8");
//獲取引數
String role = request.getParameter("role");
String username = request.getParameter("username");
String userpwd1 = request.getParameter("password1");
try{
PrintWriter pw=response.getWriter(); //寫入函式,把資訊寫入資料庫的表格,
//連線資料庫
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("資料庫連線");
//得到連線
Connection ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DataBaseName=managerialsystem","sa","123456");/*第20行*/
System.out.println("連線資料庫成功");
//建立Statement
Statement sm=ct.createStatement();
//得到結果集
//ResultSet rs=sm.executeQuery("select top 1 * from users");
//if(rs.next()){
// pw.println("");
//}
String sql;
sql ="select name from xinxi where name='" + username + "'"; //查詢使用者名稱是否存在
ResultSet rs = sm.executeQuery(sql);
if(rs.next()) {//如果存在時,執行以下程式碼
System.out.println("該使用者使用者已存在");//控制檯輸出,方便程式碼編寫的人知道程式碼是否正確
pw.print("<script language='javascript'>alert('使用者註冊失敗!');window.location.href='register.jsp';</script>");
}
else {//如果不存在,把資料插入到表格中
PreparedStatement ps = ct.prepareStatement("insert into xinxi(role,name,password) values(?,?,?)"); //向資料庫存入資料
ps.setString(1, role);
ps.setString(2, username);
ps.setString(3, userpwd1);
ps.execute();
ps.close();
ct.close(); //資料庫關閉
// out.println("<script language='javascript'>alert('註冊成功');window.location.href='longon.jsp';</scirpt>");
System.out.println("資料庫關閉");
pw.print("<script language='javascript'>alert('使用者註冊成功!');window.location.href='longin.jsp';</script>");
// request.getRequestDispatcher("/Longin.jsp").forward(request, response);//跳轉介面
}
}catch (Exception ex){
System.out.println("連線失敗");
ex.printStackTrace();
}
}
}
往資料庫中插入一個叫“韋明”的使用者
因為資料庫中之前已經存在一個名為“韋明”的使用者,待會兒會提示註冊失敗
往資料庫中插入一個叫“韋明勳”的使用者(資料庫中的表之前還沒有這個使用者)
會提示註冊成功,然後跳轉到登陸介面
點選確定,跳轉到註冊介面
此時表格中就成功註冊進來一個交“韋明勳”的使用者
不足點,用姓名的唯一性來做約束,不太現實,因為同名同姓的人太多了,所以應該使用一個編號來(學號或教職工號)來做唯一約束才是可行辦法,但是這裡我為了方便,就用姓名來做約束,後期我會進行修改的。
好啦,到這裡就已經實現從資料庫判斷是否存在一個使用者名稱了,存在則提示註冊失敗,不存在則插入表格中,提示註冊成功。
我做的是登陸註冊是簡易頁面,沒有經過美化,有何不足,歡迎指導,共同進步!
相關文章
- java判斷mysql中資料庫是否存在JavaMySql資料庫
- MySQL判斷表名是否存在MySql
- jQuery 判斷使用者是否存在jQuery
- 判斷objectStore物件倉庫是否存在Object物件
- python 使用者註冊使用者名稱Python
- 檢查使用者名稱是否使用介面
- MFC下判斷資料夾是否存在,如不存在則建立資料夾
- JavaScript 判斷函式是否存在JavaScript函式
- golang判斷檔案是否存在Golang
- QJsonObject判斷欄位是否存在JSONObject
- postgresql如何判斷表是否存在SQL
- python 判斷檔案是否存在Python
- VBA判斷指定的資料夾或檔案是否存在
- 自動化介面測試,怎樣判斷 Bug 是否存在
- 如何從10億資料中快速判斷是否存在某一個元素
- 判斷Map集合中是否存在某一個key
- shell判斷系統路徑中是否存在空格
- Laravel 5 判斷條件是否存在Laravel
- 怎麼判斷mysql表是否存在MySql
- js判斷dom節點是否存在JS
- 初涉後端,還請見諒···By Ajax驗證註冊的賬號資料庫中是否存在後端資料庫
- sh指令碼判斷路徑是否存在指令碼
- 多個陣列,判斷鍵值是否存在從屬關係陣列
- C# 從登錄檔判斷指定ocx控制元件是否已註冊 以及獲取它的註冊路徑C#控制元件
- 【MSSQL】sqlserver 各種判斷是否存在(表名、函式、儲存過程.......)SQLServer函式儲存過程
- swing 實現使用者登入註冊介面(不使用資料庫)資料庫
- oracle中判斷欄位是否存在和新增表結構Oracle
- 登入介面:從資料庫中獲取資訊驗證登入(與註冊介面相聯絡)資料庫
- 如何判斷一個元素在億級資料中是否存在?
- 如何在億級資料中判斷一個元素是否存在?
- mysql如何判斷是否存在某個欄位MySql
- 如何判斷FMEA的存在是否還有意義?
- jquery怎麼樣判斷檔案是否存在jQuery
- Python科研武器庫 - 檔案/路徑操作 - 判斷路徑是否存在Python
- 寫個方法判斷陣列物件中是否存在某個物件陣列物件
- Go小工具系列——判斷元素是否存在於陣列中Go陣列
- 判斷a是否是int型別資料型別
- bash函式應用之:判斷函式是否存在函式