Java畢業設計實戰之養老院管理系統的實現
運行環境:
JDK1.8、tomcat8、eclipse、mysql5.6、Navicat
功能實現:
用戶: 用戶名,登錄密碼,姓名,性別,出生日期,用戶照片,聯系電話,郵箱,傢庭地址,註冊時間
老人: 老人編號,姓名,性別,年齡,老人照片,老人介紹,登記用戶,登記時間
房間類型: 房間類型id,房間類型名稱
房間: 房間編號,房間類型,房間名稱,房間主圖,房間價格,房間詳情,房間狀態
訂單: 訂單編號,入住房間,入住老人,入住日期,入住時間,訂單總金額,訂單狀態,訂單費用明細,訂單時間
老人看護: 記錄id,信息類別,信息標題,信息內容,發佈時間
接待: 接待記錄id,接待類別,接待主題,接待內容,接待日期
部門: 部門編號,部門名稱,成立日期,負責人
員工: 用戶名,登錄密碼,所在部門,姓名,性別,出生日期,員工照片,聯系電話,傢庭地址
工資: 工資id,員工,工資年份,工資月份,工資金額,發放日期,工資備註
用戶管理控制層:
//UserInfo管理控制層 @Controller @RequestMapping("/UserInfo") public class UserInfoController extends BaseController { /*業務層對象*/ @Resource UserInfoService userInfoService; @InitBinder("userInfo") public void initBinderUserInfo(WebDataBinder binder) { binder.setFieldDefaultPrefix("userInfo."); } /*跳轉到添加UserInfo視圖*/ @RequestMapping(value = "/add", method = RequestMethod.GET) public String add(Model model,HttpServletRequest request) throws Exception { model.addAttribute(new UserInfo()); return "UserInfo_add"; } /*客戶端ajax方式提交添加用戶信息*/ @RequestMapping(value = "/add", method = RequestMethod.POST) public void add(@Validated UserInfo userInfo, BindingResult br, Model model, HttpServletRequest request,HttpServletResponse response) throws Exception { String message = ""; boolean success = false; if (br.hasErrors()) { message = "輸入信息不符合要求!"; writeJsonResponse(response, success, message); return ; } if(userInfoService.getUserInfo(userInfo.getUser_name()) != null) { message = "用戶名已經存在!"; writeJsonResponse(response, success, message); return ; } try { userInfo.setUserPhoto(this.handlePhotoUpload(request, "userPhotoFile")); } catch(UserException ex) { message = "圖片格式不正確!"; writeJsonResponse(response, success, message); return ; } userInfoService.addUserInfo(userInfo); message = "用戶添加成功!"; success = true; writeJsonResponse(response, success, message); } /*ajax方式按照查詢條件分頁查詢用戶信息*/ @RequestMapping(value = { "/list" }, method = {RequestMethod.GET,RequestMethod.POST}) public void list(String user_name,String name,String birthDate,String telephone,Integer page,Integer rows, Model model, HttpServletRequest request,HttpServletResponse response) throws Exception { if (page==null || page == 0) page = 1; if (user_name == null) user_name = ""; if (name == null) name = ""; if (birthDate == null) birthDate = ""; if (telephone == null) telephone = ""; if(rows != 0)userInfoService.setRows(rows); List<UserInfo> userInfoList = userInfoService.queryUserInfo(user_name, name, birthDate, telephone, page); /*計算總的頁數和總的記錄數*/ userInfoService.queryTotalPageAndRecordNumber(user_name, name, birthDate, telephone); /*獲取到總的頁碼數目*/ int totalPage = userInfoService.getTotalPage(); /*當前查詢條件下總記錄數*/ int recordNumber = userInfoService.getRecordNumber(); response.setContentType("text/json;charset=UTF-8"); PrintWriter out = response.getWriter(); //將要被返回到客戶端的對象 JSONObject jsonObj=new JSONObject(); jsonObj.accumulate("total", recordNumber); JSONArray jsonArray = new JSONArray(); for(UserInfo userInfo:userInfoList) { JSONObject jsonUserInfo = userInfo.getJsonObject(); jsonArray.put(jsonUserInfo); } jsonObj.accumulate("rows", jsonArray); out.println(jsonObj.toString()); out.flush(); out.close(); } /*ajax方式按照查詢條件分頁查詢用戶信息*/ @RequestMapping(value = { "/listAll" }, method = {RequestMethod.GET,RequestMethod.POST}) public void listAll(HttpServletResponse response) throws Exception { List<UserInfo> userInfoList = userInfoService.queryAllUserInfo(); response.setContentType("text/json;charset=UTF-8"); PrintWriter out = response.getWriter(); JSONArray jsonArray = new JSONArray(); for(UserInfo userInfo:userInfoList) { JSONObject jsonUserInfo = new JSONObject(); jsonUserInfo.accumulate("user_name", userInfo.getUser_name()); jsonUserInfo.accumulate("name", userInfo.getName()); jsonArray.put(jsonUserInfo); } out.println(jsonArray.toString()); out.flush(); out.close(); } /*前臺按照查詢條件分頁查詢用戶信息*/ @RequestMapping(value = { "/frontlist" }, method = {RequestMethod.GET,RequestMethod.POST}) public String frontlist(String user_name,String name,String birthDate,String telephone,Integer currentPage, Model model, HttpServletRequest request) throws Exception { if (currentPage==null || currentPage == 0) currentPage = 1; if (user_name == null) user_name = ""; if (name == null) name = ""; if (birthDate == null) birthDate = ""; if (telephone == null) telephone = ""; List<UserInfo> userInfoList = userInfoService.queryUserInfo(user_name, name, birthDate, telephone, currentPage); /*計算總的頁數和總的記錄數*/ userInfoService.queryTotalPageAndRecordNumber(user_name, name, birthDate, telephone); /*獲取到總的頁碼數目*/ int totalPage = userInfoService.getTotalPage(); /*當前查詢條件下總記錄數*/ int recordNumber = userInfoService.getRecordNumber(); request.setAttribute("userInfoList", userInfoList); request.setAttribute("totalPage", totalPage); request.setAttribute("recordNumber", recordNumber); request.setAttribute("currentPage", currentPage); request.setAttribute("user_name", user_name); request.setAttribute("name", name); request.setAttribute("birthDate", birthDate); request.setAttribute("telephone", telephone); return "UserInfo/userInfo_frontquery_result"; } /*前臺查詢UserInfo信息*/ @RequestMapping(value="/{user_name}/frontshow",method=RequestMethod.GET) public String frontshow(@PathVariable String user_name,Model model,HttpServletRequest request) throws Exception { /*根據主鍵user_name獲取UserInfo對象*/ UserInfo userInfo = userInfoService.getUserInfo(user_name); request.setAttribute("userInfo", userInfo); return "UserInfo/userInfo_frontshow"; } /*ajax方式顯示用戶修改jsp視圖頁*/ @RequestMapping(value="/{user_name}/update",method=RequestMethod.GET) public void update(@PathVariable String user_name,Model model,HttpServletRequest request,HttpServletResponse response) throws Exception { /*根據主鍵user_name獲取UserInfo對象*/ UserInfo userInfo = userInfoService.getUserInfo(user_name); response.setContentType("text/json;charset=UTF-8"); PrintWriter out = response.getWriter(); //將要被返回到客戶端的對象 JSONObject jsonUserInfo = userInfo.getJsonObject(); out.println(jsonUserInfo.toString()); out.flush(); out.close(); } /*ajax方式更新用戶信息*/ @RequestMapping(value = "/{user_name}/update", method = RequestMethod.POST) public void update(@Validated UserInfo userInfo, BindingResult br, Model model, HttpServletRequest request,HttpServletResponse response) throws Exception { String message = ""; boolean success = false; if (br.hasErrors()) { message = "輸入的信息有錯誤!"; writeJsonResponse(response, success, message); return; } String userPhotoFileName = this.handlePhotoUpload(request, "userPhotoFile"); if(!userPhotoFileName.equals("upload/NoImage.jpg"))userInfo.setUserPhoto(userPhotoFileName); try { userInfoService.updateUserInfo(userInfo); message = "用戶更新成功!"; success = true; writeJsonResponse(response, success, message); } catch (Exception e) { e.printStackTrace(); message = "用戶更新失敗!"; writeJsonResponse(response, success, message); } } /*刪除用戶信息*/ @RequestMapping(value="/{user_name}/delete",method=RequestMethod.GET) public String delete(@PathVariable String user_name,HttpServletRequest request) throws UnsupportedEncodingException { try { userInfoService.deleteUserInfo(user_name); request.setAttribute("message", "用戶刪除成功!"); return "message"; } catch (Exception e) { e.printStackTrace(); request.setAttribute("error", "用戶刪除失敗!"); return "error"; } } /*ajax方式刪除多條用戶記錄*/ @RequestMapping(value="/deletes",method=RequestMethod.POST) public void delete(String user_names,HttpServletRequest request,HttpServletResponse response) throws IOException, JSONException { String message = ""; boolean success = false; try { int count = userInfoService.deleteUserInfos(user_names); success = true; message = count + "條記錄刪除成功"; writeJsonResponse(response, success, message); } catch (Exception e) { //e.printStackTrace(); message = "有記錄存在外鍵約束,刪除失敗"; writeJsonResponse(response, success, message); } } /*按照查詢條件導出用戶信息到Excel*/ @RequestMapping(value = { "/OutToExcel" }, method = {RequestMethod.GET,RequestMethod.POST}) public void OutToExcel(String user_name,String name,String birthDate,String telephone, Model model, HttpServletRequest request,HttpServletResponse response) throws Exception { if(user_name == null) user_name = ""; if(name == null) name = ""; if(birthDate == null) birthDate = ""; if(telephone == null) telephone = ""; List<UserInfo> userInfoList = userInfoService.queryUserInfo(user_name,name,birthDate,telephone); ExportExcelUtil ex = new ExportExcelUtil(); String _title = "UserInfo信息記錄"; String[] headers = { "用戶名","姓名","性別","出生日期","用戶照片","聯系電話","郵箱","註冊時間"}; List<String[]> dataset = new ArrayList<String[]>(); for(int i=0;i<userInfoList.size();i++) { UserInfo userInfo = userInfoList.get(i); dataset.add(new String[]{userInfo.getUser_name(),userInfo.getName(),userInfo.getGender(),userInfo.getBirthDate(),userInfo.getUserPhoto(),userInfo.getTelephone(),userInfo.getEmail(),userInfo.getRegTime()}); } /* OutputStream out = null; try { out = new FileOutputStream("C://output.xls"); ex.exportExcel(title,headers, dataset, out); out.close(); } catch (Exception e) { e.printStackTrace(); } */ OutputStream out = null;//創建一個輸出流對象 try { out = response.getOutputStream();// response.setHeader("Content-disposition","attachment; filename="+"UserInfo.xls");//filename是下載的xls的名,建議最好用英文 response.setContentType("application/msexcel;charset=UTF-8");//設置類型 response.setHeader("Pragma","No-cache");//設置頭 response.setHeader("Cache-Control","no-cache");//設置頭 response.setDateHeader("Expires", 0);//設置日期頭 String rootPath = request.getSession().getServletContext().getRealPath("/"); ex.exportExcel(rootPath,_title,headers, dataset, out); out.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ try{ if(out!=null){ out.close(); } }catch(IOException e){ e.printStackTrace(); } } } }
管理員管理控制層:
@Controller @SessionAttributes("username") public class SystemController { @Resource AdminService adminService; @Resource UserInfoService userInfoService; @RequestMapping(value="/login",method=RequestMethod.GET) public String login(Model model) { model.addAttribute(new Admin()); return "login"; } //前臺用戶登錄 @RequestMapping(value="/frontLogin",method=RequestMethod.POST) public void frontLogin(@RequestParam("userName")String userName,@RequestParam("password")String password,HttpServletResponse response,HttpSession session) throws Exception { boolean success = true; String msg = ""; if (!userInfoService.checkLogin(userName, password)) { msg = userInfoService.getErrMessage(); success = false; } if(success) { session.setAttribute("user_name", userName); } response.setContentType("text/json;charset=UTF-8"); PrintWriter out = response.getWriter(); //將要被返回到客戶端的對象 JSONObject json=new JSONObject(); json.accumulate("success", success); json.accumulate("msg", msg); out.println(json.toString()); out.flush(); out.close(); } @RequestMapping(value="/login",method=RequestMethod.POST) public void login(@Validated Admin admin,BindingResult br,Model model,HttpServletRequest request,HttpServletResponse response,HttpSession session) throws Exception { boolean success = true; String msg = ""; if(br.hasErrors()) { msg = br.getAllErrors().toString(); success = false; } if (!adminService.checkLogin(admin)) { msg = adminService.getErrMessage(); success = false; } if(success) { session.setAttribute("username", admin.getUsername()); } response.setContentType("text/json;charset=UTF-8"); PrintWriter out = response.getWriter(); //將要被返回到客戶端的對象 JSONObject json=new JSONObject(); json.accumulate("success", success); json.accumulate("msg", msg); out.println(json.toString()); out.flush(); out.close(); } @RequestMapping("/logout") public String logout(Model model,HttpSession session) { model.asMap().remove("username"); session.invalidate(); return "redirect:/login"; } @RequestMapping(value="/changePassword",method=RequestMethod.POST) public String ChangePassword(String oldPassword,String newPassword,String newPassword2,HttpServletRequest request,HttpSession session) throws Exception { if(oldPassword.equals("")) throw new UserException("請輸入舊密碼!"); if(newPassword.equals("")) throw new UserException("請輸入新密碼!"); if(!newPassword.equals(newPassword2)) throw new UserException("兩次新密碼輸入不一致"); String username = (String)session.getAttribute("username"); if(username == null) throw new UserException("session會話超時,請重新登錄系統!"); Admin admin = adminService.findAdminByUserName(username); if(!admin.getPassword().equals(oldPassword)) throw new UserException("輸入的舊密碼不正確!"); try { adminService.changePassword(username,newPassword); request.setAttribute("message", java.net.URLEncoder.encode( "密碼修改成功!", "GBK")); return "message"; } catch (Exception e) { e.printStackTrace(); request.setAttribute("error", java.net.URLEncoder .encode("密碼修改失敗!","GBK")); return "error"; } } }
房間管理控制層:
//Room管理控制層 @Controller @RequestMapping("/Room") public class RoomController extends BaseController { /*業務層對象*/ @Resource RoomService roomService; @Resource RoomTypeService roomTypeService; @InitBinder("roomTypeObj") public void initBinderroomTypeObj(WebDataBinder binder) { binder.setFieldDefaultPrefix("roomTypeObj."); } @InitBinder("room") public void initBinderRoom(WebDataBinder binder) { binder.setFieldDefaultPrefix("room."); } /*跳轉到添加Room視圖*/ @RequestMapping(value = "/add", method = RequestMethod.GET) public String add(Model model,HttpServletRequest request) throws Exception { model.addAttribute(new Room()); /*查詢所有的RoomType信息*/ List<RoomType> roomTypeList = roomTypeService.queryAllRoomType(); request.setAttribute("roomTypeList", roomTypeList); return "Room_add"; } /*客戶端ajax方式提交添加房間信息*/ @RequestMapping(value = "/add", method = RequestMethod.POST) public void add(@Validated Room room, BindingResult br, Model model, HttpServletRequest request,HttpServletResponse response) throws Exception { String message = ""; boolean success = false; if (br.hasErrors()) { message = "輸入信息不符合要求!"; writeJsonResponse(response, success, message); return ; } if(roomService.getRoom(room.getRoomNo()) != null) { message = "房間編號已經存在!"; writeJsonResponse(response, success, message); return ; } try { room.setMainPhoto(this.handlePhotoUpload(request, "mainPhotoFile")); } catch(UserException ex) { message = "圖片格式不正確!"; writeJsonResponse(response, success, message); return ; } roomService.addRoom(room); message = "房間添加成功!"; success = true; writeJsonResponse(response, success, message); } /*ajax方式按照查詢條件分頁查詢房間信息*/ @RequestMapping(value = { "/list" }, method = {RequestMethod.GET,RequestMethod.POST}) public void list(String roomNo,@ModelAttribute("roomTypeObj") RoomType roomTypeObj,String roomName,String roomState,Integer page,Integer rows, Model model, HttpServletRequest request,HttpServletResponse response) throws Exception { if (page==null || page == 0) page = 1; if (roomNo == null) roomNo = ""; if (roomName == null) roomName = ""; if (roomState == null) roomState = ""; if(rows != 0)roomService.setRows(rows); List<Room> roomList = roomService.queryRoom(roomNo, roomTypeObj, roomName, roomState, page); /*計算總的頁數和總的記錄數*/ roomService.queryTotalPageAndRecordNumber(roomNo, roomTypeObj, roomName, roomState); /*獲取到總的頁碼數目*/ int totalPage = roomService.getTotalPage(); /*當前查詢條件下總記錄數*/ int recordNumber = roomService.getRecordNumber(); response.setContentType("text/json;charset=UTF-8"); PrintWriter out = response.getWriter(); //將要被返回到客戶端的對象 JSONObject jsonObj=new JSONObject(); jsonObj.accumulate("total", recordNumber); JSONArray jsonArray = new JSONArray(); for(Room room:roomList) { JSONObject jsonRoom = room.getJsonObject(); jsonArray.put(jsonRoom); } jsonObj.accumulate("rows", jsonArray); out.println(jsonObj.toString()); out.flush(); out.close(); } /*ajax方式按照查詢條件分頁查詢房間信息*/ @RequestMapping(value = { "/listAll" }, method = {RequestMethod.GET,RequestMethod.POST}) public void listAll(HttpServletResponse response) throws Exception { List<Room> roomList = roomService.queryAllRoom(); response.setContentType("text/json;charset=UTF-8"); PrintWriter out = response.getWriter(); JSONArray jsonArray = new JSONArray(); for(Room room:roomList) { JSONObject jsonRoom = new JSONObject(); jsonRoom.accumulate("roomNo", room.getRoomNo()); jsonRoom.accumulate("roomName", room.getRoomName()); jsonArray.put(jsonRoom); } out.println(jsonArray.toString()); out.flush(); out.close(); } /*前臺按照查詢條件分頁查詢房間信息*/ @RequestMapping(value = { "/frontlist" }, method = {RequestMethod.GET,RequestMethod.POST}) public String frontlist(String roomNo,@ModelAttribute("roomTypeObj") RoomType roomTypeObj,String roomName,String roomState,Integer currentPage, Model model, HttpServletRequest request) throws Exception { if (currentPage==null || currentPage == 0) currentPage = 1; if (roomNo == null) roomNo = ""; if (roomName == null) roomName = ""; if (roomState == null) roomState = ""; List<Room> roomList = roomService.queryRoom(roomNo, roomTypeObj, roomName, roomState, currentPage); /*計算總的頁數和總的記錄數*/ roomService.queryTotalPageAndRecordNumber(roomNo, roomTypeObj, roomName, roomState); /*獲取到總的頁碼數目*/ int totalPage = roomService.getTotalPage(); /*當前查詢條件下總記錄數*/ int recordNumber = roomService.getRecordNumber(); request.setAttribute("roomList", roomList); request.setAttribute("totalPage", totalPage); request.setAttribute("recordNumber", recordNumber); request.setAttribute("currentPage", currentPage); request.setAttribute("roomNo", roomNo); request.setAttribute("roomTypeObj", roomTypeObj); request.setAttribute("roomName", roomName); request.setAttribute("roomState", roomState); List<RoomType> roomTypeList = roomTypeService.queryAllRoomType(); request.setAttribute("roomTypeList", roomTypeList); return "Room/room_frontquery_result"; } /*前臺查詢Room信息*/ @RequestMapping(value="/{roomNo}/frontshow",method=RequestMethod.GET) public String frontshow(@PathVariable String roomNo,Model model,HttpServletRequest request) throws Exception { /*根據主鍵roomNo獲取Room對象*/ Room room = roomService.getRoom(roomNo); List<RoomType> roomTypeList = roomTypeService.queryAllRoomType(); request.setAttribute("roomTypeList", roomTypeList); request.setAttribute("room", room); return "Room/room_frontshow"; } /*ajax方式顯示房間修改jsp視圖頁*/ @RequestMapping(value="/{roomNo}/update",method=RequestMethod.GET) public void update(@PathVariable String roomNo,Model model,HttpServletRequest request,HttpServletResponse response) throws Exception { /*根據主鍵roomNo獲取Room對象*/ Room room = roomService.getRoom(roomNo); response.setContentType("text/json;charset=UTF-8"); PrintWriter out = response.getWriter(); //將要被返回到客戶端的對象 JSONObject jsonRoom = room.getJsonObject(); out.println(jsonRoom.toString()); out.flush(); out.close(); } /*ajax方式更新房間信息*/ @RequestMapping(value = "/{roomNo}/update", method = RequestMethod.POST) public void update(@Validated Room room, BindingResult br, Model model, HttpServletRequest request,HttpServletResponse response) throws Exception { String message = ""; boolean success = false; if (br.hasErrors()) { message = "輸入的信息有錯誤!"; writeJsonResponse(response, success, message); return; } String mainPhotoFileName = this.handlePhotoUpload(request, "mainPhotoFile"); if(!mainPhotoFileName.equals("upload/NoImage.jpg"))room.setMainPhoto(mainPhotoFileName); try { roomService.updateRoom(room); message = "房間更新成功!"; success = true; writeJsonResponse(response, success, message); } catch (Exception e) { e.printStackTrace(); message = "房間更新失敗!"; writeJsonResponse(response, success, message); } } /*刪除房間信息*/ @RequestMapping(value="/{roomNo}/delete",method=RequestMethod.GET) public String delete(@PathVariable String roomNo,HttpServletRequest request) throws UnsupportedEncodingException { try { roomService.deleteRoom(roomNo); request.setAttribute("message", "房間刪除成功!"); return "message"; } catch (Exception e) { e.printStackTrace(); request.setAttribute("error", "房間刪除失敗!"); return "error"; } } /*ajax方式刪除多條房間記錄*/ @RequestMapping(value="/deletes",method=RequestMethod.POST) public void delete(String roomNos,HttpServletRequest request,HttpServletResponse response) throws IOException, JSONException { String message = ""; boolean success = false; try { int count = roomService.deleteRooms(roomNos); success = true; message = count + "條記錄刪除成功"; writeJsonResponse(response, success, message); } catch (Exception e) { //e.printStackTrace(); message = "有記錄存在外鍵約束,刪除失敗"; writeJsonResponse(response, success, message); } } /*按照查詢條件導出房間信息到Excel*/ @RequestMapping(value = { "/OutToExcel" }, method = {RequestMethod.GET,RequestMethod.POST}) public void OutToExcel(String roomNo,@ModelAttribute("roomTypeObj") RoomType roomTypeObj,String roomName,String roomState, Model model, HttpServletRequest request,HttpServletResponse response) throws Exception { if(roomNo == null) roomNo = ""; if(roomName == null) roomName = ""; if(roomState == null) roomState = ""; List<Room> roomList = roomService.queryRoom(roomNo,roomTypeObj,roomName,roomState); ExportExcelUtil ex = new ExportExcelUtil(); String _title = "Room信息記錄"; String[] headers = { "房間編號","房間類型","房間名稱","房間主圖","房間價格","房間狀態"}; List<String[]> dataset = new ArrayList<String[]>(); for(int i=0;i<roomList.size();i++) { Room room = roomList.get(i); dataset.add(new String[]{room.getRoomNo(),room.getRoomTypeObj().getTypeName(),room.getRoomName(),room.getMainPhoto(),room.getPrice() + "",room.getRoomState()}); } /* OutputStream out = null; try { out = new FileOutputStream("C://output.xls"); ex.exportExcel(title,headers, dataset, out); out.close(); } catch (Exception e) { e.printStackTrace(); } */ OutputStream out = null;//創建一個輸出流對象 try { out = response.getOutputStream();// response.setHeader("Content-disposition","attachment; filename="+"Room.xls");//filename是下載的xls的名,建議最好用英文 response.setContentType("application/msexcel;charset=UTF-8");//設置類型 response.setHeader("Pragma","No-cache");//設置頭 response.setHeader("Cache-Control","no-cache");//設置頭 response.setDateHeader("Expires", 0);//設置日期頭 String rootPath = request.getSession().getServletContext().getRealPath("/"); ex.exportExcel(rootPath,_title,headers, dataset, out); out.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ try{ if(out!=null){ out.close(); } }catch(IOException e){ e.printStackTrace(); } } } }
到此這篇關於Java畢業設計實戰之養老院管理系統的實現的文章就介紹到這瞭,更多相關Java 養老院管理系統內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 淺談springMVC中controller的幾種返回類型
- SpringMVC響應視圖和結果視圖詳解
- SpringMVC攔截器超詳細解讀
- Spring MVC中@Controller和@RequestMapping註解使用
- 基於SpringMVC @RequestMapping的參數和用法