SpringMVC類項目面試題 29道_第1頁
SpringMVC類項目面試題 29道_第2頁
SpringMVC類項目面試題 29道_第3頁
SpringMVC類項目面試題 29道_第4頁
SpringMVC類項目面試題 29道_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

SpringMC是一個基于Java的實現(xiàn)了MC設(shè)計模式的請求驅(qū)動類型的輕量級eb框架,通過把模型-視圖-控制器分離,將web層進(jìn)行職責(zé)解耦,把復(fù)雜的web發(fā),減少出錯,方便組內(nèi)開發(fā)人員之間的配合。SpringMVC(1)可以支持各種視圖技術(shù),而不僅僅局限于JSP;(2)與Spring框架集成(如IoC容器、AOP等);(3)清晰的角色分配:前端控制器(dispatcherServlet)請求到處理器映射(handlerMapping),處理器適配器(HandlerAdapter),視圖解析器(ViewResolver)。(4)支持各種請求資源的映射策略。SpringMVC(1)前端控制器DispatcherServlet(不需要程序員開發(fā))作用:接收請求、響應(yīng)結(jié)果,相當(dāng)于轉(zhuǎn)發(fā)器,有了DispatcherServlet就減少了其它組件之間(2)處理器映射器HandlerMapping(不需要程序員開發(fā))(3)處理器適配器HandlerAdapter注意:在編寫Handler的時候要按照HandlerAdapter要求的規(guī)則去編寫,這樣適配器(4)處理器Handler(需要程序員開發(fā))(5)視圖解析器ViewResolver(不需要程序員開發(fā))作用:進(jìn)行視圖的解析,根據(jù)視圖邏輯名解析成真正的視圖(view)(6)視圖View(需要程序員開發(fā)jsp)View是一個接口,它的實現(xiàn)類支持不同的視圖類型(jsp,freemarker,pdf等等)什么是Spring的MVC框架是圍繞DispatcherServlet來設(shè)計的,它用來處理所有的HTTP請求和響應(yīng)。轉(zhuǎn)換為一個由視圖呈現(xiàn)給用戶的模型。Spring創(chuàng)建多種用途的控制器。答:是單例模式,所以在多線程訪問的時候有線程安全問題,不要用同步,會影響性能的,解決方案是在用戶發(fā)送請求至前端控制器DispatcherServlet收到請求后,調(diào)用HandlerMapping處理器映射器,請求獲取處理器映射器根據(jù)請求url找到具體的處理器,生成處理器對象及處理器攔截器(成)一并返回給DispatcherServlet;DispatcherServlet調(diào)用HandlerAdapterHandlerAdapter經(jīng)過適配調(diào)用具體處理器(Handler,也叫后端控制器Handler執(zhí)行完成返回HandlerAdapter將Handler執(zhí)行結(jié)果ModelAndView返回給DispatcherServlet將ModelAndView傳給ViewResolverViewResolver解析后返回具體DispatcherServlet對View進(jìn)行渲染視圖(即將模型數(shù)據(jù)填充至視圖中DispatcherServletMVCmvc是一種設(shè)計模式(設(shè)計模式就是日常開發(fā)中編寫代碼的一種好的方法和經(jīng)驗的總結(jié))。模型(model)-視圖(viw)-控制器(contoller),現(xiàn)與后端業(yè)務(wù)數(shù)據(jù)處理的分離。mvc設(shè)計模式的好處注解本質(zhì)是一個繼承了Annotation的特殊接口,其具體實現(xiàn)類是Java運(yùn)行時生成的動態(tài)代理類。我們通過反射獲取注解時,返回的是Java解的方法,會最終調(diào)用AnnotationInvocationHandler的invoe方法。該方法會從這個Map中索引出對應(yīng)的值。而memberalues的來源是Java常量池。@RequestMapping:用于處理請求url映射的注解,可用于類或方法上。用于類上,則表示類中@RequestBody:注解實現(xiàn)接收http請求的json數(shù)據(jù),將json轉(zhuǎn)換為java對象。@ResponseBody:注解實現(xiàn)將conreoller方法返回對象轉(zhuǎn)化為json對象響應(yīng)給客戶。@Conntroller:控制器的注解,表示是表現(xiàn)層,不能用用別的注解代替答:一般用@Controller注解,也可以使用@RestController,@RestController注解相當(dāng)于@ResponseBody+@Controller,表示是表現(xiàn)層,在SpringMC中,控制器Contoller負(fù)責(zé)處理由DispatcherServlet分發(fā)的請求,它把用戶請求的數(shù)據(jù)經(jīng)過業(yè)務(wù)處理層處理之后封裝成一個Model,然后再把該Model返回給對應(yīng)的Viw進(jìn)行展示。在SpringMC中提供了一個非常簡便的定義Contoller的方法,你無需繼承特定的類或?qū)崿F(xiàn)特定的接口,只需使用@Contoller標(biāo)記一個類是Contoller,然后使用@RequestMapping和@RequestPaam等一些注解用以定義URL請求和Contoller方法之間的映射,這樣的Contoller就能被外界訪問到。此外Contoller不會直接依賴于HttpServletRequest和等HttpServlet對象,它們可以通過Contoller的方法參數(shù)靈活的獲取到。@Contoller用于標(biāo)記在一個類上,使用它標(biāo)記的類就是一個SpringMCContoller對象。分發(fā)處理器將會掃描使用了該注解的類的方法,并檢測該方法是否使用了@RequestMapping注解。@Contoller只是定義了一個控制器類,而使用@RequestMapping的處理器。單單使用@Contoller標(biāo)記在一個類上還不能真正意義上的說它就是SpringMC的一個控制器類,因為這個時候Spring還不認(rèn)識它。那么要如何做Spring才能認(rèn)識它呢?這個時候就需要我們把這個控制器類交給Spring來管理。有兩種方式:在SpringMVC的配置文件中告訴Spring該到哪里去找標(biāo)記為@Controller的Controller控制器。RequestMapping是一個用來處理請求地址映射的注解,可用于類或方法上。用于類上,表示類中RequestMapping注解有六個屬性,下面我們把她分成三類進(jìn)行說明(下面有相應(yīng)示例)。methodvalue:指定請求的實際地址,指定的地址可以是URITemplate模式(后面將會說method:指定請求的method類型,GET、POST、PUT、DELETE等;consumes,producesconsumes(Content-Type),例如application/json,produces:指定返回的內(nèi)容類型,僅當(dāng)request請求頭中的(Accept)類型中包含該指定類型才params,headersparams:指定request中必須包含某些參數(shù)值是,才讓該方法處理。headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求。Controller的方法返回的對象,通過適當(dāng)?shù)腍ttpMessageConverter轉(zhuǎn)換為指使用時機(jī):返回的數(shù)據(jù)不是html標(biāo)簽的頁面,而是其他某種格式的數(shù)據(jù)時(如json、xml等)用;請求路徑上有個id的變量值,可以通過@PathVariable來獲取@RequestMapping(value=“/page/{id}”,method=RequestMethod.GET)@RequestParam用來獲得靜態(tài)的URL請求入?yún)pring注解時actionSpringMVC與Struts2相同點(diǎn)不同點(diǎn)請求參數(shù)的接收方式不一樣。SpringMC是使用方法的形參接收請求的參數(shù),基于方法的開發(fā),線程安全,可以設(shè)計為單例或者多例的開發(fā),推薦使用單例模式的開發(fā)(執(zhí)行效率更高),是單例開發(fā)模式。struts2是通過類的成員變量接收請求的參數(shù),是基于類的開發(fā),線程不安全,只能設(shè)計為多例的開發(fā)。Struts采用值棧存儲請求和響應(yīng)的數(shù)據(jù),通過OGNL存取數(shù)據(jù),SpringMVC通過參數(shù)解析器是將與spring整合不一樣。SpringMVC是spring框架的一部分,不需要整合。在企業(yè)項目中,Spring(1)轉(zhuǎn)發(fā):在返回值前面加"forward:",譬如"forward:user.do?name=method4"(2)重定向:在返回值前面加"redirect:",譬如"redirect:"SpringMVC怎么和AJAX通過Jackson框架就可以把Java里面的對象直接轉(zhuǎn)化成Js可以識別的Json(1)加入Jackson.jar(2)在配置文件中配置json的映射(3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。(1)解決post請求亂碼問題:在web.xml中配置一個CharacterEncodingFilter過濾器,設(shè)置成utf-8;<filter-name>CharacterEncodingFilter</filter-<init-<filter-name>CharacterEncodingFilter</filter-<init-<param-name>encoding</param-<param-value>utf-8</param-</init-<filter-<filter-name>CharacterEncodingFilter</filter-<url-pattern>/*</url-</filter-1、修改tomcat配置文件添加編碼與工程編碼一致,如下:<ConnectorURIEncoding="utf-8"connectionTimeout="20000"<ConnectorURIEncoding="utf-8"connectionTimeout="20000"port="8080"protocol="HTTP/1.1"redirectPort="8443"/>2、另外一種方法對參數(shù)進(jìn)行重新編碼:StringuserName=newString(request.getParamter(“userName”).getBytes(“ISO8859-1”),“utf-ISO8859-1ISO8859-1是tomcat默認(rèn)編碼,需要將tomcat編碼后的內(nèi)容按utf-8SpringMVC答:可以將異常拋給Spring框架,由Spring框架來處理;我們只需要配置簡單的異常處理器,在異答:可以在@RequestMapping注解里面加上method=RequestMethod.GET。答:直接在方法的形參中聲明request,SpringMVC就自動把request對象傳入。答:直接在形參里面聲明這個參數(shù)就可以,但必須名字和傳過來的參數(shù)一樣。答:直接在方法中聲明這個對象,SpringMVC就自動會把屬性賦值到這個對象里面。答:返回值可以有很多類型,有String,ModelAndView。ModelAndView類把視圖和數(shù)據(jù)都合并的答:通過ModelMap對象,可以在這個對象里面調(diào)用put方法,把對象加到里面,前臺就可以通過el表答:可以在類上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key有兩種寫法,一種是實現(xiàn)HandlerInteceptor中,實現(xiàn)處理邏輯;然后在SpringMC的配置文件中配置攔截器即可:配置SpringMVC<!--配置

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論