日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

如何理解SpringMVC

瀏覽:30日期:2023-07-06 17:44:23
目錄一、SpringMVC簡(jiǎn)介二、SpringMVC核心組件2.1、DispatcherServlet2.2、HandlerMapping2.3、HandlerInterceptor2.4、HandlerExecutionChain2.5、HandlerAdapter2.6、Handler2.7、ModelAndView2.8、ViewResolver2.9、View三、配置Maven環(huán)境變量3.1、Maven介紹3.2、Maven下載安裝3.2.1、Maven下載3.2.2、配置環(huán)境變量3.2.3、配置Maven配置文件(本地倉(cāng)庫(kù)路徑、鏡像)3.2.4、用Maven創(chuàng)建項(xiàng)目一、SpringMVC簡(jiǎn)介

MVC是我們開(kāi)發(fā)WEB應(yīng)用程序的通用架構(gòu)方式

如何理解SpringMVC

MVC的核心思想是業(yè)務(wù)數(shù)據(jù)抽取和業(yè)務(wù)數(shù)據(jù)呈現(xiàn)相分離。

MVC:M(Model)+V(View)+C(Controller)

M(模型層):業(yè)務(wù)數(shù)據(jù)的信息表示,通常是業(yè)務(wù)實(shí)體

V(視圖層):為用戶呈現(xiàn)數(shù)據(jù)的頁(yè)面

C(控制層):調(diào)用業(yè)務(wù)邏輯產(chǎn)生合適的數(shù)據(jù)(Model),同時(shí)傳遞數(shù)據(jù)(Model)給視圖層(View)呈現(xiàn)給用戶

MVC:是一種架構(gòu)模式,將業(yè)務(wù)邏輯和頁(yè)面展示分離,使程序分層、分工合作,既相互獨(dú)立,又協(xié)同合作。

二、SpringMVC核心組件2.1、DispatcherServlet

前端控制器,核心

作用:接收請(qǐng)求,響應(yīng)結(jié)果,相當(dāng)于轉(zhuǎn)發(fā)器,中央處理器,降低了組件之間的耦合性。

用戶發(fā)送請(qǐng)求交給DispatcherServlet,DispatcherServlet是整個(gè)流程控制的中心,由它調(diào)用其他組件處理用戶請(qǐng)求,分發(fā)到具體的對(duì)應(yīng)Controller,從而獲取到需要的業(yè)務(wù)數(shù)據(jù)Model,Model再通過(guò)DispatcherServlet傳遞給View完成頁(yè)面呈現(xiàn);DispatcherServlet的存在降低了組件的之間的耦合性。

2.2、HandlerMapping

處理器映射器

作用:根據(jù)請(qǐng)求的URL,找到對(duì)應(yīng)的Handler,幫助DispatcherServlet找到對(duì)應(yīng)的Controller

HandlerMapping負(fù)責(zé)根據(jù)用戶請(qǐng)求找到Handler即處理器,SpringMVC提供了多種不同的映射器實(shí)現(xiàn)不同的映射方式,例如:配置文件方式,實(shí)現(xiàn)接口方式,注解方式等。

2.3、HandlerInterceptor

Handler執(zhí)行前后攔截器

HandlerInterceptor是個(gè)接口,里面包含三個(gè)方法:preHandle、postHandle、afterCompletion

分別在Handler執(zhí)行前、執(zhí)行中、執(zhí)行完成后執(zhí)行的三個(gè)方法

2.4、HandlerExecutionChain

HandlerMapping返回給DispatcherServlet的執(zhí)行鏈

HandlerMapping返回給DispatcherServlet的不光有Handler,還有HandlerInterceptor

preHandle——>ControllerMethod——>postHandle——>afterCompletion

如何理解SpringMVC

這個(gè)鏈如何實(shí)現(xiàn)的呢?使用了Java的反射機(jī)制reflection

2.5、HandlerAdapter

處理器適配器

作用:將各種Controller適配成DispatcherServlet可以使用的Handler,通過(guò)特定規(guī)則(HandlerAdapter要求的規(guī)則)去執(zhí)行Handler

通過(guò)HandlerAdapter對(duì)處理器進(jìn)行執(zhí)行,這是適配器模式的應(yīng)用,通過(guò)擴(kuò)展適配器可以對(duì)更多類型的處理器進(jìn)行執(zhí)行。

2.6、Handler

處理器(需要工程師開(kāi)發(fā))

注意:編寫Handler時(shí)需要HandlerAdapter的要求去做,這樣HandlerAdapter才可以正確執(zhí)行Handler

