<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SpringMVC常見面試知識點(diǎn)

          共 5417字,需瀏覽 11分鐘

           ·

          2023-05-11 06:33

          1.什么是SpringMVC ?簡單介紹下你對SpringMVC的理解?

          Spring MVC是一個基于Java的實現(xiàn)了MVC設(shè)計模式的請求驅(qū)動類型的輕量級Web框架,通過把Model,View,Controller分離,將Web層進(jìn)行職責(zé)解耦,把復(fù)雜的web應(yīng)用分成邏輯清晰的幾部分,簡化開發(fā),減少出錯,方便組內(nèi)開發(fā)人員之間的配合

          2.SpringMVC的流程?

          1) 用戶發(fā)送請求至前端控制器DispatcherServlet
          2) DispatcherServlet收到請求后,調(diào)用HandlerMapping處理器映射器,請求獲取Handler
          3) 處理器映射器根據(jù)請求url找到具體的處理器Handler,生成處理器對象及處理器攔截器(如果有則生成),一并返回給DispatcherServlet
          4) DispatcherServlet 調(diào)用 HandlerAdapter處理器適配器,請求執(zhí)行Handler
          5) HandlerAdapter 經(jīng)過適配調(diào)用 具體處理器進(jìn)行處理業(yè)務(wù)邏輯
          6) Handler執(zhí)行完成返回ModelAndView
          7) HandlerAdapter將Handler執(zhí)行結(jié)果ModelAndView返回給DispatcherServlet
          8) DispatcherServlet將ModelAndView傳給ViewResolver視圖解析器進(jìn)行解析
          9) ViewResolver解析后返回具體View
          10) DispatcherServlet對View進(jìn)行渲染視圖(即將模型數(shù)據(jù)填充至視圖中)
          11) DispatcherServlet響應(yīng)用戶
          b41030c28252a64e09fb1ea85f85181f.webp

          前端控制器DispatcherServlet :接收請求、響應(yīng)結(jié)果,相當(dāng)于轉(zhuǎn)發(fā)器,有了DispatcherServlet 就減少了其它組件之間的耦合度
          處理器映射器 HandlerMapping :根據(jù)請求的URL來查找Handler
          處理器適配器 HandlerAdapter :負(fù)責(zé)執(zhí)行Handler
          處理器 Handler :處理器,需要程序員開發(fā)
          視圖解析器 ViewResolver :進(jìn)行視圖的解析,根據(jù)視圖邏輯名將ModelAndView解析成真正的視圖(view)
          視圖View :View是一個接口, 它的實現(xiàn)類支持不同的視圖類型,如jsp,freemarker,pdf等等

          3.SpringMVC的優(yōu)點(diǎn)

          1)可以支持各種視圖技術(shù),而不僅僅局限于JSP

          2)與Spring框架集成(如IoC容器、AOP等)

          3)清晰的角色分配:前端控制器(dispatcherServlet) ,請求到處理器映射(handlerMapping),處理器適配器(HandlerAdapter),視圖解析器(ViewResolver)

          4) 支持各種請求資源的映射策略

          4.SpringMVC怎么樣設(shè)定重定向和轉(zhuǎn)發(fā)的?

          1)轉(zhuǎn)發(fā):在返回值前面加”forward:”,譬如”forward:user.do?name=method4”

          2)重定向:在返回值前面加”redirect:”,譬如”redirect: http://www.baidu.com

          5.SpringMVC常用的注解有哪些?

          @RequestMapping :用于處理請求 url 映射的注解,可用于類或方法上。用于類上,則表示類中的所有響應(yīng)請求的方法都是以該地址作為父路徑

          @RequestBody :注解實現(xiàn)接收http請求的json數(shù)據(jù),將json轉(zhuǎn)換為java對象

          @ResponseBody :注解實現(xiàn)將conreoller方法返回對象轉(zhuǎn)化為json對象響應(yīng)給客戶

          6.SpingMVC中的控制器的注解一般用哪個?有沒有別的注解可以替代?

          一般用 @Controller 注解,也可以使用 @RestController @RestController注解相當(dāng)于@ResponseBody + @Controller ,表示是表現(xiàn)層,除此之外,一般不用別的注解代替

          7.SpringMVC里面攔截器是怎么寫的?

          有兩種寫法,一種是 實現(xiàn)HandlerInterceptor接口 ,另外一種是 繼承適配器類,接著在接口方法當(dāng)中,實現(xiàn)處理邏輯 ;然后在SpringMvc的配置文件中配置攔截器即可:

              

          <!-- 配置SpringMvc的攔截器 --> <mvc:interceptors>

          <!-- 配置一個攔截器的Bean就可以了 默認(rèn)是對所有請求都攔截 -->
          <bean id="myInterceptor"class="com.pz.controller.MyHandlerInterceptor"></bean>

          <!-- 只針對部分請求攔截 -->
          <mvc:interceptor>
          <mvc:mapping path="/modelMap.do" />
          <bean class="com.pz.controller.MyHandlerInterceptorAdapter" />
          </mvc:interceptor> </mvc:interceptors>

          8.SpringMVC怎么和AJAX相互調(diào)用的?

          通過 Jackson框架 就可以把Java里面的對象直接轉(zhuǎn)化成Js可以識別的Json對象。具體步驟如下 :

          1)加入Jackson.jar

          2)在配置文件中配置json的映射

          3)在接受Ajax方法里面可以直接返回 Object、List 等,但方法前面要加上 @ResponseBody注解

          9.SpringMVC的異常處理 ?

          可以將異常拋給Spring框架,由Spring框架來處理

          我們只需要配置簡單的異常處理器,在異常處理器中添視圖頁面即可

          10.SpringMVC的控制器是不是單例模式?如果是,有什么問題?怎么解決?

          是單例模式,在多線程訪問的時候有 線程安全問題

          解決方案是 在控制器里面不能寫可變狀態(tài)量

          如果需要使用這些可變狀態(tài),可以使用 ThreadLocal機(jī)制 解決,為每個線程單獨(dú)生成一份變量副本,獨(dú)立操作,互不影響

          11.如果在攔截請求中,我想攔截get方式提交的方法,怎么配置?

          可以在 @RequestMapping 注解里面加上 method=RequestMethod.GET

          12.怎樣在方法里面得到Request,或者Session?

          直接在 方法的形參中聲明request ,SpringMvc就 自動把request對象傳入

          13.如果想在攔截的方法里面得到從前臺傳入的參數(shù),怎么得到?

          直接在 形參里面聲明這個參數(shù) 就可以,但必須 名字和傳過來的參數(shù)一樣

          14.如果前臺有很多個參數(shù)傳入,并且這些參數(shù)都是一個對象的,那么怎么樣快速得到這個對象?

          直接在 方法中聲明這個對象 ,SpringMvc就 自動會把屬性賦值到這個對象里面

          15.SpringMVC中函數(shù)的返回值是什么?

          String,ModelAndView

          ModelAndView類 把視圖和數(shù)據(jù)都合并的一起的,但 一般用String比較好

          16.SpringMVC用什么對象從后臺向前臺傳遞數(shù)據(jù)的?

          通過 ModelMap 對象,可以在這個對象里面 調(diào)用put方法 ,把對象加到里面,前端就可以通過 el表達(dá)式 拿到

          17.怎么樣把ModelMap里面的數(shù)據(jù)放入Session里面?

          可以在類上面加上 @SessionAttributes 注解, 里面包含的字符串 就是要 放入session里面的key

          18.Restful風(fēng)格

          Restful風(fēng)格的API是一種軟件架構(gòu)風(fēng)格 ,設(shè)計風(fēng)格而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計原則和約束條件

          主要用于客戶端和服務(wù)器交互類的軟件。基于這個風(fēng)格設(shè)計的軟件可以更簡潔,更有層次,更易于實現(xiàn)緩存等機(jī)制

          在Restful風(fēng)格中,用戶請求的url使用同一個url而用請求方式:get,post,delete,put…等方式對請求的處理方法進(jìn)行區(qū)分,這樣可以在前后臺分離式的開發(fā)中使得前端開發(fā)人員不會對請求的資源地址產(chǎn)生混淆和大量的檢查方法名的麻煩,形成一個統(tǒng)一的接口

          在Restful風(fēng)格中,現(xiàn)有規(guī)定如下:

          GET(SELECT) :從服務(wù)器查詢,可以在服務(wù)器通過請求的參數(shù)區(qū)分查詢的方式

          POST(CREATE) :在服務(wù)器新建一個資源,調(diào)用insert操作

          PUT(UPDATE) :在服務(wù)器更新資源,調(diào)用update操作

          PATCH(UPDATE) :在服務(wù)器更新資源(客戶端提供改變的屬性)。(目前jdk7未實現(xiàn),tomcat7也不行)

          DELETE(DELETE) :從服務(wù)器刪除資源,調(diào)用delete語句

          瀏覽 27
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人妻巨大乳一二三区 | 日韩一级片 | 内射短视频| 中文字幕三级 | 国产精品久久电影网 |