欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

深入理解SpringMVC思想

一、前言
二、spring mvc 核心類與接口
三、spring mvc 核心流程圖

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、永福ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的永福網(wǎng)站制作公司

四、spring mvc DispatcherServlet說(shuō)明

五、spring mvc 父子上下文的說(shuō)明

六、springMVC-mvc.xml 配置文件片段講解 
七、spring mvc 如何訪問(wèn)到靜態(tài)的文件,如jpg,js,css

八、spring mvc 請(qǐng)求如何映射到具體的Action中的方法

九、 spring mvc 中的攔截器:
十、 spring mvc 如何使用攔截器

十一、 spring mvc 如何實(shí)現(xiàn)全局的異常處理

十二、 spring mvc 如何把全局異常記錄到日志中

十三、 如何給spring3 MVC中的Action做JUnit單元測(cè)試

十四、 spring mvc 轉(zhuǎn)發(fā)與重定向 (帶參數(shù)重定向)

十五、 spring mvc 處理ajax請(qǐng)求

十六、 spring mvc 關(guān)于寫(xiě)幾個(gè)配置文件的說(shuō)明 

十七、 spring mvc 如何取得Spring管理的bean

十八、 spring mvc 多視圖控制器

十九、 <mvc:annotation-driven /> 到底做了什么工作 
二十、 本文中springMVC.xml配置文件是核心,這里給一個(gè)下載地址

一、前言:

為開(kāi)發(fā)團(tuán)隊(duì)選擇一款優(yōu)秀的MVC框架是件難事兒,在眾多可行的方案中決擇需要很高的經(jīng)驗(yàn)和水平。你的一個(gè)決定會(huì)影響團(tuán)隊(duì)未來(lái)的幾年。要考慮方面太多:

1、簡(jiǎn)單易用,以提高開(kāi)發(fā)效率。使小部分的精力在框架上,大部分的精力放在業(yè)務(wù)上。

2、性能優(yōu)秀,這是一個(gè)最能吸引眼球的話題。

3、盡量使用大眾的框架(避免使用小眾的、私有的框架),新招聘來(lái)的開(kāi)發(fā)人員有一些這方面技術(shù)積累,減低人員流動(dòng)再適應(yīng)的影響。

 

如果你還在為這件事件發(fā)愁,本文最適合你了。選擇Spring MVC吧。

 

Spring MVC是當(dāng)前最優(yōu)秀的MVC框架,自從Spring 2.5版本發(fā)布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,實(shí)現(xiàn)了對(duì)Struts 2的超越。現(xiàn)在越來(lái)越多的開(kāi)發(fā)團(tuán)隊(duì)選擇了Spring MVC。

 

Struts2也是非常優(yōu)秀的MVC構(gòu)架,優(yōu)點(diǎn)非常多比如良好的結(jié)構(gòu),攔截器的思想,豐富的功能。但這里想說(shuō)的是缺點(diǎn),Struts2由于采用了值棧、OGNL表達(dá)式、struts2標(biāo)簽庫(kù)等,會(huì)導(dǎo)致應(yīng)用的性能下降,應(yīng)避免使用這些功能。而Struts2的多層攔截器、多實(shí)例action性能都很好。可以參考我寫(xiě)的一篇關(guān)于Spring MVC與Struts2與Servlet比較的文章《Struts2、SpringMVC、Servlet(Jsp)性能對(duì)比 測(cè)試》

 

Spring3 MVC的優(yōu)點(diǎn):

1、Spring3 MVC使用簡(jiǎn)單,學(xué)習(xí)成本低。學(xué)習(xí)難度小于Struts2,Struts2用不上的多余功能太多。呵呵,當(dāng)然這不是決定因素。

2、Spring3 MVC很容易就可以寫(xiě)出性能優(yōu)秀的程序,Struts2要處處小心才可以寫(xiě)出性能優(yōu)秀的程序(指MVC部分)