Handler是繼DispatcherServlet前端控制器的后臺(tái)控制器,在DispatcherServlet控制下對(duì)用戶請(qǐng)求進(jìn)行處理,Handler涉及業(yè)務(wù)需求,所以需要工程師針對(duì)用戶需求進(jìn)行開(kāi)發(fā),最終返回業(yè)務(wù)數(shù)據(jù)

2.7、ModelAndView

SpringMVC中對(duì)Model的一種表示形式

SpringMVC中有Model、Map,但是SpringMVC都會(huì)將其轉(zhuǎn)化為ModelAndView,Model、Map都是ModelAndView的具體表現(xiàn)

如何理解SpringMVC

2.8、ViewResolver

視圖解析器

作用:進(jìn)行視圖解析,根據(jù)邏輯視圖名解析成真正的視圖View

ViewResolver負(fù)責(zé)將處理結(jié)果生成View視圖,ViewResolver首先根據(jù)邏輯視圖名解析成具體的頁(yè)面地址,然后對(duì)View進(jìn)行渲染,將處理結(jié)果通過(guò)頁(yè)面展示給用戶;SpringMVC提供了很多類型View視圖,包括:jstlView、freemarkerView、pdfView、jsp、html等。

2.9、View

視圖(需要工程師開(kāi)發(fā)jsp、html)

View是一個(gè)接口,實(shí)現(xiàn)類支持不同的類型(jsp、html、freemarker、pdf等)

如何理解SpringMVC

三、配置Maven環(huán)境變量3.1、Maven介紹

pom:pom.xml配置文件,通過(guò)配置完成依賴關(guān)系

DependencyManagement:通過(guò)<dependencies><dependency></dependency></dependencies>節(jié)點(diǎn)配置

3.2、Maven下載安裝3.2.1、Maven下載

http://maven.apache.org/download.cgi

如何理解SpringMVC

3.2.2、配置環(huán)境變量

添加M2_HOME:指向Maven解壓后文件夾所在根目錄

編輯Path:添加%M2_HOME%bin;

如何理解SpringMVC

如何理解SpringMVC

3.2.3、配置Maven配置文件(本地倉(cāng)庫(kù)路徑、鏡像)

將Maven安裝文件夾下conf文件夾中的settings.xml拷貝一份放在電腦home下的.m2文件夾中

如何理解SpringMVC

對(duì)本地home下.m2中的settings.xml進(jìn)行修改:

(1)可以修改本地倉(cāng)庫(kù)的存儲(chǔ)位置(可選),默認(rèn)存儲(chǔ)在home下.m2文件夾中:

如何理解SpringMVC

(2)可以修改中央倉(cāng)庫(kù)的訪問(wèn)路徑,修改為英文的這個(gè)路徑,可以加快訪問(wèn)速度,減小中央倉(cāng)庫(kù)壓力:

如何理解SpringMVC

3.2.4、用Maven創(chuàng)建項(xiàng)目

(1)首先用Eclipse集成Maven,推薦使用4.3(Kepler)及以上版本Eclipse,因?yàn)樽约杭闪薓aven插件m2e

(2)配置Eclipse使用剛剛下載的Maven,以及剛剛配置的settings.xml配置文件:

    在eclipse中選擇Window-Preferences,彈出以下窗口,然后點(diǎn)擊Installations,在右側(cè)點(diǎn)擊Add添加按鈕:

如何理解SpringMVC

找到下載安裝的Maven文件夾根目錄,點(diǎn)擊Finish:

如何理解SpringMVC

勾選剛剛添加的maven,點(diǎn)擊Apply,最后點(diǎn)擊OK,配置完成:

如何理解SpringMVC

(3)創(chuàng)建一個(gè)Maven項(xiàng)目:

Eclipse中左側(cè)欄右鍵,選擇New-Project

如何理解SpringMVC

選擇Maven Project,點(diǎn)擊Next:

如何理解SpringMVC

再次Next:

如何理解SpringMVC

選擇一個(gè)符合類型的,點(diǎn)擊Next:

如何理解SpringMVC

填寫Group Id,Artifacted Id,Version,Package,點(diǎn)擊Finish:

如何理解SpringMVC

(4)修改pom.xml

<!-- 加入變量,替代我們用到的工程版本 --> <properties> <commons-lang-version>2.6</commons-lang-version> <slf4j-version>1.7.6</slf4j-version> <spring-version>4.1.3.RELEASE</spring-version> </properties> <!-- 配置依賴管理:讓maven幫我們管理傳遞依賴 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId> <version>${spring.version}</version> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 配置這個(gè)項(xiàng)目所依賴的包 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.3.RELEASE</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.6</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <!-- 添加組件:jetty是為了方便測(cè)試運(yùn)行 --> <build> <plugins> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.2.v20140723</version> </plugin> </plugins> </build>

