[手把手教你做畢設](第一季)基於JSP+MySQL的簡單校園新聞網站(6)

1. 任務

之前已經實現了博客列表的展示、選擇一篇博客後具體內容的展示,這兩個頁面。

本篇實現下管理員登錄功能。

2. 具體功能

點擊登錄按鈕後,跳轉到登錄頁面login.jsp,在登錄頁面輸入用戶名密碼,如果登錄成功則跳轉管理頁面admin.jsp,登錄失敗則跳轉登錄失敗信息頁面error_nologin.jsp

3. 開發流程

3.1 點擊登錄按鈕

在登錄按鈕中添加跳轉鏈接,點擊後跳轉login.jsp。

	<!-- view.jsp頁面部分代碼 -->
	<div class="header-bar">
		<span class="header-title">SchoolNews--校園新聞網</span> <a
			class="header-button" href="login.jsp">登錄</a>
	</div>

3.2 添加登錄頁面

登錄頁面需要放置用戶名密碼輸入框,以及登錄按鈕。

這個頁面需要解釋下:

  1. <form action="admin.jsp">這是一個表單,表單是用來存放各種輸入內容比如文本框、密碼框、單選框、複選框。
  2. action="admin.jsp"表示表單提交時,會把表單的數據傳遞給admin.jsp頁面。
  3. <input name="username" type="text" />,text表示這是一個文本框,可以在其中輸入文本。name="username"是這個文本框的標誌,當跳轉到admin.jsp頁面時,我們後臺代碼可以通過這個標識獲取這個文本框的輸入內容。
  4. <input type="submit" value="登錄">,submit表示提交表單的按鈕,所以點擊這個按鈕時,表單內容會提交給指定的admin.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>新聞瀏覽</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
	<div class="header-bar">
		<span class="header-title">SchoolNews--校園新聞網</span> <a
			class="header-button" href="login.jsp">登錄</a>
	</div>
	<form action="admin.jsp" method="post">
		<div>
			用戶名:<input name="username" type="text" />
		</div>
		<div>
			密碼:<input name="password" type="password" />
		</div>
		<div>
			<input type="submit" value="登錄">
		</div>
	</form>
</body>
</html>

該頁面效果如下:
在這裏插入圖片描述

3.3 判斷登錄狀態

我們在admin.jsp判斷用戶名和密碼是否正確,如果錯誤則跳轉到錯誤信息頁面error_nologin.jsp,如果用戶名密碼正確則留在admin.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>管理頁面</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
	<%
		//支持中文編碼
		request.setCharacterEncoding("utf-8");
		//獲取表單輸入的用戶名
		String inputUsername = request.getParameter("username");
		//獲取表單輸入的密碼
		String inpputPassword = request.getParameter("password");
		//如果沒輸入用戶名密碼,則跳轉錯誤頁
		if (inputUsername == null || "".equals(inputUsername) || inpputPassword == null
				|| "".equals(inpputPassword)) {
			request.getRequestDispatcher("error_nologin.jsp").forward(request, response);
			return;
		}
		//配置數據庫
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/schoolnews?useUnicode=true&characterEncoding=utf8";
		String username = "root";
		String password = "Easy@0122";
		Connection conn = DriverManager.getConnection(url, username, password);
		//設置sql,查詢是否存在用戶名和密碼都匹配的用戶信息
		String sql = "select * from user where username=? and password=?";
		PreparedStatement st = conn.prepareStatement(sql);// 在此次傳入,進行預編譯
		st.setString(1, inputUsername);
		st.setString(2, inpputPassword);
		//執行sql查詢
		ResultSet rs = st.executeQuery();
		//如果查詢結果不存在,則表示用戶名密碼錯誤,跳轉到錯誤頁
		if (rs.next() == false) {
			request.getRequestDispatcher("error_nologin.jsp").forward(request, response);
			return;
		}
	%>
	<div class="header-bar">
		<span class="header-title">SchoolNews--管理後臺</span> <a
			class="header-button" href="#">歡迎您:<%=rs.getString("username")%></a>
	</div>
	<h1 class="article-title">發佈新聞</h1>
</body>
</html>

3.4 開發錯誤信息頁

這個比較簡單,顯示錯誤信息即可。

<%@ 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>錯誤提示</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
	<h1>請先登錄!</h1>
</body>
</html>

4. 測試

在數據庫中添加一個用戶信息用戶測試:
在這裏插入圖片描述
打開登錄頁,並輸入用戶名密碼:
在這裏插入圖片描述
點擊登錄按鈕後,跳轉後臺頁面:
在這裏插入圖片描述如果故意不輸入用戶名密碼,或者輸入的跟數據庫中不匹配,則跳轉錯誤頁面:
在這裏插入圖片描述

5. 小結

思路還是很清晰的,代碼也很簡單,JSP其實也挺好用哈。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章