本文詳細介紹一個基於 Java Web 技術棧開發的學生就業資訊管理平台。系統旨在協助學校統計各班級學生的就業情況,提供企業資訊管理、學生資料維護、權限控制等核心功能。專案採用經典的 JSP + Servlet + MySQL 架構,適合作為 Java Web 入門實戰項目參考。
系統支援按班級查詢學生就業狀態,前端頁面將學生基本資料與職位資訊組合顯示。若學生已就業,可填寫具體就業單位、職位、薪資、入職時間等資訊;未就業則顯示為空。提供下拉選單式班級篩選與分頁功能,每頁預設顯示 10 條記錄。
企業模組包含計劃招聘時間、實際招聘時間、招聘老師記錄。招聘結束後可編輯填寫實際招聘時間與錄取學生,狀態自動更新為「已結束」;進行中則顯示「招聘中」。支援兩種查詢模式:按招聘批次下拉選擇,或按企業名稱關鍵字模糊查詢(使用 LIKE 語句)。
包含班級資訊、學生資訊的增刪改查(CRUD)。班級查詢支援關鍵字精確查詢;學生資訊展示姓名、性別、畢業院校、專業、畢業時間、聯絡方式等欄位。所有基礎資料操作均實現分頁顯示,採用 page.js 實現首頁/上一頁/下一頁/尾頁導航。
登入用戶表包含 permission 欄位(yes/no),區分管理員與普通教師權限:
個人資訊頁面提供修改密碼功能,確保帳號安全。
addCompany_action.java)@WebServlet("/addCompany.action")
public class addCompany_action extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 獲取表單參數
String name = req.getParameter("name");
String plantime = req.getParameter("plantime");
// 日期解析與物件封裝
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Company com = new Company();
com.setName(name);
com.setPlantime(sdf.parse(plantime));
com.setState("招聘中"); // 預設狀態
// 從 Session 獲取當前登入教師
User user = (User) req.getSession().getAttribute("user");
com.setTeach1(user.getName());
// 業務邏輯處理
new CompanyServiceImpl().addCompany(com);
resp.sendRedirect(req.getContextPath() + "/company.action");
}
}
editStudent_action.java)@WebServlet("/editStudent.action")
public class editStudent_action extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 根據 ID 查詢學生資訊並轉發至編輯頁
int studentId = Integer.parseInt(req.getParameter("id"));
Student stu = new StudentServiceImpl().getStudentById(studentId);
req.setAttribute("stu", stu);
req.getRequestDispatcher("/editStudent.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 接收表單數據並更新
Student stu = new Student();
stu.setId(Integer.parseInt(req.getParameter("id")));
stu.setName(req.getParameter("studentname"));
stu.setClassid(new ClassesServiceImpl()
.getClassesByName(req.getParameter("selectclass")).getId());
new StudentServiceImpl().editStudent(stu);
resp.sendRedirect(req.getContextPath() + "/student.action");
}
}
employ_action.java)核心邏輯包含:獲取所有班級名稱供下拉選單使用、根據選擇班級查詢學生列表、關聯查詢就業資訊表、計算總頁數與當前頁碼。使用 ArrayList 暫存關聯查詢結果,在 JSP 中通過索引匹配顯示。
page.js)function subfun() {
var id = $(this).attr("id");
var value = $("#pageIndex").val();
var count = $("#pageCount").val();
if (id == "first") { $("#pageIndex").val(1); }
else if (id == "previous") {
if (Number(value) == 1) return false;
$("#pageIndex").val(Number(value) - 1);
}
else if (id == "next") {
if (value == count) return false;
$("#pageIndex").val(Number(value) + 1);
}
else { $("#pageIndex").val(count); }
$("form").submit();
return false; // 阻止 a 標籤預設跳轉
}
employ.jsp)使用 JSTL 標籤庫實現動態渲染:
<c:forEach> 遍歷學生列表與就業資訊<c:if> 判斷是否已填寫就業資訊,顯示「填寫就業資訊」連結或直接展示公司/職位/薪資pageIndex、pageCount、pageNumber系統包含 6 張核心表:
| 表名 | 用途 |
|---|---|
| classes | 班級基本資訊 |
| company | 企業招聘資訊 |
| position | 職位資訊 |
| student | 學生基本資料 |
| employment_info | 學生就業詳細資訊 |
| login_user | 系統登入用戶與權限 |
亮點:完整實現了權限控制、多條件查詢、分頁顯示、關聯資料展示等企業級應用常見功能;代碼結構清晰,分層明確(Action、Service、Model)。
遺憾:未實現 Excel 導入導出功能。原計劃在就業資訊頁面右上角提供導入/導出按鈕,支援批量匯入學生資料與匯出就業統計報表,受限於時間未完成。
本專案作為 Java Web 基礎實戰教學案例,涵蓋了從資料庫設計、後端業務邏輯到前端交互的完整開發流程。雖然技術棧相對傳統(JSP/Servlet/JDBC),但核心設計模式(MVC 分層、Service 接口隔離、分頁插件封裝)仍具備參考價值。建議初學者在此基礎上嘗試引入 Spring MVC、MyBatis 等主流框架進行重構,並補全匯入匯出、圖表統計等進階功能。