如果當(dāng)前包本地倉(cāng)庫(kù),不存在,可以點(diǎn)擊項(xiàng)目,右鍵,選擇Maven-Add Dependency

如何理解SpringMVC

填寫Group Id, Artifacted Id, Version之后,點(diǎn)擊OK,Maven就會(huì)自動(dòng)從Maven倉(cāng)庫(kù)下載對(duì)應(yīng)版本的jar包到本地倉(cāng)庫(kù)中:

如何理解SpringMVC

(5)配置WEB應(yīng)用,修改web.xml

<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:context='http://www.springframework.org/schema/context' xmlns:mvc='http://www.springframework.org/schema/mvc' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd'><!-- 激活@Required @Autowired @Resource等標(biāo)注 --> <context:annotation-config/><!-- DispatcherServlet上下文,只搜索@Controller標(biāo)注的類,不搜索其他標(biāo)注的類 --> <context:component-scan base-package='com.ztl.springmvc.controller'> <context:include-filter type='annotation' expression='org.springframework.stereotype.Controller'/> </context:component-scan> <!-- 讓DispatcherServlet啟用基于Annotation的HandlerMapping --> <mvc:annotation-driven/><!-- 將靜態(tài)文件指定到某個(gè)特殊的文件夾中統(tǒng)一處理 --> <mvc:resources location='/resources/' mapping='/resources/**'/><bean class='org.springframework.web.servlet.view.InternalResourceViewResolver'> <property name='viewClass' value='org.springframework.web.servlet.view.JstlView'/> <property name='prefix' value='/WEB-INF/jsp/'/> <property name='suffix' value='.jsp'/> </bean><bean class='org.springframework.web.servlet.handler.SimpleMappingExceptionResolver'> <property name='exceptionMappings'> <props> <prop key='com.ztl.springmvc.UserException'>error</prop> <prop key='java.lang.NullPointException'>exception</prop> </props> </property> </bean></beans>

(6)創(chuàng)建一個(gè)Controller,以及對(duì)應(yīng)的頁(yè)面,寫個(gè)簡(jiǎn)單demo

寫一個(gè)HelloMvcController類:

package com.ztl.springmvc.controller; import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping; @Controller@RequestMapping('/hello')public class HelloMvcController {@RequestMapping('/sayhello')public String sayHello(){return 'home';}}

通過(guò)pom.xml中配置的jetty插件來(lái)進(jìn)行啟動(dòng)測(cè)試:

使用cmd命令行,找到項(xiàng)目地址,然后找到當(dāng)前這個(gè)模塊項(xiàng)目:

如何理解SpringMVC

當(dāng)看見(jiàn)Started Jetty Server時(shí),則代表啟動(dòng)完成了,可以在瀏覽器訪問(wèn)了

如何理解SpringMVC

在瀏覽器地址欄輸入http://localhost:8080/hello/sayhello進(jìn)行訪問(wèn):

如何理解SpringMVC

以上就是如何理解SpringMVC的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
9999国产精品| 日韩精品一区二区三区中文字幕| 国产欧美日韩一区二区三区四区| 最新国产精品视频| 免费成人性网站| 综合色就爱涩涩涩综合婷婷| 少妇精品久久久| 欧美亚洲国产日韩| 国产精品调教| 久久国产三级| 精品国产午夜| 久久人人精品| 中文亚洲欧美| 日韩精品视频网站| 国产精品国产三级在线观看| 久久亚洲黄色| 成人va天堂| 亚洲一区亚洲| 欧美日韩国产一区二区在线观看| 国产精品黄色| 私拍精品福利视频在线一区| 欧美91视频| 巨乳诱惑日韩免费av| 日韩欧美精品一区二区综合视频| 偷拍亚洲精品| 老牛国内精品亚洲成av人片| 成人日韩精品| 免费美女久久99| 国产精品高清一区二区| 日韩av免费大片| 99riav国产精品| 日本成人在线视频网站| 精品国产乱码久久久久久1区2匹| 成人羞羞在线观看网站| 亚洲综合精品四区| 久久激情综合网| 国产精品yjizz视频网| 蜜臀av免费一区二区三区| 亚洲精品免费观看| 黄色网一区二区| 一区在线观看| 国产精品xxxav免费视频| 亚洲1234区| 日韩精品欧美大片| 国产精品精品国产一区二区| 91久久久久| 国产精品巨作av| 久久久久久美女精品| 噜噜噜躁狠狠躁狠狠精品视频| 久久激五月天综合精品| 欧美sss在线视频| 日韩福利在线观看| 久久天堂精品| 亚洲青青久久| 成人免费一区| 国产免费成人| 国产中文字幕一区二区三区| 日韩在线观看一区二区| 精品视频国内| 亚洲午夜免费| 亚洲永久av| 天堂精品久久久久| se01亚洲视频| 国产精品亲子伦av一区二区三区| 欧美精品一区二区久久| 国产精品色婷婷在线观看| 狠狠干成人综合网| 精品日产乱码久久久久久仙踪林| 亚洲综合精品| 久久精品免费看| 中文字幕免费一区二区| 欧洲av不卡| 国产剧情一区二区在线观看| 亚洲自拍另类| 久久影院一区| 麻豆国产精品777777在线| 日韩精品一二三四| 日韩在线观看| 免费在线亚洲欧美| 日本亚洲视频在线| 女同性一区二区三区人了人一| 精品日韩一区| 日韩国产欧美三级| 日韩视频在线一区二区三区| 日韩av在线播放网址| 欧美在线91| 麻豆亚洲精品| 亚洲国产一区二区三区在线播放| 国产福利91精品一区二区| 日韩国产在线观看| 老司机久久99久久精品播放免费| 久久九九99| а√天堂8资源在线| 国产精品三级| 青草综合视频| 亚洲精品三级| 日韩精品一二三区| 精品一区三区| 日韩精品一区二区三区免费观影| 久久久精品国产**网站| 日韩福利在线观看| 亚洲资源网站| 中文一区一区三区免费在线观| 久久国产精品成人免费观看的软件| 久久精品亚洲| 久久国产精品色av免费看| 在线国产精品一区| 亚洲在线免费| 欧美一区=区| 午夜久久tv| 在线日韩欧美| 久久精品动漫| 久久久9色精品国产一区二区三区| 红杏一区二区三区| 精品一区视频| 精品国产精品久久一区免费式 | 精品一区二区三区中文字幕| 欧美亚洲自偷自偷| 日韩精品中文字幕吗一区二区| 在线观看亚洲精品福利片| 亚洲永久字幕| 首页欧美精品中文字幕| 日韩专区一卡二卡| 在线国产日韩| 日韩精品成人| 国产日韩欧美在线播放不卡| 欧美日韩1区| 久久99免费视频| 欧美激情aⅴ一区二区三区| 精品一区二区三区中文字幕视频| 成人污污视频| 日韩在线观看| 成人羞羞在线观看网站| 久久一区二区三区电影| 婷婷亚洲综合| 视频在线观看一区| 日韩av一区二区在线影视| 国产亚洲一区| 精品三级国产| 日韩三区免费| 9国产精品视频| 国产亚洲精品v| 亚洲理论在线| 欧美aa在线视频| 日韩中文在线电影| 亚洲免费成人| 日韩av中文字幕一区| 久久久久伊人| 久久中文视频| 亚洲3区在线| 久久精品伊人| 欧美不卡视频| 日本中文字幕视频一区| 国产极品一区| 欧洲亚洲一区二区三区| 亚洲一区二区网站| 香蕉久久久久久| 久久精品亚洲一区二区| 久久精品高清| 日韩精品久久久久久| 福利一区和二区| 亚洲欧洲午夜| 国产精品久久久久久久久久久久久久久| 在线人成日本视频| 亚洲欧美视频| 欧美精品91| 欧美综合另类| 久久狠狠亚洲综合| 久久狠狠婷婷| 日韩不卡手机在线v区| sm久久捆绑调教精品一区| 蜜臀av免费一区二区三区| 亚洲精品自拍| zzzwww在线看片免费| 免费在线观看视频一区| 精品国产亚洲日本| 亚洲男女自偷自拍| 久久永久免费| 国产视频一区三区| 久久99视频| 亚洲欧美日韩国产综合精品二区| 国产精品s色| 欧美日韩视频| 欧美国产日韩电影| 久久国产精品毛片| 久久久久久一区二区| 午夜在线精品偷拍| 国产一区二区三区四区二区| 午夜欧美精品久久久久久久| 欧美天堂一区二区| 欧美一区二区三区激情视频| 国产伦精品一区二区三区在线播放| 精品日韩视频| 国产精品麻豆成人av电影艾秋 | 视频一区中文字幕国产| 精品丝袜久久| 视频一区国产视频| 国产一区调教| 日韩激情视频网站| 欧美日韩日本国产亚洲在线|