<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 26,  comments - 14,  trackbacks - 0
    MVC
     

    MVC (Model View Controler) 本來是存在于Desktop程序中的,M是指的是數(shù)據(jù)模型,V是指的是用戶界面,C則是控制器。使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,從而使同一個程序可以使用不同的表現(xiàn)形式。比如說一批統(tǒng)計(jì)數(shù)據(jù)你可以分別用柱狀圖,餅狀圖來表示。C存在的目的是確保M和V的同步,一旦M改變了,V應(yīng)該同步更新。


    MVC構(gòu)架為:
          

      
    說明:
     




    模型——視圖——控制器(MVC)是Xerox PARC在很在代為編程的語言Smalltalk--80發(fā)明的一種軟件設(shè)計(jì)模式,至今運(yùn)用仍為廣泛。最近幾年被推薦為Sun公司J2EE平臺設(shè)計(jì)模式,并且受到越來越多的使用 ColdFusion 和 PHP 的開發(fā)者的歡迎。模型-視圖-控制器模式是一個有用的工具箱,它有很多好處,但也有一些缺點(diǎn)。

     MVC如何工作

      MVC是一個設(shè)計(jì)模式,他是強(qiáng)制的使用程序的輸入,處理和輸出分開。使用MVC應(yīng)用程序分成了三個核心部件:模型,視圖,控制器。他們各自處理自己的任務(wù)。



    模型

    模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在MVC的三個部件中,模型擁有最多的處理任務(wù)。例如它可能用象EJBs和ColdFusion Components這樣的構(gòu)件對象來處理數(shù)據(jù)庫。被模型返回的數(shù)據(jù)是中立的,就是說模型與數(shù)據(jù)格式無關(guān),這樣一個模型能為多個視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復(fù)性。


    視圖

        視圖是用戶看到并與之交互的界面。如何處理應(yīng)用程序界面變得越來越有挑戰(zhàn)性。MVC一個大的好處是他能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。

     
    控制器

    控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。所以當(dāng)單擊Web頁面中的超鏈接和發(fā)送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調(diào)用哪個模型構(gòu)件去處理請求,然后用確定用哪個視圖來顯示模型處理返回的數(shù)據(jù)。


    MVC并不適合小型甚至中等規(guī)模的應(yīng)用程序,花費(fèi)大量時間將MVC應(yīng)用到規(guī)模并不是很大的應(yīng)用程序通常會得不償失。但是MVC設(shè)計(jì)模式是一個很好創(chuàng)建軟件的途徑,它所提倡的一些原則,像內(nèi)容和顯示互相分離可能比較好理解。但是如果你要隔離模型、視圖和控制器的構(gòu)件,你可能需要重新思考你的應(yīng)用程序,尤其是應(yīng)用程序的構(gòu)架方面。如果你肯接受MVC,并且有能力應(yīng)付它所帶來的額外的工作和復(fù)雜性,MVC將會使你的軟件在健壯性,代碼重用和結(jié)構(gòu)方面上一個新的臺階。


    這里我做了個比較簡單的程序其中使用了MVC思想:
    在這里創(chuàng)建了一個實(shí)體的類,也就是M(model),即User類:

    package com.bx.jstl;

    public class User {
     private int id;  //聲明了兩給屬性;
     private String name;
     
     public int getId() {
      return id;
     }
     public void setId(int id) {
      this.id = id;
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     

    }


    然后在此編寫了一個類JSTLServlet 是繼承了類HttpServlet類的:

    package com.bx.JSServlet;

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import com.bx.jstl.User;

    public class JSTLServlet extends HttpServlet{
     public void doGet(HttpServletRequest request , HttpServletResponse response)
      throws IOException , ServletException
     {
      List<User> list = new ArrayList<User>();
         for(int i = 0 ; i < 8 ; i++)
         {
          User u = new User();
        u.setId(i);
        u.setName("name"+i);
        list.add(u);
         }
         request.setAttribute("UserList", list);
         request.getRequestDispatcher("/c_forEach.jsp").forward(request, response);
     }
    }
    現(xiàn)在我們應(yīng)該來配置WEB.xml了,這是每個Web項(xiàng)目都做的一步,如下所示:

    <servlet>
     <servlet-name>JSTLServlet</servlet-name>
     <servlet-class>com.bx.JSServlet.JSTLServlet</servlet-class>
    </servlet>

    <servlet-mapping>
     <servlet-name>JSTLServlet</servlet-name>
     <url-pattern>/jstl</url-pattern>
    </servlet-mapping>

    下面我們建立一個c_forEach.jsp,在其body中的編寫代碼如下:

    <table>
         <tr><th>ID</th><th>index</th><th>count</th><th>isFirst?</th><th>isLast</th></tr>
         
         <c:forEach var="user" items="${UserList}" varStatus="status">
           <tr>
        <td>
         ${user.id}
        </td>
        <td>
         ${user.name}
        </td>
        <td>
         ${status.index}
        </td>
        <td>
         ${status.count}
        </td>
        <td>
         ${status.first}
        </td>
        <td>
         ${status.last}
        </td>
            </tr>
         </c:forEach>
        </table>

    現(xiàn)在我們開啟comcat 運(yùn)行此項(xiàng)目,在瀏覽器中輸入:

    http://localhost:8080/JSP_JSTL_Project/jstl

    得到網(wǎng)頁為:
     










    FeedBack:
    # re: MVC
    2010-12-14 17:37 | 雪落無聲
    例子比較好,有空加我QQ多交流:294956981 ,呵呵!  回復(fù)  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2010年12月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 妞干网免费视频观看| 亚洲一级免费视频| 亚洲区小说区图片区| 色婷婷精品免费视频| 免费观看午夜在线欧差毛片| 日本亚洲中午字幕乱码| 日本免费无遮挡吸乳视频电影| 亚洲欧洲专线一区| 免费中文字幕在线| 成人无码视频97免费| 亚洲AV无码国产精品麻豆天美| 久久A级毛片免费观看| 亚洲乱码一二三四五六区| 成人免费午夜视频| 特级毛片全部免费播放| 一本久久a久久精品亚洲| 在线观看免费无码专区| 亚洲欧洲精品一区二区三区| 无码国产精品一区二区免费虚拟VR| 亚洲资源最新版在线观看| 国产在线观看免费完整版中文版| 一区二区免费国产在线观看| 久久精品国产99精品国产亚洲性色| 久久成人免费电影| 亚洲kkk4444在线观看| 亚洲精品无码久久不卡| 精品无码国产污污污免费网站| 亚洲乱码中文字幕小综合| 免费一级黄色毛片| 最近最好最新2019中文字幕免费| 亚洲日本久久一区二区va| 亚洲AV无码成H人在线观看| 日本在线看片免费| 亚洲综合一区无码精品| 亚洲熟妇无码AV在线播放| 国产麻豆视频免费观看| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 朝桐光亚洲专区在线中文字幕| 久久乐国产精品亚洲综合| 丁香花免费完整高清观看| 成年免费a级毛片|