1.spring mvc基本流程
從URL接受請求及數(shù)據(jù)->DispacherServlet->根據(jù)請求調(diào)用具體的Controller->Controller->調(diào)用service方法處理數(shù)據(jù)->通過DAO訪問
db->增刪改查->db->返回操作結(jié)果集->service->處理返回結(jié)果->Controller->返回具體頁面和數(shù)據(jù)->jsp頁面
2.spring mvc注解
@Controller,@Service,@Repository
@Controllers聲明控制層。@Service聲明服務(wù)層。@Repository聲明持久層(數(shù)據(jù)傳輸層DAO)
@RequestMapping把一個POJO聲明為Spring里的Controller.如果不聲明要寫Controller類就要從Spring的Controller類繼承,并重寫handleRequest方法。
@RequestMapping(value="*.htm",method=RequestMethod.GET);屬性value聲明Controller處理的請求,method聲明處理請求的類型。可聲明在類頭上,也可聲明在方法頭上。
@RequestParam綁定參數(shù)與請求參數(shù);例:public String Controller(@RequestParam("id") int topicId,User user)把參數(shù) topicld與請求的參數(shù)“id”綁定,id的值傳入topicld。
@AutoWired根據(jù)類型自動裝配,可放在屬性上,set方法上,構(gòu)造方法上。與@AutoWierd配套使用的是@Qualifier。按名字自動裝配。
@Resource與@AutoWired類似
3.DispatcherServlet-org.springframework.web.servlet.Dispatc-herServlet
負(fù)責(zé)將請求分配給控制對象,所以使用Spring MVC的第一步是在web.xml中定義DispatcherServlet;

2

3

4

5

6

7

8

9

10

11

12

13

14

.....
可以加上contextConfigLocation的初始參數(shù),用來設(shè)置Bean定義文件的位置和名稱,默認(rèn)使用“Servlet名-servlet.xml";可以加上多個bean文件的來源;如果一個都沒加則找默認(rèn)的;hello-servlet.xml
spring-servlet.xml-

2

3

4

base-package為注入bean時要spring要查找的包;
Controller回傳ModleAndView,DispatcherServlet會交給ViewResolver解析。如:回傳一個字符串“index”,解析后找到/WEB-INF/index.jsp
4.Controller-

2

3

4

5

6

7

8

9

10

返回“index”,交由ViewResolver解析,返回調(diào)用“/WEB-INF/index.jsp”

2

3

4

5

6

7

8

把username以名值對的形式放入ModelMap,在index.jsp中用request對象接收;ModleMap,Spring提供的集合可以傳遞數(shù)據(jù)到返回的jsp頁面
http://www.ibm.com/developerworks/cn/java/j-lo-spring25-mvc/
以上為基于注解驅(qū)動的mvc
5.DispacherServlet-HandlerMapping-ModleAndView-Controller-ViewResolver-View
1.web.xml指定DispacherServelet和servlet的xml
web.xml-

2

3

4

5

6

7

8

9

10

11

12

13

<load-on-startup>標(biāo)記容器是否在啟動的時候就加載這個servlet,數(shù)字越小,當(dāng)是一個負(fù)數(shù)時或者沒有指定時,則指示容器在該servlet被選擇時才加載;正數(shù)的值越小,啟動該servlet的優(yōu)先級越高
2.BuzzwordsController-不用@Controllers則需要實(shí)現(xiàn)Controller接口

2

3

4

5

6

7

8

9

10

11

12

13

3.buzzwords-servlet.xml-指定servlet controller和urlmapping的映射關(guān)系

2

3

4

5

6

7

8

9

10

11

12

13

4.指定viewResolver


2

3



4

5

6

7

