<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面試高頻問題整理

          共 3786字,需瀏覽 8分鐘

           ·

          2021-11-18 10:51

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號”

          優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

          1.SpringMVC是什么? 請說出你對它的理解?

          SpringMVC是Spring將Web層基于MVC封裝后的框架.

          在沒有SpringMVC之前,Web層的Servlet負(fù)責(zé)的事情很多,很雜.
          ? 例如:接收請求,調(diào)用service層處理請求,封裝返回結(jié)果,響應(yīng)信息給瀏覽器.
          SpringMVC將Servlet負(fù)責(zé)的事情分門別類,進(jìn)行具體的劃分.
          ? M-model: 封裝數(shù)據(jù)
          ? V-View: 封裝視圖
          ? C-Controller: 處理器方法,用于接收請求

          ?

          2.SpringMVC的加載流程是什么?

          加載流程,即服務(wù)器啟動時(shí),加載SpringMVC的環(huán)境:
          ?? ??? ?1.服務(wù)器啟動時(shí)從web.xml文件開始加載
          ??? 2.初始總控制器 DispatcherServlet
          ??? 3.在總控制器的初始化方法中(initStrategies:初始化策略),完成核心組件的加載
          ?? ??? ?處理器映射器:HandlerMapping
          ???????? 建立綁定路徑與方法全限定名的對應(yīng)關(guān)系
          ????? 處理器適配器:HandlerAdapter
          ???????? 適配處理器的實(shí)現(xiàn)方式,調(diào)用指定的類反射執(zhí)行處理器方法
          ????? 視圖解析器:ViewResolver
          ???????? 根據(jù)邏輯視圖生成對應(yīng)的物理視圖,并將物理視圖返回

          ?

          3.SpringMVC的執(zhí)行流程是什么?

          執(zhí)行流程,即瀏覽器發(fā)起請求后,框架內(nèi)部的執(zhí)行鏈路:
          ?? ??? ?1.瀏覽器發(fā)起請求給服務(wù)器
          ??? 2.DispatcherServlet攔截來自瀏覽器的請求
          ??? 3.總控制器調(diào)用處理器映射器,根據(jù)請求路徑找到對應(yīng)的方法全限定名,并返回給總控制器
          ??? 4.總控制器調(diào)用處理器適配器,找到對應(yīng)的方法適配實(shí)現(xiàn)方式,調(diào)用指定的實(shí)現(xiàn)類反射執(zhí)行方法
          ??? 5.總控制器調(diào)用視圖解析器,根據(jù)邏輯視圖找到對應(yīng)的物理視圖
          ??? 6.生成響應(yīng)

          4.SpringMVC的核心組件有哪些?作用是什么?  

          ??? DispatcherServlet: 總控制器/前端控制器
          ????? 接收請求,調(diào)度
          ??? HandlerMapping: 處理器映射器
          ????? SpringMVC框架加載時(shí),存放請求路徑與處理器方法之間的映射關(guān)系
          ??? HandlerAdapter: 處理器適配器
          ????? 適配處理器的實(shí)現(xiàn)方式,實(shí)現(xiàn)方式不同調(diào)用的適配器類不同.不同的適配器類,可以處理不同的處理器方法.
          ??? ViewResolver: 視圖解析器
          ????? 根據(jù)邏輯視圖,生成對應(yīng)的物理視圖,并將物理視圖返回給總控制器
          ??? Handler: 處理器
          ????? 我們自己編寫的用于處理器業(yè)務(wù)的方法

          5.SpringMVC常用注解有哪些?

          @RequestMapping
          ?? ?為處理器綁定瀏覽器訪問的路徑
          @RequestBody
          ?? ?解析請求攜帶的json數(shù)據(jù),封裝到對應(yīng)的javaBean中
          @ResponseBody
          ?? ?將響應(yīng)結(jié)果裝換成json并響應(yīng)給瀏覽器
          @Controller
          ?? ?用于創(chuàng)建Controller層類對象,并將類對象存放到SpringMVC的IOC容器中
          @ControllerAdvice
          ?? ?全局異常處理
          ? 全局?jǐn)?shù)據(jù)綁定
          ? 全局?jǐn)?shù)據(jù)預(yù)處理

          6.@Controller注解的作用

          用于創(chuàng)建Controller層類對象,并將類對象存放到SpringMVC的IOC容器中

          7.@RequestMapping注解的作用

          ?注解書寫位置:
          ?? ?類上: 用于窄化請求路徑,訪問此類中的方法時(shí),方法路徑前都要加上此路徑
          ?? ?方法上: 為處理器方法綁定瀏覽器訪問的路徑

          8.SpringMVC如何設(shè)置轉(zhuǎn)發(fā)和重定向?

          請求轉(zhuǎn)發(fā):
          ?? ?邏輯視圖字符串 + 視圖解析器
          ?? ?響應(yīng)標(biāo)記 + 物理視圖字符串
          重定向:
          ?? ?響應(yīng)標(biāo)記 + 物理視圖字符

          9.SpringMVC中攔截器編寫方式?

          SpringMVC中的攔截器實(shí)現(xiàn)方式有兩種:
          ?? ?1.編寫一個(gè)類實(shí)現(xiàn)HandlerInterceptor接口,重寫抽象方法
          ? 2.編寫一個(gè)類繼承HandlerInterceptorAdapter,選擇性的重寫方法
          以上兩種方式需要在核心配置文件中配置攔截的路徑

          10.SpringMvc的處理器是不是單例模式?如果是,有什么問題?怎么解決?

          是單例模式,在多線程訪問的時(shí)候有線程安全問題.
          解決方案: 在控制器里面不能寫可變狀態(tài)量,如果需要使用這些可變的量,可以使用ThreadLocal解決,為每個(gè)線程單獨(dú)生成一個(gè)變量,獨(dú)立操作,互不影響.

          11.Springmvc的優(yōu)點(diǎn)?  

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

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

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

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

          ?

          其他小白零碎問題整理:

          1、SpingMvc中的控制器的注解一般用那個(gè),有沒有別的注解可以替代

          一般用@Conntroller注解,表示是表現(xiàn)層,不能用用別的注解代替.

          2、@RequestMapping注解用在類上面有什么作用

          用于類上,表示類中的所有響應(yīng)請求的方法都是以該地址作為父路徑。

          3
          、怎么樣把某個(gè)請求映射到特定的方法上面

          直接在方法上面加上注解@RequestMapping,并且在這個(gè)注解里面寫上要攔截的路徑

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

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

          5、如果在攔截請求中,我想攔截提交參數(shù)中包含”type=test”字符串,怎么配置

          可以在@RequestMapping注解里面加上params=”type=test”

          6、我想在攔截的方法里面得到從前臺傳入的參數(shù),怎么得到

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

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

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

          8、怎么樣在方法里面得到Request,或者Session

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

          9
          、SpringMvc中函數(shù)的返回值是什么.

          返回值可以有很多類型,有String, ModelAndView,當(dāng)一般用String比較好

          10、SpringMvc怎么處理返回值的

          SpringMvc根據(jù)配置文件中InternalResourceViewResolver的前綴和后綴,用前綴+返回值+后綴組成完整的返回值

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

          在返回值前面加”forward:”就可以讓結(jié)果轉(zhuǎn)發(fā),譬如”forward:user.do?name=method4” 在返回值前面加”redirect:”就可以讓返回值重定向,譬如”redirect:http://www.baidu.com”

          12、 SpringMvc用什么對象從后臺向前臺傳遞數(shù)據(jù)的

          通過ModelMap對象,可以在這個(gè)對象里面用put方法,把對象加到里面,前臺就可以通過el表達(dá)式拿到

          13、SpringMvc中有個(gè)類把視圖和數(shù)據(jù)都合并的一起的,叫什么

          叫ModelAndView

          14、怎么樣把ModelMap里面的數(shù)據(jù)放入Session里面

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

          15、SpringMvc怎么和AJAX相互調(diào)用的

          通過Jackson框架就可以把Java里面的對象直接轉(zhuǎn)化成Js可以識別的Json對象
          具體步驟如下
          1.加入Jackson.jar
          2.在配置文件中配置json的映射
          3.在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解

          16、當(dāng)一個(gè)方法向AJAX返回特殊對象,譬如Object,List等,需要做什么處理

          要加上@ResponseBody注解

          17、SpringMvc里面攔截器是怎么寫的

          有兩種寫法,一種是實(shí)現(xiàn)接口,另外一種是繼承適配器類,然后在SpringMvc的配置文件中配置攔截器即可:?

          1?
          2?
          3????"/modelMap.do"?/>
          4????"com.et.action.MyHandlerInterceptorAdapter"?/>
          5?


          ? 作者?|??再思

          來源 |??cnblogs.com/wu-sheng/p/15552149.html


          加鋒哥微信:?java3459??
          圍觀鋒哥朋友圈,每天推送Java干貨!

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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  欧洲性爱视频在线观看 | 日韩熟女一区二区 | 久久少妇AV | 亚洲偷 | 青娱乐福利 |