目錄 1. Spring MVC基礎(chǔ)1.1 什么是Spring MVC?Spring MVC是一個(gè)基于Java的實(shí)現(xiàn)了MVC設(shè)計(jì)模式的請(qǐng)求驅(qū)動(dòng)類(lèi)型的輕量級(jí)Web框架,通過(guò)把模型-視圖-控制器分離,將web層進(jìn)行職責(zé)解耦,把復(fù)雜的web應(yīng)用分成邏輯清晰的幾部分,簡(jiǎn)化開(kāi)發(fā),減少出錯(cuò),方便組內(nèi)開(kāi)發(fā)人員之間的配合。 1.2 Spring MVC的優(yōu)點(diǎn)有那些?
1.3 Spring MVC的主要組件?
1.4 什么是DispatcherServlet?Spring的MVC框架是圍繞DispatcherServlet來(lái)設(shè)計(jì)的,它用來(lái)處理所有的HTTP請(qǐng)求和響應(yīng)。 1.5 什么是Spring MVC框架的控制器?控制器提供一個(gè)訪(fǎng)問(wèn)應(yīng)用程序的行為,此行為通常通過(guò)服務(wù)接口實(shí)現(xiàn)??刂破鹘馕鲇脩?hù)輸入并將其轉(zhuǎn)換為一個(gè)由視圖呈現(xiàn)給用戶(hù)的模型。Spring用一個(gè)非常抽象的方式實(shí)現(xiàn)了一個(gè)控制層,允許用戶(hù)創(chuàng)建多種用途的控制器。 1.6 Spring MVC的控制器是單例的嗎?是單例的。 1.7 Spring MVC的單例控制器會(huì)帶來(lái)什么問(wèn)題?如何處理?
1.8 簡(jiǎn)述一下DispatcherServlet 的工作流程
1.9 MVC是什么?MVC是一種設(shè)計(jì)模式:
三層架構(gòu)的設(shè)計(jì)模式。用于實(shí)現(xiàn)前端頁(yè)面的展現(xiàn)與后端業(yè)務(wù)數(shù)據(jù)處理的分離。 1.10 MVC設(shè)計(jì)模式的好處有哪些?
1.11 Spring MVC與Struts2區(qū)別?
1.12 WebApplicationContext有什么作用?WebApplicationContext 繼承了ApplicationContext 并增加了一些WEB應(yīng)用必備的特有功能,它不同于一般的ApplicationContext ,因?yàn)樗芴幚碇黝},并找到被關(guān)聯(lián)的servlet。 2. Spring MVC注解2.1 注解原理是什么?注解本質(zhì)是一個(gè)繼承了Annotation的特殊接口,其具體實(shí)現(xiàn)類(lèi)是Java運(yùn)行時(shí)生成的動(dòng)態(tài)代理類(lèi)。我們通過(guò)反射獲取注解時(shí),返回的是Java運(yùn)行時(shí)生成的動(dòng)態(tài)代理對(duì)象。通過(guò)代理對(duì)象調(diào)用自定義注解的方法,會(huì)最終調(diào)用AnnotationInvocationHandler的invoke方法。該方法會(huì)從memberValues這個(gè)Map中索引出對(duì)應(yīng)的值。而memberValues的來(lái)源是Java常量池。 2.2 Spring MVC常用的注解有哪些?
2.3 Sping MVC中的控制器注解是什么?一般用@Controller注解;
2.4 @Controller注解的作用在Spring MVC 中,控制器Controller 負(fù)責(zé)處理由DispatcherServlet 分發(fā)的請(qǐng)求,它把用戶(hù)請(qǐng)求的數(shù)據(jù)經(jīng)過(guò)業(yè)務(wù)處理層處理之后封裝成一個(gè)Model ,然后再把該Model 返回給對(duì)應(yīng)的View 進(jìn)行展示。在Spring MVC 中提供了一個(gè)非常簡(jiǎn)便的定義Controller 的方法,你無(wú)需繼承特定的類(lèi)或?qū)崿F(xiàn)特定的接口,只需使用@Controller 標(biāo)記一個(gè)類(lèi)是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定義URL 請(qǐng)求和Controller 方法之間的映射,這樣的Controller 就能被外界訪(fǎng)問(wèn)到。此外Controller 不會(huì)直接依賴(lài)于HttpServletRequest 和HttpServletResponse 等HttpServlet 對(duì)象,它們可以通過(guò)Controller 的方法參數(shù)靈活的獲取到。 @Controller 用于標(biāo)記在一個(gè)類(lèi)上,使用它標(biāo)記的類(lèi)就是一個(gè)Spring MVC Controller 對(duì)象。分發(fā)處理器將會(huì)掃描使用了該注解的類(lèi)的方法,并檢測(cè)該方法是否使用了@RequestMapping 注解。@Controller 只是定義了一個(gè)控制器類(lèi),而使用@RequestMapping 注解的方法才是真正處理請(qǐng)求的處理器。單單使用@Controller 標(biāo)記在一個(gè)類(lèi)上還不能真正意義上的說(shuō)它就是Spring MVC 的一個(gè)控制器類(lèi),因?yàn)檫@個(gè)時(shí)候Spring 還不認(rèn)識(shí)它。那么要如何做Spring 才能認(rèn)識(shí)它呢?這個(gè)時(shí)候就需要我們把這個(gè)控制器類(lèi)交給Spring 來(lái)管理。有兩種方式:
2.5 @RequestMapping注解的作用?RequestMapping是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解,可用于類(lèi)或方法上。用于類(lèi)上,表示類(lèi)中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑。 RequestMapping注解有六個(gè)屬性
2.6 @ResponseBody注解的作用是什么?
2.7 @PathVariable和@RequestParam的區(qū)別?
3. Spring MVC運(yùn)用3.1 Spring MVC怎么樣設(shè)定重定向和轉(zhuǎn)發(fā)的?
3.2 Spring MVC怎么和AJAX相互調(diào)用的?通過(guò)Jackson框架就可以把Java里面的對(duì)象直接轉(zhuǎn)化成Js可以識(shí)別的Json對(duì)象。具體步驟如下 :
3.3 Spring MVC如何解決GET、POST請(qǐng)求中文亂碼問(wèn)題?
3.4 Spring MVC如何處理異常?可以將異常拋給Spring框架,由Spring框架來(lái)處理;我們只需要配置簡(jiǎn)單的異常處理器,在異常處理器中添視圖頁(yè)面即可 3.5 Spring MVC如何攔截GET請(qǐng)求?可以在@RequestMapping注解里面加上method=RequestMethod.GET。 3.6 如何在方法里面得到Request,或者Session?直接在方法的形參中聲明request,Spring MVC就自動(dòng)把request對(duì)象傳入。 3.7 Spring MVC如何獲取請(qǐng)求傳參?直接在方法的形參里面聲明這個(gè)參數(shù)就可以
3.8 SpringMVC多個(gè)參數(shù)如何優(yōu)雅接收?直接在方法中聲明這個(gè)對(duì)象,Spring MVC就自動(dòng)會(huì)把屬性賦值到這個(gè)對(duì)象里面。 3.9 Spring MVC中函數(shù)的返回值是什么?返回值可以有很多類(lèi)型,有String, ModelAndView。ModelAndView類(lèi)把視圖和數(shù)據(jù)都合并的一起的,但一般用String比較好。 3.10 Spring MVC用什么對(duì)象從后臺(tái)向前臺(tái)傳遞數(shù)據(jù)的?通過(guò)ModelMap對(duì)象,可以在這個(gè)對(duì)象里面調(diào)用put方法,把對(duì)象加到里面,前臺(tái)就可以通過(guò)el表達(dá)式拿到。 3.11 怎么把ModelMap里面的數(shù)據(jù)放入Session里面?可以在類(lèi)上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key。 3.12 Spring MVC攔截器如何使用?
4. 其他4.1 SpringMVC 中系統(tǒng)如何分層 ?
各層之間的關(guān)系: 表示層通過(guò)接口調(diào)用業(yè)務(wù)層,業(yè)務(wù)層通過(guò)接口調(diào)用持久層,這樣,當(dāng)下一層發(fā)生變化改變,不影響上一層的數(shù)據(jù)。 MVC是一種表現(xiàn)層的架構(gòu) |
|
來(lái)自: 頭號(hào)碼甲 > 《待分類(lèi)》