MVC是三個單詞的縮寫,分別為: 模型(Model),視圖(View)和控制Controller)。 MVC模式的目的就是實現(xiàn)Web系統(tǒng)的職能分工。 Model層實現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,通??梢杂?/font>JavaBean或EJB來實現(xiàn)。 View層用于與用戶的交互,通常用JSP來實現(xiàn)。 Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。
用我自己的簡單理解就是說,M用于處理邏輯,V為和用戶交互的界面,C為控制器。使用MVC的目的就是把M和V的代碼分離。從而同一個程序可以使用不同的表現(xiàn)形式。比如一個數(shù)據(jù)庫的表。在跟用戶交互的時候可以是柱狀圖,也可以是餅狀圖。而C的作用就是實現(xiàn)M和V的同步,一旦M改變,V也要跟著改變。
l 低耦合性:很容易改變數(shù)據(jù)層和業(yè)務(wù)規(guī)則。
l 高重用性和可適用性:允許你使用各種不同樣式的視圖來訪問同一個服務(wù)器端的代碼。舉個例子,比如我們對QQ農(nóng)場的操作可以使用FLASH端程序,也可以使用手機來操作。
l 較低的生命周期成本:MVC使降低開發(fā)和維護用戶接口的技術(shù)含量成為可能。
l 快速的部署:開發(fā)時間得到相當(dāng)大的縮減,它使程序員(Java)集中精力于業(yè)務(wù)邏輯,界面程序員(HTML/JSP)集中精力于表現(xiàn)形式上。
l 可維護性:分離視圖層和業(yè)務(wù)邏輯層也使得WEB應(yīng)用更易于維護和修改。
l 有利于軟件工程化管理:由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過工程化、工具化管理程序代碼。
l 框架(Framework)是整個或部分系統(tǒng)的可重用設(shè)計,表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實例間交互的方法;另一種定義認為,框架是可被應(yīng)用開發(fā)者定制的應(yīng)用骨架。前者是從應(yīng)用方面而后者是從目的方面給出的定義。
l 基于請求響應(yīng)模式的應(yīng)用框架,基本上有如下幾個表現(xiàn)邏輯結(jié)構(gòu)組成。
— 控制器:控制整個框架中各個組件的協(xié)調(diào)工作。
— 業(yè)務(wù)邏輯層:對于框架本身來說僅僅只是概念和幾個提供服務(wù)的基礎(chǔ)組件,真正的業(yè)務(wù)邏輯還是需要開發(fā)人員擴展。
— 數(shù)據(jù)邏輯層:絕大多數(shù)應(yīng)用系統(tǒng)都需要涉及到數(shù)據(jù)交互,這一層次主要包括了數(shù)據(jù)邏輯和數(shù)據(jù)訪問接口。
Struts有一組相互協(xié)作的類、Servlet以及JSP TagLib組成。基于Struts構(gòu)架的web應(yīng)用程序符合Model2的設(shè)計標(biāo)準(zhǔn),可以說是MVC設(shè)計模式的一種變化類型。根據(jù)上面對Struts是一個web framework,而不僅僅是一些標(biāo)記庫的組合。但Struts也包含了豐富的標(biāo)記庫和實用程序類。
Action中最重要的就是execute方法,它負責(zé)執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,如果需要,它也進行相應(yīng)的數(shù)據(jù)檢查。執(zhí)行完成之后,返回一個字符串對象,控制器通過該字符串對象來進行轉(zhuǎn)發(fā)工作。
1、新建一個helloworld.jsp,在body內(nèi)寫上<h1>helloworld</h1>
2、首先在新建一個普通的Java類(HelloWorld.java),這個類中包括execute方法,代碼如下。
package com.test.action;
public class HelloWorld
{
public String execute()throws Exception
{
return "success";
}
}
3、在src目錄下新建一個struts.xml配置文件,文件內(nèi)容包括一個DTD約束,文件的目錄結(jié)構(gòu)為<struts><package><action>元素代碼如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2" extends="struts-default">
<action name="helloworld" class="com.test.action.HelloWorld">
<result name="success">/helloworld.jsp</result>
</action>
</package>
</struts>
4、配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
5、別忘了加struts的lib文件