3、Spring3 MVC的靈活是你無(wú)法想像的,Spring框架的擴(kuò)展性有口皆碑,Spring3 MVC當(dāng)然也不會(huì)落后,不會(huì)因使用了MVC框架而感到有任何的限制。

二、核心類與接口:

 

先來(lái)了解一下,幾個(gè)重要的接口與類。現(xiàn)在不知道他們是干什么的沒(méi)關(guān)系,先混個(gè)臉熟,為以后認(rèn)識(shí)他們打個(gè)基礎(chǔ)。

 

DispatcherServlet   -- 前置控制器

 

HandlerMapping接口 -- 處理請(qǐng)求的映射

HandlerMapping接口的實(shí)現(xiàn)類:

SimpleUrlHandlerMapping  通過(guò)配置文件,把一個(gè)URL映射到Controller

DefaultAnnotationHandlerMapping  通過(guò)注解,把一個(gè)URL映射到Controller類上

 

HandlerAdapter接口 -- 處理請(qǐng)求的映射

AnnotationMethodHandlerAdapter類,通過(guò)注解,把一個(gè)URL映射到Controller類的方法上

 

Controller接口 -- 控制器

由于我們使用了@Controller注解,添加了@Controller注解注解的類就可以擔(dān)任控制器(Action)的職責(zé),

所以我們并沒(méi)有用到這個(gè)接口。

 

 

 

HandlerInterceptor 接口--攔截器

無(wú)圖,我們自己實(shí)現(xiàn)這個(gè)接口,來(lái)完成攔截的器的工作。

 

 

ViewResolver接口的實(shí)現(xiàn)類

UrlBasedViewResolver類 通過(guò)配置文件,把一個(gè)視圖名交給到一個(gè)View來(lái)處理

InternalResourceViewResolver類,比上面的類,加入了JSTL的支持

 

View接口

JstlView類

 

LocalResolver接口

 

HandlerExceptionResolver接口 --異常處理

SimpleMappingExceptionResolver實(shí)現(xiàn)類

 

ModelAndView類

無(wú)圖。

三、核心流程圖

 

本圖是我個(gè)人畫(huà)的,有不嚴(yán)謹(jǐn)?shù)牡胤剑蠹覍?duì)付看吧。總比沒(méi)的看強(qiáng)。

轉(zhuǎn)載請(qǐng)注明出處:本文地址:http://elf8848.iteye.com/blog/875830

 

 


四、DispatcherServlet說(shuō)明

 

使用Spring MVC,配置DispatcherServlet是第一步。

DispatcherServlet是一個(gè)Servlet,所以可以配置多個(gè)DispatcherServlet。

DispatcherServlet是前置控制器,配置在web.xml文件中的。攔截匹配的請(qǐng)求,Servlet攔截匹配規(guī)則要自已定義,把攔截下來(lái)的請(qǐng)求,依據(jù)某某規(guī)則分發(fā)到目標(biāo)Controller(我們寫(xiě)的Action)來(lái)處理。

 

“某某規(guī)則”:是根據(jù)你使用了哪個(gè)HandlerMapping接口的實(shí)現(xiàn)類的不同而不同。

 

先來(lái)看第一個(gè)例子:

  1. <web-app>  

  2.     <servlet>  

  3.         <servlet-name>example</servlet-name>  

  4.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

  5.         <load-on-startup>1</load-on-startup>  

  6.     </servlet>  

  7.     <servlet-mapping>  

  8.         <servlet-name>example</servlet-name>  

  9.         <url-pattern>*.form</url-pattern>  

  10.     </servlet-mapping>  

  11. </web-app>  

  1. <web-app>  

  2.     <servlet>  

  3.         <servlet-name>example</servlet-name>  

  4.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

  5.         <load-on-startup>1</load-on-startup>  

  6.     </servlet>  

  7.     <servlet-mapping>  

  8.         <servlet-name>example</servlet-name>  

  9.         <url-pattern>*.form</url-pattern>  

  10.     </servlet-mapping>  

  11. </web-app>  

 <load-on-startup>1</load-on-startup>是啟動(dòng)順序,讓這個(gè)Servlet隨Servletp容器一起啟動(dòng)。

 <url-pattern>*.form</url-pattern> 會(huì)攔截*.form結(jié)尾的請(qǐng)求。

 

 <servlet-name>example</servlet-name>這個(gè)Servlet的名字是example,可以有多個(gè)DispatcherServlet,是通過(guò)名字來(lái)區(qū)分的。每一個(gè)DispatcherServlet有自己的WebApplicationContext上下文對(duì)象。同時(shí)保存的ServletContext中和Request對(duì)象中,關(guān)于key,以后說(shuō)明。

 

