Java web連接數據庫實現登錄功能 ; jsp連接MySQL或SQL server數據庫的jar包也在這裏哦!

【深夜放毒,記錄生活^_^】

  學了HTML之後 , 一直想寫一個能夠實現登錄功能的小網頁 ,終於……現在開始學習數據庫,經過查閱資料,創建了很簡單的一個java web小項目來實現登陸操作,界面不怎麼美觀,大家見笑了,哈哈。
  首先,我們先進行準備工作:下載連接數據庫的jar包,這裏我用百度網盤分享給大家吧 - -> MySQ的jar包點我!提取碼:v5sd
      SQL server的點我!提取碼:ra6f

下載完之後請記住路徑,我們創建一個java web項目,請打開eclipse 新建項目 – >新建一個動態的java web 項目;


在這裏插入圖片描述
這裏我給它起名就叫做Test_01,哈哈
在這裏插入圖片描述
然後,打開項目,接着依次打開WebContent – > WEB-INF目錄
在這裏插入圖片描述
將剛纔下載好的jar包放入其中,我們直接copy過來即可,然後我們發現項目中多了這個,代表導入成功,恭喜你!
在這裏插入圖片描述
然後我們先利用java文件來連接數據庫,打開項目列表中的src文件夾(新建兩個包,如下圖):
在這裏插入圖片描述
然後我們在包com.test.dao裏面創建兩個java文件,一個是Test.java, 一個是UserDao.java
Test.java代碼如下:

public class Test {
	
