您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關mvc在Java項目中的作用有哪些 ,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯和數據顯式分離的方法組織代碼,將業務邏輯被聚集到一個部件里面,在界面和用戶圍繞數據的交互能被改進和個性化定制的同時而不需要重新編寫業務邏輯。
概覽
MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中,MVC是分層的思想的體現,但是區別于三層設計模式(區別以后再和大家分享)。
MVC是一個框架模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。最典型的MVC就是JSP + servlet + javabean的模式。
實例解析
UML圖:大家熟悉MVC的調用流程邏輯
第一:JSP:由頁面指令和HTML組成的查詢界面query_condention.jsp,也就是咱們現在的html頁和asp頁面類似。
<html> <head> <title>學生信息</title> </head> <body> <form action="SearchStudentServlet" method="post"> 出生日期:<input type="text" name="beginDate">至<input type="text" name="endDate"> <input type="submit" value="查詢學生"> </form> </body> </html>
第二:控制層 SearchStudentServlet用來接受客戶的請求,來處理流程,調用Model(StudentManager.java),轉發到要請求的后臺服務器的student_list.jsp頁面
import java.text.*; import java.util.*; import java.io.*; import javax.servlet.http.*; import javax.servlet.*; import com.bjpowernode.exam.model.*; import com.bjpowernode.exam.manager.*; public class SearchStudentServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String sBeginDate = request.getParameter("beginDate"); String sEndDate = request.getParameter("endDate"); Date beginDate = new Date(); Date endDate = new Date(); try { beginDate = new SimpleDateFormat("yyyy-MM-dd").parse(sBeginDate); endDate = new SimpleDateFormat("yyyy-MM-dd").parse(sEndDate); }catch(Exception e) { e.printStackTrace(); } StudentManager studentManager = new StudentManagerImpl(); List<Student> studentList = studentManager.findStudentList(beginDate, endDate); //將學生列表設置到requet范圍中 //request.setAttribute("student_list", studentList); //轉發,轉發是在服務器端轉發的,客戶端是不知道的 //request.getRequestDispatcher("/student_list.jsp").forward(request, response); //將studentList放到session中 HttpSession session = request.getSession(); session.setAttribute("student_list", studentList); //重定向,不會共享request //以下寫法錯誤,該 "/"代表了8080端口 //response.sendRedirect("/student_list.jsp"); response.sendRedirect(request.getContextPath() + "/student_list.jsp"); } }
第三:student_list.jsp頁面接收數據形成html,返回到瀏覽器,渲染在界面上
<%@ page language="java" contentType="text/html;charset=GBK"%> <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> <%@ page import="com.bjpowernode.exam.model.*"%> <%@ page import="com.bjpowernode.exam.manager.*"%> <html> <head> <title>學生信息</title> <style type="text/css"> /*表格寬度為1px,實線,黑色*/ table{ border:1px solid black; border-collapse:collapse; } td { border:1px solid black; border-collapse:collapse; } </style> </head> <body> <table border="1"> <tr> <td>學生代碼</td> <td>姓名</td> <td>性別</td> <td>出生日期</td> <td>聯系電話</td> <td>家庭住址</td> <td>班級名稱</td> <td>年齡</td> </tr> <% //List<Student> studentList = (List)request.getAttribute("student_list"); List<Student> studentList = (List)session.getAttribute("student_list"); for (Iterator<Student> iter=studentList.iterator(); iter.hasNext();) { Student student = iter.next(); %> <tr> <td><%=student.getStudentId()%></td> <td><%=student.getStudentName()%></td> <td><%=student.getSex()%></td> <td><%=new SimpleDateFormat("yyyy-MM-dd").format(student.getBirthday())%></td> <td><%=student.getContactTel()%></td> <td><%=student.getAddress()%></td> <td><%=student.getClasses().getClassesName()%></td> <% long b = 1000L*60L*60L*24L*365L; long a = System.currentTimeMillis() - student.getBirthday().getTime(); %> <td><%=a/b%></td> </tr> <% } %> </table> </body> </html>
在View的student_list.jsp頁面中是大量的html和java代碼的混合,在查詢條件界面query_condention.jsp主要是html,因為不涉及后臺數據的交互.
第四:xml配置Servlet:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>SearchStudentServlet</servlet-name> <servlet-class>SearchStudentServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SearchStudentServlet</servlet-name> <url-pattern>/SearchStudentServlet</url-pattern> </servlet-mapping> </web-app>
第五:顯示查詢結果
總結
以上query_condention.jsp(輸入查詢條件)、SearchStudentServlet.java(請求控制Control分)+student_list.jsp(界面顯示)的組合相當于三層中的U層,都與界面的顯示相關,而StudentManager.java才是進入業務處理相當于三層的B層。故,我們可以簡單理解成,MVC就是java基于U層的又一個細化,將界面顯示和請求處理做了進一步細化分工。
MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中,MVC是分層的思想的體現,但是區別于三層設計模式(區別以后再和大家分享)。
上述就是小編為大家分享的mvc在Java項目中的作用有哪些 了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。