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 添加登錄頁面
登錄頁面需要放置用戶名密碼輸入框,以及登錄按鈕。
這個頁面需要解釋下:
<form action="admin.jsp">
這是一個表單,表單是用來存放各種輸入內容比如文本框、密碼框、單選框、複選框。action="admin.jsp"
表示表單提交時,會把表單的數據傳遞給admin.jsp頁面。<input name="username" type="text" />
,text表示這是一個文本框,可以在其中輸入文本。name="username"
是這個文本框的標誌,當跳轉到admin.jsp頁面時,我們後臺代碼可以通過這個標識獲取這個文本框的輸入內容。<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其實也挺好用哈。