1. 談一下你對 SpringMVC 框架的理解
SpringMVC 是一個基于 Java 的實現(xiàn)了 MVC ( 全名為Model-View-Controller,即模型-視圖-控制器)設(shè)計模式的請求驅(qū)動類型的輕量級 Web框架,將 web 層進行職責解耦。
1) 其中,模型是用于封裝數(shù)據(jù)的載體,例如,在Java中一般通過一個簡單的POJO(Plain Ordinary Java Object)來表示,其本質(zhì)是一個普通的Java Bean,包含一系列的成員變量及其getter/setter方法。
2) 對于視圖而言,它更加偏重于展現(xiàn),也就是說,視圖決定了界面到底長什么樣子,在Java中可通過JSP來充當視圖,或者通過純HTML的方式進行展現(xiàn),而后者才是目前的主流。
3) 模型和視圖需要通過控制器來進行粘合,例如,用戶發(fā)送一個HTTP請求,此時該請求首先會進入控制器,然后控制器去獲取數(shù)據(jù)并將其封裝為模型,最后將模型傳遞到視圖中進行展現(xiàn)。
2.SpringMVC 主要組件
前端控制器 DispatcherServlet:接收請求、響應(yīng)結(jié)果(可以理解為前端控制器只負責分配任務(wù)),相當于轉(zhuǎn)發(fā)器,有了DispatcherServlet 就減少了其它組件之間的耦合度。
處理器映射器 HandlerMapping:根據(jù)請求的 URL 來查找 Handler(可以理解為找相對應(yīng)的后臺java代碼)。
處理器適配器 HandlerAdapter:負責執(zhí)行 Handler
處理器 Handler:處理業(yè)務(wù)邏輯的 Java 類
視圖解析器 ViewResolver:進行視圖的解析,根據(jù)視圖邏輯名將 ModelAndView 解
析成真正的視圖(view)
視圖 View:View 是一個接口,它的實現(xiàn)類支持不同的視圖類型,如 jsp,freemarker,
pdf 等等
3.SpringMVC執(zhí)行流層及各個組件的作用
4. SpringMVC 支持的轉(zhuǎn)發(fā)和重定向的寫法
1)轉(zhuǎn)發(fā):
forward 方式:在返回值前面加"forward:",比如 "forward:user.do?name=method4"
2) 重定向:
redirect 方式:在返回值前面加 redirect:, 比如 "redirect:http://www.baidu.com"
5. SpringMVC 的常用注解
1.@RequestMapping:用于處理請求 url 映射的注解,可用于類或方法上。用于類
上,則表示類中的所有響應(yīng)請求的方法都是以該地址作為父路徑。
2.@RequestBody:注解實現(xiàn)接收 http 請求的 json 數(shù)據(jù),將 json 轉(zhuǎn)換為 java 對象。
3.@ResponseBody:注解實現(xiàn)將 conreoller 方法返回對象轉(zhuǎn)化為 json 對象響應(yīng)給客
戶。
4.@PathVariable: 用戶從 url 路徑上獲取指定參數(shù),標注在參數(shù)前 @PathVariabel("
要獲取的參數(shù)名")。
5.@RequestParam: 標注在方法參數(shù)之前,用于對傳入的參數(shù)做一些限制,支持三個
屬性:
- value:默認屬性,用于指定前端傳入的參數(shù)名稱
- required:用于指定此參數(shù)是否必傳
- defaultValue:當參數(shù)為非必傳參數(shù)且前端沒有傳入?yún)?shù)時,指定一個默認值
6. @ControllerAdvice: 標注在一個類上,表示該類是一個全局異常處理的類。
7. @ExceptionHandler:(Exception.class) 標注在異常處理類中的方法上,表示該方法
可以處理的異常類型。
6. SpringMVC 統(tǒng)一異常處理的思想和實現(xiàn)方式
使用 SpringMVC 之后,代碼的調(diào)用者是 SpringMVC 框架,也就是說最終的異常會拋到
框架中,然后由框架指定異常處理類進行統(tǒng)一處理。
方式一:創(chuàng)建一個自定義異常處理器(實現(xiàn) HandlerExceptionResolver 接口),并實現(xiàn)里面的異常處理方法,然后將這個類交給 Spring 容器管理。
方式二: 在類上加注解(@ControllerAdvice)表明這是一個全局異常處理類在方法上加注解(@ExceptionHandler),在 ExceptionHandler 中有一個value 屬性,可以指定可以處理的異常類型。
7.SpringMVC 中, 如果想通過轉(zhuǎn)發(fā)將數(shù)據(jù)傳遞到前臺,有幾種寫法
方式一:直接使用 request 域進行數(shù)據(jù)的傳遞
request.setAttirbuate("name", value);
方式二:使用 Model 進行傳值,底層會將數(shù)據(jù)放入 request 域進行數(shù)據(jù)的傳遞
model.addAttribuate("name", value);
方式三:使用 ModelMap 進行傳值,底層會將數(shù)據(jù)放入 request 域進行數(shù)據(jù)的傳遞
modelmap.put("name",value);
方式四:借用 ModelAndView 在其中設(shè)置數(shù)據(jù)和視圖
mv.addObject("name",value);
mv.setView("success");
return mv;
8.SpringMVC 中攔截器的使用步驟
1 定義攔截器類:
SpringMVC為我們提供了攔截器規(guī)范的接 口 , 創(chuàng)建一 個類實現(xiàn)
HandlerInterceptor,重寫接口中的抽象方法;
preHandle 方法:在調(diào)用處理器之前調(diào)用該方法,如果該方法返回 true 則請
求繼續(xù)向下進行,否則請求不會繼續(xù)向下進行,處理器也不會調(diào)用
postHandle 方法:在調(diào)用完處理器后調(diào)用該方法
afterCompletion 方法:在前端控制器渲染頁面完成之后調(diào)用此方法
2 注冊攔截器:
在 SpringMVC 核心配置文件中注冊自定義的攔截器
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="攔截路徑規(guī)則"/>
<mvc:exclude-mapping path="不攔截路徑規(guī)則"/>
<bean class="自定義攔截器的類全限定名"/>
</mvc:interceptor>
</mvc:interceptors>
9.在 SpringMVC 中文件上傳的使用步驟是什么樣的? 前臺三要素是什么
文件上傳步驟:
1.加入文件上傳需要的 commons-fileupload 包
2.配置文件上傳解析器,springmvc 的配置文件的文件上傳解析器的 id 屬性必須為
multipartResolver
3.后端對應(yīng)的接收文件的方法參數(shù)類型必須為 MultipartFile,參數(shù)名稱必須與前端
的 name 屬性保持一致
文件上傳前端三要素:
1.form 表單的提交方式必須為 post
2.enctype 屬性需要修改為:multipart/form-data
3.必須有一個type屬性為file的input 標簽,其中需要有一個name 屬性;如果需要
上傳多個文件需要添加 multiple 屬性
10.SpringMVC 中如何解決 GET|POST 請求中文亂碼問題
ISO8859-1 是 tomcat 默認編碼,需要將 tomcat 編碼后的內(nèi)容按 utf-8 編碼。
1)解決 post 請求亂碼問題:在 web.xml 中配置一個 CharacterEncodingFilter 過
濾器,設(shè)置成 utf-8;
2) get 請求中文參數(shù)出現(xiàn)亂碼解決方法有兩個:
①修改 tomcat 配置文件添加編碼與工程編碼一致,如下:
②另外一種方法對參數(shù)進行重新編碼:
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專線:400-001-5281
長沙市天心區(qū)芙蓉中路三段398號新時空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專線/ 400-966-8830
旗下運營網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號