springMVC---基礎(chǔ)

什么是springMVC

springMVC框架原理

  • 前端控制器遥倦、處理器映射器、處理器適配器退渗、試圖解析器

springMVC入門程序

  • 目的:前端控制器导绷、處理器映射器犀勒、處理器適配器、試圖解析器的學(xué)習(xí)
    非注解的處理器映射器妥曲、處理器適配器
    注解的處理器映射器贾费、處理器適配器(掌握)
    springMVC和mybatis整合(掌握)
    springMVC注解開發(fā):
    常用注解學(xué)習(xí)
    參數(shù)綁定(簡單類型、pojo逾一、集合類型)

什么是mvc

mvc是一個(gè)設(shè)計(jì)模式铸本,mvc在b/s系統(tǒng)下的應(yīng)用


image.png

springMVC的框架

第一步:發(fā)起請求到前端控制器(DispatcherServlet)
第二步:前端控制器請求HandlerMapping查找Handler肮雨,可以根據(jù)xml配置遵堵、注解進(jìn)行查找
第三步:處理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器調(diào)用處理器適配器去執(zhí)行Handler
第五步:處理器適配器去執(zhí)行Handler
第六步:Handler執(zhí)行完成,給適配器返回ModelAndView
第七步:處理器適配器向前端控制器返回ModeAndView
ModeAndView是springMVC框架的一個(gè)底層對象怨规,包括Model和View
第八步:前端控制器請求視圖解析器去進(jìn)行試圖解析陌宿,根據(jù)邏輯視圖名解析成真正的視圖(jsp)
第九步:視圖解析器向前端控制器返回view
第十步:前端控制器進(jìn)行視圖渲染(就是將模型數(shù)據(jù)(在model and view中)填充到request域)
第十一步:前端控制器向用戶響應(yīng)結(jié)果


image.png

組件

  1. 前端控制器DispatcherServlet(一般不用程序員開發(fā))
    作用:接受請求,響應(yīng)結(jié)果波丰,相當(dāng)于轉(zhuǎn)發(fā)器(中央處理器)
    有了DispatcherServlet就減少了其他組件之間的耦合度
  2. 處理器映射器HandlerMapping(一般不用程序員開發(fā))
    作用:根據(jù)請求的url查找Handler
  3. 處理器適配器HandlerAdapter
    作用:按照特定規(guī)則(HandlerAdapter要求的規(guī)則)去執(zhí)行Handler
  4. 處理器Handler(需要程序員開發(fā))
    注意:編寫Handler時(shí)按照HandlerAdapter的要求去做壳坪,這樣適配器才可以正確執(zhí)行Handler
  5. 視圖解析器view resolver(一般不用程序員開發(fā))
    作用:進(jìn)行視圖解析,根據(jù)邏輯視圖解析成真正的視圖(view)
  6. 視圖view(需要開發(fā)jsp)
    view是一個(gè)接口掰烟,實(shí)現(xiàn)類就是支持不同的view類型(jsp,freemarker,pdf……)

入門程序

  • 配置前端控制器(web.xml下的<web-app內(nèi)>)
  <!--配置springmvc前端控制器-->
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!--contextConfigLocation配置springmvc加載的配置文件(配置處理器映射器等等)
      如果不配置contextConfigLocation默認(rèn)加載的是
      /WBENB_INF/servlet名稱-servlet.xml(springmvc-servlet.xml)
      -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/spring-web.xml</param-value>
    </init-param>
  </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <!--第一種:*.action爽蝴,訪問以.action結(jié)尾由DispatcherServlet進(jìn)行解析
        第二種:/ 所有訪問的地址都由DispatcherServlet進(jìn)行解析,
        對于靜態(tài)文件的解析需要配置不讓DispatcherServlet進(jìn)行解析
        使用此種方法可以實(shí)現(xiàn)RESTful風(fēng)格的url
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
  • 配置處理器映射器

在classpath下的springmvc.xml中配置處理器映射器

  • 配置handler

