欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入淺出Java mvc_動力節(jié)點Java學院整理

 更新時間:2017年08月02日 10:13:49   作者:lishehe  
這篇文章主要為大家詳細介紹了MVC的基礎(chǔ)知識,MVC是一個框架模式,它強制性的使應(yīng)用程序的輸入、處理和輸出分開,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在DRP中終于接觸到了MVC,感觸是確實這樣的架構(gòu)系統(tǒng)靈活性不少,現(xiàn)在感觸最深的就是使用tomcat作為服務(wù)器發(fā)布比IIS好多了,起碼發(fā)布很簡單,使用起來方便。

首先來簡單的學習一下MVC的基礎(chǔ)知識,MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計典范,用一種業(yè)務(wù)邏輯和數(shù)據(jù)顯式分離的方法組織代碼,將業(yè)務(wù)邏輯被聚集到一個部件里面,在界面和用戶圍繞數(shù)據(jù)的交互能被改進和個性化定制的同時而不需要重新編寫業(yè)務(wù)邏輯。

概覽


MVC被獨特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結(jié)構(gòu)中,MVC是分層的思想的體現(xiàn),但是區(qū)別于三層設(shè)計模式(區(qū)別以后再和大家分享)。  


MVC是一個框架模式,它強制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。最典型的MVC就是JSP + servlet + javabean的模式。

實例解析

UML圖:大家熟悉MVC的調(diào)用流程邏輯

第一:JSP:由頁面指令和HTML組成的查詢界面query_condention.jsp,也就是咱們現(xiàn)在的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用來接受客戶的請求,來處理流程,調(diào)用Model(StudentManager.java),轉(zhuǎn)發(fā)到要請求的后臺服務(wù)器的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); 
     
    //將學生列表設(shè)置到requet范圍中 
    //request.setAttribute("student_list", studentList); 
     
    //轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)是在服務(wù)器端轉(zhuǎn)發(fā)的,客戶端是不知道的 
    //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頁面接收數(shù)據(jù)形成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>聯(lián)系電話</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,因為不涉及后臺數(shù)據(jù)的交互.

第四: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>

第五:顯示查詢結(jié)果

總結(jié)

    以上query_condention.jsp(輸入查詢條件)、SearchStudentServlet.java(請求控制Control分)+student_list.jsp(界面顯示)的組合相當于三層中的U層,都與界面的顯示相關(guān),而StudentManager.java才是進入業(yè)務(wù)處理相當于三層的B層。故,我們可以簡單理解成,MVC就是java基于U層的又一個細化,將界面顯示和請求處理做了進一步細化分工。 

    MVC被獨特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結(jié)構(gòu)中,MVC是分層的思想的體現(xiàn),但是區(qū)別于三層設(shè)計模式(區(qū)別以后再和大家分享)。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java使用PrepareStatement實現(xiàn)數(shù)據(jù)的插入與查詢操作

    Java使用PrepareStatement實現(xiàn)數(shù)據(jù)的插入與查詢操作

    這篇文章主要為大家詳細介紹了Java如何使用PrepareStatement實現(xiàn)數(shù)據(jù)的插入與查詢操作,文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-09-09
  • spring中aop的xml配置方法實例詳解

    spring中aop的xml配置方法實例詳解

    AOP的配置方式有2種方式:xml配置和AspectJ注解方式。下面這篇文章主要給大家介紹了關(guān)于spring中aop的xml配置方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • Java不可變類機制淺析

    Java不可變類機制淺析

    所謂的不可變類是指這個類的實例一旦創(chuàng)建完成后,就不能改變其成員變量值。如JDK內(nèi)部自帶的很多不可變類:Interger、Long和String等。接下來通過本文給大家介紹Java不可變類機制,需要的朋友參考下
    2017-02-02
  • MyBatis Generator生成代碼及使用方式詳解

    MyBatis Generator生成代碼及使用方式詳解

    這篇文章主要介紹了MyBatis Generator生成代碼及使用方式的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • SystemServer進程啟動過程解析

    SystemServer進程啟動過程解析

    這篇文章主要為大家介紹了SystemServer進程啟動過程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Java將本地項目部署到Linux服務(wù)器的實踐

    Java將本地項目部署到Linux服務(wù)器的實踐

    本文主要介紹了Java將本地項目部署到Linux服務(wù)器的實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧<BR>
    2022-06-06
  • 關(guān)于springboot2.4跨域配置問題

    關(guān)于springboot2.4跨域配置問題

    這篇文章主要介紹了springboot2.4跨域配置的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • Java基礎(chǔ)之Web服務(wù)器與Http詳解

    Java基礎(chǔ)之Web服務(wù)器與Http詳解

    無論你是前端開發(fā)者還是后端開發(fā)者,以及測試工程師,這篇文章的知識都是你需要弄懂的。讀完這一篇文章,將全面弄懂 HTTP 協(xié)議、TCP 協(xié)議,面試官再也難不倒你相關(guān)知識
    2021-09-09
  • 基于Jmeter生成測試報告過程圖解

    基于Jmeter生成測試報告過程圖解

    這篇文章主要介紹了基于Jmeter生成測試報告過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • java利用SMB讀取遠程文件的方法

    java利用SMB讀取遠程文件的方法

    這篇文章主要為大家詳細介紹了java利用SMB讀取遠程文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評論