天天看點

springmvc

                                                                        靈魂三問:它是啥?它包含啥?他怎麼用?

1,springmvc是啥?

它是一個輕量級的web架構,它将Mondl,view,Controller層分離,将web解耦,簡化開發,提升開發效率。

它的重要元件:

前端控制器(DispatcherServlet):用于接收請求、響應結果,相當于轉發器,通過DispatcherServlet 可以減少與其它元件之間的耦合度。

處理器映射器(HandlerMapping):根據請求的URL來查找Handler

處理器擴充卡(HandlerAdapter):按照HandlerAdapter要求的規則去編寫Handler,擴充卡才可以正确的去執行。

處理器(Handler):主要負責處理前端請求,完成業務邏輯,生成ModelAndView對象傳回給HandlerAdapter

視圖解析器 (ViewResolver):進行視圖的解析,根據視圖邏輯名解析成真正的視圖

視圖(View):是一個接口, 它的實作類支援不同的視圖類型,比如jsp,freemarker,pdf等等

2,springmvc的執行流程?

   (1)使用者發送請求至前端控制器DispatcherServlet;

(2)調用HandlerMapping處理器映射器,請求擷取Handler;

(3)處理器映射器根據請求url找到具體的處理器Handler,生成處理器對象及處理器攔截器(如果有則生成),一并傳回給DispatcherServlet;

  (4)DispatcherServlet 調用 HandlerAdapter處理器擴充卡,請求執行Handler;

(5)HandlerAdapter 經過适配調用 具體處理器進行處理業務邏輯;

(6)Handler執行完成傳回ModelAndView;

(7)HandlerAdapter将Handler執行結果ModelAndView傳回給DispatcherServlet;

(8)DispatcherServlet将ModelAndView傳給ViewResolver視圖解析器進行解析;

(9)ViewResolver解析後傳回具體View;

(10)DispatcherServlet對View進行渲染視圖(即将模型資料填充至視圖中)

(11)DispatcherServlet響應使用者。

springmvc

3,springmvc的優點?

  3.1 可以支援個種視圖技術,不僅僅局限于jsp

  3.2 和spring內建

  3.3支援各種請求資源的映射

  3.4清晰的角色配置設定:前端控制器(dispatcherServlet) ,請求到處理器映射(handlerMapping),處理器擴充卡(HandlerAdapter),視圖解析器(ViewResolver)

4,springmvc如何設定轉發和重定向的?

(1)轉發:在傳回值前面加"forward:",譬如"forward:user.do?name=method4"

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

5,springmvc是單列模式?多線程通路如何解決?

    是單例模式。在用多線程通路是存線上程安全問題,不能用同步代碼塊的方式解決,會影響性能。可以在控制器不要寫成員字段。

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

SpringMVC中的控制器一般使用@Controller注解表示,也可以使用@RestController注解。@RestController注解相當于@ResponseBody注解 + @Controller注解。除此之外,一般不用别的注解代替。

7,@Controller 在springmvc中的作用?

   @Controller咋控制層的作用是處理由discatcherServlet分發的請求,把對應的求求分裝成,Modle,在發個視圖層進行展示。

‘8,@RequestMapping的作用?

   處理請求位址映射,可以作用方法上,類上。

13. Spring MVC常用的注解有哪些?

@RequestMapping注解:用于處理請求位址的映射,可用于類或方法上

@RequestBody注解:接收Http請求的Json資料,将Json轉換為java對象。

@ResponseBody注解:将Conreoller方法傳回的對象,轉化為Json對象響應給用戶端。

14. @ResponseBody注解的作用

該注解用于将Conreoller方法傳回的對象,轉化為Json對象響應給用戶端。

15. @PathVariable注解和@RequestParam注解的差別?

@PathVariable注解:用來獲得請求的URL中的動态參數,從路徑中擷取變量。

@RequestParam注解:從請求裡面擷取參數

16. SpringMVC中如何解決POST請求中文亂碼問題,GET請求的又如何處理呢?

解決post請求亂碼問題:在web.xml中配置一個CharacterEncodingFilter過濾器,并設定編碼為utf-8

get請求中文參數出現亂碼解決方法:在tomcat配置檔案添加與項目工程編碼一緻的編碼類型