大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

面試題首頁(yè) > Spring面試題

SpringMVC面試題

001什么是Spring MVC?

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

002Spring MVC優(yōu)點(diǎn)?

1. 與Spring框架集成,因此擁有Spring的優(yōu)點(diǎn)。
2. 支持RestFul風(fēng)格以及支持各種請(qǐng)求資源的映射策略。
3. SpringMVC提供強(qiáng)大的約定大于配置的契約式編程支持,例如前端控制器(dispatcherServlet) ,請(qǐng)求到處理器映射(handlerMapping),處理器適配器(HandlerAdapter),視圖解析器(ViewResolver)。開(kāi)發(fā)人員僅需規(guī)定進(jìn)行配置即可。
4. 可以十分靈活地實(shí)現(xiàn)數(shù)據(jù)驗(yàn)證、格式化和數(shù)據(jù)綁定機(jī)制,可以使用任意對(duì)象進(jìn)行數(shù)據(jù)綁定操作。

003Spring MVC的主要組件?

(1)前端控制器 DispatcherServlet(不需要程序員開(kāi)發(fā))
作用:接收請(qǐng)求、響應(yīng)結(jié)果,相當(dāng)于轉(zhuǎn)發(fā)器,有了DispatcherServlet 就減少了其它組件之間的耦合度。
(2)處理器映射器HandlerMapping(不需要程序員開(kāi)發(fā))
作用:根據(jù)請(qǐng)求的URL來(lái)查找Handler
(3)處理器適配器HandlerAdapter
注意:在編寫Handler的時(shí)候要按照HandlerAdapter要求的規(guī)則去編寫,這樣適配器HandlerAdapter才可以正確的去執(zhí)行Handler。
(4)處理器Handler(需要程序員開(kāi)發(fā))
(5)視圖解析器 ViewResolver(不需要程序員開(kāi)發(fā))
作用:進(jìn)行視圖的解析,根據(jù)視圖邏輯名解析成真正的視圖(view)
(6)視圖View(需要程序員開(kāi)發(fā)jsp)
View是一個(gè)接口, 它的實(shí)現(xiàn)類支持不同的視圖類型(jsp,freemarker,pdf等等)

004SpringMVC的流程?

流程不用記得那么清楚,能把SpringMVC程序開(kāi)發(fā)步驟說(shuō)清楚就行。
第一步:發(fā)起請(qǐng)求到前端控制器(DispatcherServlet)
第二步:前端控制器向處理器映射器(HandlerMapping)發(fā)請(qǐng)求查找 Handler (可以根據(jù)xml配置、注解進(jìn)行查找)
第三步:處理器映射器向前端控制器返回Handler,處理器映射器會(huì)把請(qǐng)求映射為HandlerExecutionChain對(duì)象(包含一個(gè)Handler處理器(頁(yè)面控制器)對(duì)象,多個(gè)HandlerInterceptor攔截器對(duì)象),通過(guò)這種策略模式,很容易添加新的映射策略
第四步:前端控制器調(diào)用處理器適配器(HandlerAdapter)去執(zhí)行Handler
第五步:處理器適配器將會(huì)根據(jù)適配的結(jié)果去執(zhí)行Handler
第六步:Handler執(zhí)行完成給處理器適配器返回ModelAndView
第七步:處理器適配器向前端控制器返回ModelAndView (ModelAndView是springmvc框架的一個(gè)底層對(duì)象,包括 Model和view)
第八步:前端控制器請(qǐng)求視圖解析器(ViewResolver)去進(jìn)行視圖解析 (根據(jù)邏輯視圖名解析成真正的視圖(jsp)),通過(guò)這種策略很容易更換其他視圖技術(shù),只需要更改視圖解析器即可
第九步:視圖解析器向前端控制器返回View
第十步:前端控制器進(jìn)行視圖渲染 (視圖渲染將模型數(shù)據(jù)(在ModelAndView對(duì)象中)填充到request域)
第十一步:前端控制器向用戶響應(yīng)結(jié)果

005MVC是什么?MVC設(shè)計(jì)模式的好處有哪些

mvc是一種思想,可以理解成一種設(shè)計(jì)模式(設(shè)計(jì)模式就是日常開(kāi)發(fā)中編寫代碼的一種好的方法和經(jīng)驗(yàn)的總結(jié))。模型(model)-視圖(view)-控制器(controller),三層架構(gòu)的設(shè)計(jì)模式。用于實(shí)現(xiàn)前端頁(yè)面的展現(xiàn)與后端業(yè)務(wù)數(shù)據(jù)處理的分離。
mvc設(shè)計(jì)模式的好處
1.分層設(shè)計(jì),實(shí)現(xiàn)了業(yè)務(wù)系統(tǒng)各個(gè)組件之間的解耦,有利于業(yè)務(wù)系統(tǒng)的可擴(kuò)展性,可維護(hù)性。
2.有利于系統(tǒng)的并行開(kāi)發(fā),提升開(kāi)發(fā)效率。

006SpringMVC常用的注解?

@Controller:該注解用于控制層SpringMVC中的控制器
@RequestMapping:該注解用于url請(qǐng)求映射,可用于類或方法上。
@RequestBody:該注解實(shí)現(xiàn)接收http請(qǐng)求的json數(shù)據(jù),將json轉(zhuǎn)換為java對(duì)象。
@ResponseBody:該注解實(shí)現(xiàn)將controller方法返回對(duì)象轉(zhuǎn)化為json對(duì)象響應(yīng)給客戶。

007@PathVariable和@RequestParam的區(qū)別?