	private int id;
	private String name;
	private int number;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return number;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}

	public void setAge(int age) {
		this.number = age;
	}
	
	private Test()
	{
		
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

UserDao.java代碼如下(進行查詢,插入,刪除,修改操作):
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.chap01.dbuitl.DBConnect;

public class UserDao {
		
		private Test test;

		public Test getTest() {
			return test;
		}


		public void setTest(Test test) {
			this.test = test;
		}


		@SuppressWarnings("null")
		public static void main(String[] args) throws SQLException {
			
			DBConnect dbConnect = new DBConnect();
			Connection connection = dbConnect.getConnection();
			Statement statement = null;
			
			try {
				
				statement = connection.createStatement();
				
			}catch(SQLException e) 
			{
				e.printStackTrace();
			}
			
			ResultSet resultSet = null;
			int resultSet2 = 0;
			
	    	
			String sql2 = "insert into zhang(id) values('8')"; 		//插入
			
			try
			{
				resultSet2 = statement.executeUpdate(sql2);
			}catch(SQLException e)
			{
				e.printStackTrace();
			}
			
			while(resultSet2 > 0)     									//返回值:受影響的行數;
			{
				System.out.println("插入成功!");
				break;
			}
			
			
			String update = "update zhang set name =2 where id = 8"; 	//更新
			int result = 0;
			try
			{
				result = statement.executeUpdate(update);
			}catch(SQLException s)
			{
				s.printStackTrace();
			}
			while(result > 0)
			{
				System.out.println("更新成功!");
				break;
			}
				
			String del = "delete from zhang where id=8";				//刪除
			int ResultSet = 0;
			try
			{
				ResultSet = statement.executeUpdate(del);
			}catch(SQLException d)
			{
				d.printStackTrace();
			}
			
			while(ResultSet > 0)
			{
				System.out.println("刪除成功!");
				break;
			}
			
			
			String sql = "SELECT *FROM zhang where id>0";		
			
			try
			{
				resultSet = statement.executeQuery(sql);
				
			}catch(SQLException e)
			{
				e.printStackTrace();
			}
			
			
			try
			{
				while(resultSet.next())
				{
					int number = resultSet.getInt("id");
					String name = resultSet.getString("name");
					int number2 = resultSet.getInt("number");
					int phone1 = resultSet.getInt("phone1");
					int phone2 = resultSet.getInt("phone2");
					String phone3 = resultSet.getString("mobilePhone");	//verchar 類型的數據直接用String類型的變量接收;
					String home = resultSet.getString("home");
					
					System.out.print("編號: " + number);
					System.out.print(" 名字: " + name);
					System.out.print(" 學號: " + number2);
					System.out.print(" 電話號碼: " + phone1 + phone2);
					System.out.print(" 家鄉: " + home);
					System.out.println(" 手機號碼: " + phone3);
					
				}
				resultSet.close();
			}catch(SQLException q)
			{
				q.printStackTrace();
			}
				
		}

	}

緊接着,我們在com.test.dbutil包中新建Java文件DBConnect.java,代碼如下:
package com.chap01.dbuitl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnect {
	private static String DBDriver = "com.mysql.jdbc.Driver";
	private static String DBUrl = "jdbc:mysql://localhost:3306/usertest";	//最後面usertest是數據庫的名字
	private static String DBUser = "root";
	private static String DBPass = "";		//在這裏填寫你的密碼
	private static Connection connection = null;
	Statement statement = null;
	ResultSet resultSet = null;
	static {
		try {
			Class.forName(DBDriver);
			
			System.out.println("連接數據庫中···");
			
		}catch(ClassNotFoundException e)
		{
			e.printStackTrace();
		}
	}
	public static Connection getConnection() { 										//與數據庫建立連接的方法
		try {
			connection = DriverManager.getConnection(DBUrl, DBUser, DBPass);
			System.out.println("數據庫連接成功");
		
		}catch(SQLException e) {
			
			System.out.println("失敗");
			e.printStackTrace();
			
		}
		return connection;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

我們來看一下我的數據庫信息:數據庫uesrtest中有一個表“zhang”

在這裏插入圖片描述

表中數據如下:

在這裏插入圖片描述

我們可以看到有七個字段,對應上面的代碼,現在我們運行一下UserDao.java,如下圖:

在這裏插入圖片描述

運行結果如下:

在這裏插入圖片描述

好的我們數據庫連接成功並未已經獲取到其中的數據信息,接下來我們要用jsp文件來實現登錄的操作,步驟如下:

然後呢,我們打開右擊WebContent文件夾,新建幾個jsp文件 (login.jsp是登陸頁面 , deal.jsp是進行登陸的處理界面,main.jsp是登陸成功的界面,error.jsp是登錄失敗的界面)在這裏插入圖片描述

修改login.jsp中的代碼,製作登陸頁面,代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 登錄界面 -->
	<h1>歡迎使用登錄管理系統!</h1>
	
	<!-- action 提交請求的地址 method 處理請求的方式 -->
	<form action="deal.jsp" method="post">
		
		<table>
			<tr>
				<td>請輸入你的賬號</td>
				<td>
				<input type="text" name="userName"/>
				</td>
			</tr>
			<tr>
				<td>請輸入你的密碼</td>
				<td>
				<input type="password" name="userPwd"/>
				</td>
			</tr>
			<tr>
				<td></td>
				<td>
				<input type="submit"/>
				</td>
			</tr>
		</table>
	
	</form>
	
</body>
</html>
運行一下,結果如下:

在這裏插入圖片描述

很簡單的一個登錄界面,接下來我們繼續,修改處理文件deal.jsp的代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	request.setCharacterEncoding("UTF-8");
	//獲取用戶輸入的賬號和密碼
	String username = request.getParameter("userName");
	String password = request.getParameter("userPwd");
	String DBDriver = "com.mysql.jdbc.Driver";
	String DBUrl = "jdbc:mysql://localhost:3306/usertest";		//最後是數據庫的名字
	String DBUser = "root";
	String DBPass = "";			//數據庫密碼
	
	//根據獲得的用戶名到數據庫查找用戶
	
	Connection c = null;
	
	try{
		Class.forName("com.mysql.jdbc.Driver");
		c = DriverManager.getConnection(DBUrl, DBUser, DBPass);
		out.print(username);
		String sql = "select * from zhang where number = '" + username + "'";
		PreparedStatement st = c.prepareStatement(sql);
		ResultSet rs = st.executeQuery();
		
		//判斷用戶是否存在
		if(rs.next()){
			//獲取密碼
			String pwd = rs.getString("mobilephone");
			//判斷密碼是否相同
			if(!pwd.equals(password)){
				response.sendRedirect("error.jsp");//密碼錯誤跳轉error界面
			}
			response.sendRedirect("main.jsp");
		}else{
			response.sendRedirect("error.jsp");
		}
		
		
		
	}catch(Exception e){
		e.printStackTrace();
	}



%>
</body>
</html>
接着我們修改error.jsp內容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h4>Error!</h4>
	<br>
	<h4>學號不存在!對不起,你不是我們的人員!即將跳轉登陸頁面!</h4>
			//5秒後跳轉到登錄頁面
			<% response.setHeader("refresh","5;url=login.jsp"); %>
			
</body>
</html>
接下來就剩登陸成功的界面,修改登陸成功的main.jsp代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
 <body style="background-color:lightblue">
        <%
            out.println("Welcome!" );
        %>
    </body>
</html>
到此我們已經完成,看一下效果:

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

這裏只做一個小小的示範,大家可以自己修改一下界面讓界面更美觀,也可以添加其他的功能,比如利用轉發來處理賬號錯誤和密碼錯誤的情況並進行反饋到用戶。新手上路,請多多關照!
謝謝大家的支持,感謝觀看!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章