MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯彙集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不須要從新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。數據庫
模型通常有兩類,一種是跟數據庫的表結構對應的一個類,還有一種,有時候咱們頁面顯示的內容須要多表鏈接才能查到,這時候就須要定義一個模型類,用來在數據庫讀取時存放須要的數據。服務器
在一次請求中,服務器將請求信息發送至Servlet,Servlet處理請求而且將響應內容傳給服務器。jsp
所以servlet充當着控制器(controller)的角色。url
jsp頁面就是視圖(view)層。spa
模型層就是用戶定義的模型類。設計
當咱們須要在jsp頁面顯示數據庫數據時,通常是先到一個servlet進行取數據處理,把取到的數據設到request中去,而後請求轉發到jsp頁面,jsp頁面經過el表達式便可獲取數據。code
說的通俗一點就是當咱們點擊了一個超連接,超連接不要寫xxx.jsp,而應該寫某個servlet 的url,這個servlet 進行查詢數據庫處理,把獲得的數據設置到request 以後進行forword跳轉到jsp頁面進行顯示。blog
下面是本身的項目中的一個例子(代碼順序按照執行順序):排序
當須要訪問一個頁面時,先請求對應的servlet,例子中是ViewResultDetailServlet:get
<td><a href="<%=request.getContextPath()%>/ViewResultDetailServlet?competitionid=<%=officermsg.getId()%>&competitionname=<%=officermsg.getCompetitionname() %>">查看詳情</a></td>
ViewResultDetailServlet的代碼:
/** * 給admin/viewResultDetail.jsp頁面的傳輸數據 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int competitionid = 0; String competitionname = null; try{ competitionid=Integer.parseInt(request.getParameter("competitionid")); competitionname=request.getParameter("competitionname"); }catch(Exception e){ response.sendRedirect(request.getContextPath()+"/admin/viewResultSummary.jsp"); e.printStackTrace(); } request.setAttribute("competitionid", competitionid); request.setAttribute("competitionname", competitionname); ArrayList<TeamScoreMsg> teamScoreMsg = TeamApplyMsgDaoImpl.getTeamApplyMsgList(competitionid,2);//按什麼排序 1隊長學號 2成績 request.setAttribute("teamScoreMsg", teamScoreMsg); request.getRequestDispatcher("admin/viewResultDetail.jsp").forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }
viewResultDetail.jsp
<table class="table table-border table-bordered table-bg table-hover table-sort"> <thead> <tr class="text-c"> <th width="100px">隊長學號</th> <th width="100px">隊長</th> <th width="100px">隊伍名稱</th> <th width="100px">所屬學院</th> <th width="200px">隊員</th> <th width="100px">隊員人數</th> <th width="50px">成績</th> <th width="50px">獲獎信息</th> </tr> </thead> <tbody> <c:forEach items="${teamScoreMsg }" var="teamScoreMsg"> <tr class="text-c"> <td>${teamScoreMsg.captainNum}</td> <td>${teamScoreMsg.captainName}</td> <td>${teamScoreMsg.teamName}</td> <td>${teamScoreMsg.xueyuan}</td> <td> <c:forEach items="${teamScoreMsg.members}" var="student"> <p>${student.studentnum} ${student.name} ${student.xueyuan}</p> </c:forEach> </td> <td>${teamScoreMsg.members.size()}</td> <td>${teamScoreMsg.score}</td> <td>${teamScoreMsg.grade}</td> </tr> </c:forEach> </tbody> <tfoot> </tfoot> </table>