請(qǐng)求路徑上有個(gè)id的變量值,可以通過(guò)@PathVariable來(lái)獲取 @RequestMapping(value =“/page/{id}”, method = RequestMethod.GET)
@RequestParam用來(lái)獲得靜態(tài)的URL請(qǐng)求入?yún)?spring注解時(shí)action里用到。

008SpringMVC的控制器是單例模式嗎?如果是,有什么問(wèn)題?怎么解決?

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

009Spring MVC的異常處理?

可以將異常拋給Spring框架,由Spring框架來(lái)處理;我們只需要配置簡(jiǎn)單的異常處理器,在異常處理器中添視圖頁(yè)面即可。

010Spring MVC與Struts2區(qū)別?

相同點(diǎn):都是基于mvc的表現(xiàn)層框架,都用于web項(xiàng)目的開(kāi)發(fā)。
不同點(diǎn)
1、前端控制器不一樣。Spring MVC的前端控制器是servlet:DispatcherServlet。struts2的前端控制器是filter:StrutsPreparedAndExcutorFilter。
2、請(qǐng)求參數(shù)的接收方式不一樣。Spring MVC是使用方法的形參接收請(qǐng)求的參數(shù),基于方法的開(kāi)發(fā),線程安全,可以設(shè)計(jì)為單例或者多例的開(kāi)發(fā),推薦使用單例模式的開(kāi)發(fā)(執(zhí)行效率更高),默認(rèn)就是單例開(kāi)發(fā)模式。struts2是通過(guò)類的成員變量接收請(qǐng)求的參數(shù),是基于類的開(kāi)發(fā),線程不安全,只能設(shè)計(jì)為多例的開(kāi)發(fā)。
3、Struts采用值棧存儲(chǔ)請(qǐng)求和響應(yīng)的數(shù)據(jù),通過(guò)OGNL存取數(shù)據(jù),Spring MVC通過(guò)參數(shù)解析器是將request請(qǐng)求內(nèi)容解析,并給方法形參賦值,將數(shù)據(jù)和視圖封裝成ModelAndView對(duì)象,最后又將ModelAndView中的模型數(shù)據(jù)通過(guò)reques域傳輸?shù)巾?yè)面。Jsp視圖解析器默認(rèn)使用jstl。
4、與spring整合不一樣。Spring MVC是spring框架的一部分,不需要整合。在企業(yè)項(xiàng)目中,Spring MVC使用更多一些。

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

(1)轉(zhuǎn)發(fā):在返回值前面加"forward:",譬如"forward:user.do?name=method4"
(2)重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com"

012過(guò)濾器和攔截器的區(qū)別?

SpringMVC的處理器攔截器,類似于Servlet開(kāi)發(fā)中的過(guò)濾器Filter,用于對(duì)處理器進(jìn)行預(yù)處理和后處理。
過(guò)濾器:依賴于servlet容器。在實(shí)現(xiàn)上基于函數(shù)回調(diào),可以對(duì)幾乎所有請(qǐng)求進(jìn)行過(guò)濾,但是缺點(diǎn)是一個(gè)過(guò)濾器實(shí)例只能在容器初始化時(shí)調(diào)用一次。使用過(guò)濾器的目的是用來(lái)做一些過(guò)濾操作,比如:在過(guò)濾器中修改字符編碼;在過(guò)濾器中修改HttpServletRequest的一些參數(shù),包括:過(guò)濾低俗文字、危險(xiǎn)字符等。
攔截器:依賴于web框架,在實(shí)現(xiàn)上基于Java的反射機(jī)制,屬于面向切面編程(AOP)的一種運(yùn)用。由于攔截器是基于web框架的調(diào)用,因此可以使用Spring的依賴注入(DI)進(jìn)行一些業(yè)務(wù)操作,同時(shí)一個(gè)攔截器實(shí)例在一個(gè)controller生命周期之內(nèi)可以多次調(diào)用。

013Spring MVC用什么對(duì)象從后臺(tái)向前臺(tái)傳遞數(shù)據(jù)的?

通過(guò)ModelMap對(duì)象,可以在這個(gè)對(duì)象里面調(diào)用put方法,把對(duì)象加到里面,前臺(tái)就可以通過(guò)el表
達(dá)式拿到。

014Spring MVC中函數(shù)的返回值是什么?

返回值可以有很多類型,有String, ModelAndView,但一般用String比較好。

015Spring MVC怎么和AJAX相互調(diào)用的?

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

目錄

返回頂部
主站蜘蛛池模板: 国产第九页 | 日本成人毛片 | 免费国产a | 亚洲国产九九精品一区二区 | 欧美黄色录像 | 久久99精品麻豆国产 | 国产成人综合自拍 | 青青影院一区二区免费视频 | 欧美三级成人观看 | 青青热久免费精品视频精品 | 大香伊人久久 | 成人在线观看不卡 | 欧美久久久久久 | 成年女人视频在线观看免费 | 久久精品男人影院 | 日本在线毛片视频免费看 | 久久国产高清字幕中文 | 视频在线一区二区 | 青娱乐91 | 亚洲欧洲第一页 | 性xxxxbbbbxxxx中国| 国产在线视频h | 精品国产一区二区三区四区不 | 国产中文 | 曰本三级男人吃奶水 | 视频精品一区二区三区 | 99精品国产高清一区二区 | 欧美xxxxx毛片 | 国产成人精品久久二区二区 | 久草在线精品视频 | 亚洲人人干| 九九热国产精品视频 | 亚洲成a人片在线观看精品 亚洲成a人一区二区三区 | 免费日b视频 | 欧美精品国产综合久久 | 亚洲精品毛片久久久久久久 | 美女网站视频免费 | 99国产精品九九视频免费看 | 国内高清久久久久久久久 | 精品成人一区二区三区免费视频 | 婷婷丁香亚洲 |