在classpath下的springmvc.xml中配置Handler
將編寫的Handler在spring容器中加載

  • 配置處理器適配器

在classpath下的springmvc.xml中配置處理器適配器

  • 配置視圖解析器

在classpath下的springmvc.xml中配置視圖解析器

整合如下所示:

    <!--配置Handler-->
    <bean name="/queryItems.action" class="cn.persit.ssm.controller.ItemsController" />
    <!--處理器映射器
    將bean的name作為url進(jìn)行查找纫骑,需要在配置Handler時(shí)指定beanName(就是url)
    -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    <!--處理器適配器
    所有的處理器適配器都實(shí)現(xiàn)HandlerAdapter
    -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    <!--視圖解析器
    解析jsp視圖蝎亚,默認(rèn)使用jstl標(biāo)簽,故必須得有jstl包
    viewClass:指定使用使用jstl標(biāo)簽
    prefix:指定jsp路徑的前綴
    suffix:指定jsp路徑的后綴
    -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/web/" />
        <property name="suffix" value=".jsp" />
    </bean>

注解的映射器先馆、適配器

    <!--注解適配器-->
    <bean 
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
    <!--注解映射器-->
    <bean 
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
  • 常用方式
    <!--使用mvc的注解驅(qū)動(mvc:annotation-driven)代替注解驅(qū)動器和適配器的配置
    mvc:annotation-driven默認(rèn)加載很多的參數(shù)綁定方法发框,
    比如json轉(zhuǎn)換解析器就默認(rèn)加載了,
    如果使用mvc:annotation-driven就不用配置驅(qū)動器和適配器
    實(shí)際開發(fā)就是使用mvc:annotation-driven
    -->
    <mvc:annotation-driven>

    </mvc:annotation-driven>
  • 注解的Handler

盡量不使用繼承
@Controller標(biāo)識它是一個(gè)控制器
成對出現(xiàn)(注解的映射器煤墙、注解的配置器)
@RequestMapping("/訪問名稱[url])一般建議將url和方法名一致

    <!--對于注解的Handler可以單個(gè)配置
    實(shí)際開發(fā)中建議使用組件掃描
    -->
    <bean class="cn.persit.ssm.controller.ItemsController" />
    <!--可以掃描controller梅惯、service……
    這里讓其掃描Controller
    -->
    <context:component-scan base-package="cn.persit.ssm" >
        
    </context:component-scan>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宪拥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子铣减,更是在濱河造成了極大的恐慌她君,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葫哗,死亡現(xiàn)場離奇詭異犁河,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)魄梯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門桨螺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酿秸,你說我怎么就攤上這事灭翔。” “怎么了辣苏?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵肝箱,是天一觀的道長。 經(jīng)常有香客問我稀蟋,道長煌张,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任退客,我火速辦了婚禮骏融,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萌狂。我一直安慰自己档玻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布茫藏。 她就那樣靜靜地躺著误趴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪务傲。 梳的紋絲不亂的頭發(fā)上凉当,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機(jī)與錄音售葡,去河邊找鬼看杭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛天通,可吹牛的內(nèi)容都是我干的泊窘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烘豹!你這毒婦竟也來了瓜贾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤携悯,失蹤者是張志新(化名)和其女友劉穎祭芦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體憔鬼,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡龟劲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轴或。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昌跌。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖照雁,靈堂內(nèi)的尸體忽然破棺而出蚕愤,到底是詐尸還是另有隱情,我是刑警寧澤饺蚊,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布萍诱,位于F島的核電站,受9級特大地震影響污呼,放射性物質(zhì)發(fā)生泄漏裕坊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一燕酷、第九天 我趴在偏房一處隱蔽的房頂上張望籍凝。 院中可真熱鬧,春花似錦悟狱、人聲如沸静浴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至双絮,卻和暖如春浴麻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背囤攀。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工软免, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焚挠。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓膏萧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子榛泛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容