5.buzzwords.jsp
6.參考 \spring mvc\Spring MVC 詳解.ppt
\spring mvc\Spring MVC 技術(shù)交流.ppt
1. DispatchServlet在Web容器初始化的時候完成初始化——initStrategy()
2.ViewResolver-從一個String邏輯視圖名映射到一個視圖對象;對JSP用戶, 通常實(shí)現(xiàn) InternalResourceViewResolver
3.Controller負(fù)責(zé)接收從DispatchServlet轉(zhuǎn)發(fā)的URL請求
開發(fā)一個Spring MVC程序的基本步驟:
1編寫處理請求邏輯的處理器-controller;
2在DispatcherServlet上下文對應(yīng)的Spring配置文件中配置處理器;
3配置一個視圖解析器,對處理器返回的ModelAndView進(jìn)行解析;
4編寫一個視圖對象(jsp或ftl等),將響應(yīng)展現(xiàn)給客戶
Controller
-AbstractController
-MultiActionController 將多個請求行為合并在一個控制器里
-BaseCommandController
-AbstractCommandController 能將請求參數(shù)綁定到命令對象
-AbstractFormController 支持表單提交的抽象控制器類
-SimpleFormController 簡單表單處理控制器
-AbstractWizardFormController 向?qū)捅韱翁幚砜刂破?/span>
ViewResolver接口:Controller傳回ModelAndView對象,DispatcherServlet將其交由ViewResolver來作View層的相關(guān)解析。要在Spring MVC配置文件中定義一個ViewResolver實(shí)例
ModelAndView-Mode1AndView 類代表了 Spring Web MVC 程序中,呈現(xiàn)畫面時所使用 Model 數(shù)據(jù)對象與 View 數(shù)據(jù)對象,由于 Java 程序的方法中一次只能回傳一個對象,所以 Modelview 的作用是封裝這兩個對象,方便您同時返回 Model 與 View SimpleUrlHandlerMapping-最常用的處理器映射,將請求的URLs 影射到handlers;由一系列的分別代表URLs 和bean 的名字的name/value 對來定義影射;在x-servlet.xml中定義
7. 參考\spring mvc\Spring_Web_MVC_架構(gòu).ppt
1.web.xml:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

可以在 XML 文件中設(shè)定 Controller 請求處理完畢之后,所要呈現(xiàn)數(shù)據(jù)的網(wǎng)頁路徑,見mvc -config . xml
2.controller:

2

3

4

5

6

7

8

9

10

11

12

13

14

3.mvc-config.xml:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

DisPatcherServlet 必須根據(jù)一個 HandlerMaPping 對象,決定請求由哪一個 Controller 來處理, DispatcherServlet 默認(rèn)使用 org.spring-
framwork .web.servlet.handler . BeanNameUrlHandlerMapping ,也就是根據(jù) Bean 在定義時的”name”屬性及使用者請求的 URL ,決定使 用哪一個 controller 實(shí)例,例如在這個例子中,請求 / FirstSpringMVC / hello.do 時, DispatcherServlet 根據(jù)” hello.do ”名稱,決定要 使用 “name”為”hello.do”的 Bean 實(shí)例,所以就是將請求交由 HelloController 的實(shí)例來處理。
在 controller 返回 ModelAndView 后, Dispatcherservlet 會交由 ViewResolver 對象來作 View 層的相關(guān)解析,因而您需要設(shè)置一個 ViewResolver 實(shí)例,在這個范例中將以 JSP 作為 View 層技術(shù)-InternalResourceViewResolver如果想要在自己所定義的 servlet 類中使用 spring 的容器功能,則也可以使用org·springframework·web·context·ContextLoaderListener contextLoaderListener 默認(rèn)會讀取 applicationContext.xml,您可以指定自己的定義文件,只要在
<context-param>中指定”contextConfigLocation”參數(shù);
WebApplicationContext 實(shí)現(xiàn)了 ApplicationContext 接口,是 Spring 專為 Servlet 的 Web 應(yīng)用程序設(shè)計的ApplicationContext 實(shí)現(xiàn)類,在取得 WebApplicationContext 之后,可以利用它來取得 Bean 定義文件中定義的 Bean 實(shí)例;
即web.xml中-

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

4.MultiActionController -如果為每一個請求編寫一個 Controller 類,在程序規(guī)模增大時,您的 Controller 類將會迅速增加,可以繼承 或直接使用MultiActionController類,將數(shù)個相關(guān)的請求處理集中于同一個對象,而不用每一個請求編寫一個控制對象。
使用MultiActionController,您要配合一個 MethodNameResolver 的實(shí)例, MultiActioncontroller 默認(rèn)使用的 MethodNameResolver 類是
org . springframework . web . servlet . mvc . multiaction . InternalPathMethodNameResolver ,這個類可以根據(jù)所給的網(wǎng)址中,最后請求的
文件名稱來判斷執(zhí)行 Controller中的哪一個方法,例如/test . do 的請求會執(zhí)行 test ( HttpservletRequest , HttpservletResponse )方法
。但通常不會使用 InternalPathMethodNameResolver ,因為這就失去了使用 MultiActionController 的一些優(yōu)點(diǎn),像是依使用者的請求
參數(shù)來決定所要執(zhí)行的方法。
改用->ParameterMethodNameResolver
mvc-config.xml-

2

3

4

5

6

7

8

9

10

11

12

13

也可以將所有相對應(yīng)的方法專門組織在一個委托(delegate)物件中,而不是撰寫在 Controller 類別中,當(dāng)請求來到時,將
委托給這個物件來執(zhí) 行指定的方法,您只要設(shè)定 MultiActionController 的"delegate"屬性參考至委托物件即可
或者->PropertiesMethodNameResolver

2

3

4

5

6

7

8

9
