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

1. 任務

之前已經實現了:

  1. 新聞列表瀏覽
  2. 新聞內容展示
  3. 登錄成功後跳轉管理後臺頁面
  4. 登錄失敗後跳轉錯誤信息頁面

本篇在登錄成功後管理後臺頁面admin.jsp,添加發布新聞的功能。

2. 具體功能

可以輸入新聞標題、內容等信息後,點擊發布,則數據庫內新增一條新聞。

此時如果打開新聞列表瀏覽頁,能看到新增的新聞信息。

3. 開發流程

3.1 查看admin.jsp

之前admin.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.2 添加發布新聞的表單

我們在body區域添加表單,以便讓管理員輸入新聞的標題、內容等信息。

當我們點擊提交時,會把內容提交給publish.jsp頁面,同時類型、標題、時間、內容等信息會按照指定的name屬性傳遞給publish.jsp頁面。

<h1 class="article-title">發佈新聞</h1>
	<form action="publish.jsp" method="post">
		<div>
			類型:<input name="type" type="text" />
		</div>
		<div>
			標題:<input name="title" type="text" />
		</div>
		<div>
			時間:<input name="time" type="date" />
		</div>
		<div>
			內容:<br>
			<textarea name="content" rows="10" cols="100">
			</textarea>
		</div>
		<div>
			<input type="submit" value="提交">
		</div>
	</form>

3.3 開發publish.jsp頁面

我們在publish.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");
		// 連接數據庫
		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 = "insert into news(type,title,time,content)values(?,?,?,?)";
		PreparedStatement st = conn.prepareStatement(sql);// 在此次傳入,進行預編譯
		// 將表單傳遞過來的數據,放入sql語句指定位置
		st.setString(1, request.getParameter("type"));
		st.setString(2, request.getParameter("title"));
		st.setString(3, request.getParameter("time"));
		st.setString(4, request.getParameter("content"));
		// 執行sql
		st.execute();
	%>
	<div class="header-bar">
		<span class="header-title">SchoolNews--管理後臺</span>
	</div>
	<h1>發佈成功</h1>
</body>
</html>

4. 測試

使用用戶名、密碼登錄:
在這裏插入圖片描述
填寫新聞信息:
在這裏插入圖片描述
點擊提交後提示發佈成功:
在這裏插入圖片描述
返回view.jsp頁面,發現已經有新的新聞了:
在這裏插入圖片描述

小結

所有功能都完畢了,JSP+MySQL足夠簡單,很容易理解,可以視爲最初級的入門項目。

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