在DispatcherServlet的初始化過(guò)程中,框架會(huì)在web應(yīng)用的 WEB-INF文件夾下尋找名為[servlet-name]-servlet.xml 的配置文件,生成文件中定義的bean。

 

 

第二個(gè)例子:

  1. <servlet>  

  2.     <servlet-name>springMVC</servlet-name>  

  3.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

  4.     <init-param>  

  5.         <param-name>contextConfigLocation</param-name>  

  6.         <param-value>classpath*:/springMVC.xml</param-value>  

  7.     </init-param>  

  8.     <load-on-startup>1</load-on-startup>  

  9. </servlet>  

  10. <servlet-mapping>  

  11.     <servlet-name>springMVC</servlet-name>  

  12.     <url-pattern>/</url-pattern>  

  13. </servlet-mapping>  

  1. <servlet>  

  2.     <servlet-name>springMVC</servlet-name>  

  3.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

  4.     <init-param>  

  5.         <param-name>contextConfigLocation</param-name>  

  6.         <param-value>classpath*:/springMVC.xml</param-value>  

  7.     </init-param>  

  8.     <load-on-startup>1</load-on-startup>  

  9. </servlet>  

  10. <servlet-mapping>  

  11.     <servlet-name>springMVC</servlet-name>  

  12.     <url-pattern>/</url-pattern>  

  13. </servlet-mapping>  

指明了配置文件的文件名,不使用默認(rèn)配置文件名,而使用springMVC.xml配置文件。

其中<param-value>**.xml</param-value> 這里可以使用多種寫(xiě)法
1、不寫(xiě),使用默認(rèn)值:/WEB-INF/<servlet-name>-servlet.xml
2、<param-value>/WEB-INF/classes/springMVC.xml</param-value>
3、<param-value>classpath*:springMVC-mvc.xml</param-value>
4、多個(gè)值用逗號(hào)分隔

 


Servlet攔截匹配規(guī)則可以自已定義,攔截哪種URL合適? 
當(dāng)映射為@RequestMapping("/user/add")時(shí),為例:


1、攔截*.do、*.htm, 例如:/user/add.do

這是最傳統(tǒng)的方式,最簡(jiǎn)單也最實(shí)用。不會(huì)導(dǎo)致靜態(tài)文件(jpg,js,css)被攔截。

 

2、攔截/,例如:/user/add

可以實(shí)現(xiàn)現(xiàn)在很流行的REST風(fēng)格。很多互聯(lián)網(wǎng)類型的應(yīng)用很喜歡這種風(fēng)格的URL。

弊端:會(huì)導(dǎo)致靜態(tài)文件(jpg,js,css)被攔截后不能正常顯示。想實(shí)現(xiàn)REST風(fēng)格,事情就是麻煩一些。后面有解決辦法還算簡(jiǎn)單。

 

3、攔截/*,這是一個(gè)錯(cuò)誤的方式,請(qǐng)求可以走到Action中,但轉(zhuǎn)到j(luò)sp時(shí)再次被攔截,不能訪問(wèn)到j(luò)sp。

源碼來(lái)源:×××/technology QQ:1695402893

本文題目:深入理解SpringMVC思想
網(wǎng)址分享:http://chinadenli.net/article28/gjosjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站App開(kāi)發(fā)網(wǎng)站制作營(yíng)銷型網(wǎng)站建設(shè)網(wǎng)站導(dǎo)航網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站