-
MVC 是開(kāi)發(fā)web application 的通用架構(gòu) 方式。在 Java,Python都有使用。
查看全部 -
maven 很好了解放了處理繁瑣依賴關(guān)系的工作
查看全部 -
<mirror>
<id>UK</id>
<name>UK Central</ name>
<url>http :// uk.maven. org/maven2</ url><mirrorOf>central</mirrorOf>
</mirror>
查看全部 -
前端控制器攔截到了一個(gè)請(qǐng)求,通過(guò)處理器映射器找到對(duì)應(yīng)的控制器,映射器找到了控制器和控制器攔截器,形成一條執(zhí)行鏈,前端控制器通過(guò)處理器適配器拿到控制器返回的結(jié)果,然后把結(jié)果交給視圖解析器解析,生成視圖,最后響應(yīng)給前端。
查看全部 -
DispatcherServlet前端控制器
HandlerAdapter處理器適配器
HandlerIntercept處理器攔截器(是一個(gè)借口,有三個(gè)實(shí)現(xiàn),preHandle、afterCompletion、postHandle)
HandlerMapping處理器映射器、
HandlerExecutionChain處理器執(zhí)行鏈
執(zhí)行鏈:preHandle——>Controller?method——>postHandle——>afterCompletion
ModelAndView模型視圖,也可以用Model和Map,但是都會(huì)被轉(zhuǎn)化為ModelAndView
ViewResolver視圖解析器
View?用于呈現(xiàn)頁(yè)面
查看全部 -
ModelAndView
查看全部 -
模型 視圖 控制
查看全部 -
MVC本質(zhì)
查看全部 -
Spring MVC
查看全部 -
前端控制器--》具體controller-->前端扣工資器-->viewtemplate
查看全部 -
MVC(Model-View-Controller)
MVC定義:程序分層,分工合作,既相互獨(dú)立,又協(xié)同工作。
View:視圖層,為用戶提供UI重點(diǎn)關(guān)注數(shù)據(jù)的呈現(xiàn)。
Model:模型層,業(yè)務(wù)數(shù)據(jù)的信息表示,關(guān)注支撐業(yè)務(wù)的信息構(gòu)成,通常是多個(gè)業(yè)務(wù)實(shí)體的組合。
Controller:控制層,調(diào)用業(yè)務(wù)邏輯產(chǎn)生合適的數(shù)據(jù)(Model)傳遞數(shù)據(jù)給視圖層用于呈現(xiàn)。
查看全部 -
SpringMVC的靜態(tài)概念
DispatcherServlet:它就相當(dāng)于SpringMVC的前端控制器(Front Controller),前端用戶的請(qǐng)求通過(guò)DispatcherServlet進(jìn)行了分發(fā),到達(dá)相應(yīng)的Controller,來(lái)生產(chǎn)需要的業(yè)務(wù)數(shù)據(jù)Model,Model再通過(guò)DispatcherServlet傳遞給View完成最終頁(yè)面呈現(xiàn)。
HandlerAdapter:適配器模式,將各種不同類型的HandlerAdapter適配成DispatcherServlet可以使用的HandlerAdapter,它是在DispatcherServlet內(nèi)部使用的一個(gè)類,DispatcherServlet通過(guò)它可以找到Controller,SpringMVC中并沒(méi)有一個(gè)接口叫做Controller,但是有一個(gè)annotation標(biāo)簽,該標(biāo)簽可以識(shí)別一個(gè)Controller。
HandlerInterceptor:攔截器,他是一個(gè)接口,擁有三個(gè)方法,如果Controller實(shí)現(xiàn)該接口,就可以調(diào)用Controller之前,調(diào)用之后,以及最終Model發(fā)送到頁(yè)面可以做一些事情。
HandlerMapping:Handler是DispatcherServlet調(diào)用Controller中間過(guò)渡的一種對(duì)象,Mapping是DispatcherServlet與Controller映射關(guān)系的一種類,所以它就是請(qǐng)求到達(dá)DispatcherServlet,哪一個(gè)Controller來(lái)響應(yīng)該請(qǐng)求,并且他也會(huì)對(duì)HandlerInterceptor進(jìn)行管理,也就是它工作完后,會(huì)返回一個(gè)HandlerAdapter給DispatcherServlet。
HandlerExecutionChain:HandlerMapping返回的對(duì)象(包含HandlerAdapter、HandlerInterceptor),它們之間構(gòu)成了一條執(zhí)行鏈條,首先執(zhí)行HandlerInterceptor的preHandle方法,然后調(diào)用Controller里的某個(gè)業(yè)務(wù)方法,再執(zhí)行postHandle方法,再執(zhí)afterCompletion方法,這里用到了反射機(jī)制(reflect)。
ModelAndView:可以使用SpringMVC中提供的Model類也可以使用java中提供的Map類的表現(xiàn)形式,但是DispatcherServlet最終都會(huì)把它轉(zhuǎn)換為ModelAndView,所以在這里可以表現(xiàn)為Model的具體表現(xiàn)。
ViewResolver:視圖解析器,可以通知DispatcherServlet使用哪一個(gè)視圖,來(lái)進(jìn)行視圖的呈現(xiàn),作用就是根據(jù)配置,找出需要的視圖對(duì)象。
View:負(fù)責(zé)呈現(xiàn)頁(yè)面,比如Jsp、JSTL等。
查看全部 -
Spring MVC的動(dòng)態(tài)概念:DispatcherServlet基于核心的地位,連接View和Controller,訪問(wèn)過(guò)程——>用戶通過(guò)瀏覽器發(fā)送請(qǐng)求通過(guò)服務(wù)器被DispatcherServlet攔截到,DispatcherServlet通過(guò)HandlerMapping找到適配的Controller,這里是通過(guò)annotation來(lái)找到指定Controller,并且找到HandlerInterceptor,也就是執(zhí)行Controller的業(yè)務(wù)邏輯之前,執(zhí)行一些方法,這就形成了HandlerExecutionChain執(zhí)行鏈條,并且HandlerMapping會(huì)返回一個(gè)對(duì)象給DispatcherServlet,該對(duì)象包括(HandlerAdapter、HandlerInterceptor),并且Controller會(huì)生成ModelAndView返回給DispatcherServlet,但是DispatcherServlet不能確定顯示哪個(gè)視圖,這里通過(guò)ViewResolver的方法返回View對(duì)象,數(shù)據(jù)被傳遞給View進(jìn)行呈現(xiàn),這時(shí)就可以看到呈現(xiàn)的頁(yè)面了。
查看全部 -
Maven的配置文件settings進(jìn)行修改
Maven的配置文件:Maven目錄下的conf——>settings,在HOME目錄下有個(gè).m2的文件夾,如果僅僅是剛安裝Maven,而沒(méi)有運(yùn)行Maven的任何命令,那么可能無(wú)法看見(jiàn)這個(gè)目錄,一可以手動(dòng)創(chuàng)建這個(gè)目錄,二可以運(yùn)行某個(gè)Maven命令之后,將settings復(fù)制到.m2文件夾下,并對(duì)其修改,將settings賦值到.m2進(jìn)行修改的原因是可能對(duì)Maven的版本進(jìn)行升級(jí),這樣就不用每次對(duì)該文件進(jìn)行修改。
修改1:<localRepository>路徑</localRepository>它為可選項(xiàng),如果不對(duì)它進(jìn)行配置,它的默認(rèn)路徑軟件庫(kù)會(huì)安裝到${user.home}/.m2/repository下,如果想把它放在其他位置,就修改路徑。
修改2:鏡像<mirrors>Maven的核心倉(cāng)庫(kù),官方推薦使用英國(guó)的一個(gè)鏡像,配置這個(gè)鏡像,每次訪問(wèn)Maven,都會(huì)到這個(gè)庫(kù)進(jìn)行下載我們需要的軟件包,降低了中心倉(cāng)庫(kù)的負(fù)載,中心倉(cāng)庫(kù)為了避免造成太大訪問(wèn)量造成服務(wù)器的運(yùn)行問(wèn)題,有時(shí)會(huì)拒絕我們的訪問(wèn),所以通過(guò)指向英國(guó)的鏡像,訪問(wèn)的成功率會(huì)有所提升。
查看全部 -
使用Maven創(chuàng)建Spring MVC的環(huán)境(將在命令行創(chuàng)建好的Maven項(xiàng)目導(dǎo)入)
問(wèn)題:項(xiàng)目的build path里Order and Export發(fā)現(xiàn)目錄缺失,可以手動(dòng)添加缺失的目錄,根據(jù)目錄的缺少情況。
【一】pom配置
第一項(xiàng)配置:jar包版本配置——如果工程依賴比較復(fù)雜、且比較大的情況下,可以添加標(biāo)簽來(lái)設(shè)置需要用到的jar包版本,這樣就可以清晰的理解我們所使用的依賴軟件包的版本。
第二項(xiàng)目配置:引用jar包版本配置——依賴管理是Maven中比較核心的配置,因?yàn)镸aven可以管理一些傳遞的依賴,比如SpirngMVC依賴了Spring的包,而Hibernate也用到了Spring的包,當(dāng)這兩個(gè)依賴Spring版本不一樣的時(shí)候,依賴管理就發(fā)生了作用,依賴管理可以使用指定版本的Spring,這里是4.1.3.RELEASE版本,該項(xiàng)目中所依賴的Spring文件都將以該版本為例。
第三項(xiàng)配置:依賴管理——Maven提供依賴管理,項(xiàng)目所依賴的jar包都存在<dependencies>標(biāo)簽里,可以為我們構(gòu)建任意多個(gè)依賴的軟件包,因?yàn)樵?<properties>指明了Spring所有相關(guān)的版本,所以<dependencies><dependency>就不需要指明它的版本了。
第四項(xiàng)配置:插件配置——提供了額外功能,比如jetty,可以用它來(lái)測(cè)試和部署,但是和項(xiàng)目本身應(yīng)用沒(méi)有很大關(guān)聯(lián)。
【二】web.xml配置
將DispatcherServlet配置到Web環(huán)境:通過(guò)<servlet>和<servlet-mapping>標(biāo)簽,這里最關(guān)鍵的屬性是<servlet-name>,該標(biāo)簽的name可以自定義,但它關(guān)系到默認(rèn)的配置文件,如果不做任何其它配置(比如init-param),Spring就將在默認(rèn)位置,默認(rèn)的文件名來(lái)加載SpringMVC的配置文件(Spring會(huì)默認(rèn)加載WEB-IN下的mvc-dispatcher-servlet.xml),如下圖藍(lán)色字體,也可以通過(guò)<init-param>改變?cè)搮?shù),所以要在WEB-INF創(chuàng)建configs——>spring,并在spring文件夾下創(chuàng)建DispatcherServlet創(chuàng)建它對(duì)應(yīng)的上下文環(huán)境。
【三】SpringMVC配置文件(mvc-dispatcher-servlet.xml)
第一項(xiàng)配置:Spring的applicationContext激活對(duì)標(biāo)簽支持的一些生命周期的管理,所以它可以識(shí)別用標(biāo)簽配置的Bean的聲明。
第二項(xiàng)配置:DispatcherServlet上下文里只搜索帶有@Controller標(biāo)注的類,SpringMVC讓控制器(Controller)和請(qǐng)求之間發(fā)生聯(lián)系,并且做一些相應(yīng)的操作
第三項(xiàng)配置:DispatherServlet啟用基于annotation的HandlerMapping,通過(guò)如下圖完成
第四項(xiàng)配置:配置ViewResolver,通過(guò)它通知DispatcherServlet分發(fā)給那個(gè)View,只需要配置一個(gè)前綴和一個(gè)后綴,就可以將這些東西拼接成某個(gè)JSP文件,這里存放JSP文件是在WEB-INF/jsps文件夾下,所以要?jiǎng)?chuàng)建該文件夾。
Controller類的編寫(xiě):名為HelloMvcController,并且包必須在管理Controller標(biāo)簽路徑里,并且讓Spring知道這是一個(gè)Controller所以需要在類上添加@Controller,并且通知SpringMVC映射到哪一個(gè)URL路徑,通過(guò)@RequestMapping(/hello")攔截根目錄下的hello,并且編寫(xiě)一個(gè)方法返回一個(gè)字符串,并在方法上添加注解@RequestMapping("/mvc")如圖。
該Controller會(huì)響應(yīng)host:8080/hello/mvc的一個(gè)url,這就是SpirngMVC運(yùn)行的方式,請(qǐng)求和Controller之間的映射,它就會(huì)返回到home.jsp,所以在jsps中創(chuàng)建home.jsp。
命令行中:進(jìn)入項(xiàng)目的目錄,查看目錄中是否有pom,輸入mvn jetty:run,提供一個(gè)運(yùn)行的容器環(huán)境,運(yùn)行后maven就會(huì)解析所有的依賴等等,當(dāng)看到Start Jetty Server說(shuō)明Maven已經(jīng)成功啟動(dòng)了,這里使用了默認(rèn)的端口號(hào)8080,瀏覽器訪問(wèn):http://localhost:8080/hello/mvc,結(jié)果就會(huì)跳轉(zhuǎn)到相應(yīng)頁(yè)面。
拓展:使用Eclipse導(dǎo)入項(xiàng)目時(shí)遇到No projects are found to import提示的解決辦法https://blog.csdn.net/ancientear/article/details/86772425。
查看全部
舉報(bào)