SpringMVC概括

SpringMVC概括

操做流程

配置前端控制器

web.xml中配置css

 

 

 

配置處理器映射器

springmvc配置文件中配置html

 

 

 

配置處理器適配器

springmvc配置文件中配置前端

 

 

 

配置註解適配器和映射器

 

 

 

如下標籤能夠代替以上這兩個配置,而且該標籤還配置了json相關信息。java

 

 

 

配置視圖解析器

springmvc配置文件中配置web

 

 

 

Handler的寫法

1.實現Controller接口spring

 

 

2.實現HttpRequestHandler接口json

 

 

3.使用@Controller註解數組

 

 

 

Handler方法的建立形式

1.返回值爲ModelAndViewtomcat

 

 

2.返回值爲String,使用return控制分發和重定向(默認爲分發)架構

 

 

分發:return "request:itemsList.action";

 

重定向:return "redirect:itemsList.action";

 

 

3.使用返回值爲void 的方法,用request添加模型數據和跳轉頁面;

 

經常使用功能

窄化請求映射

Controller類上面加上@RequestMapping註解

 

 

 

限制HTTP請求

@RequestMapping註解中配置method屬性

 

 

 

參數綁定(形參與傳遞過來的參數名稱不一致)

在須要配置的參數前添加@RequestParam註解,系統會將「傳遞過來的參數名稱與該註解配置的value值相同的參數」的值賦給該配置參數。

 

 

 

數據回顯

SpringMVC框架中,Handler中的方法形參會被自動填充到request域中,經過@ModelAttribute能夠指定pojo回顯到request中的key名,可是簡單類型如Integer不支持回顯,只能經過model設置屬性方法。

 

 

 

Handle中的方法前加上@ModelAttribute註解,能夠將該方法的返回值添加到request域中,而且該方法每次都會執行,並且是最早執行的。

 

 

 

參數綁定

1.處理器適配器調用springmvc提供的參數綁定組件將key/value數據轉成controller方法的形參;

2.參數綁定組件:在springmvc早期版本中是使用PropertyEditor(只能將字符串轉成java對象),然後期版本使用converter(能夠進行任意類型的轉換),springmvc提供了不少的converter,特殊狀況下須要自定義converter,如日期時間格式轉換。

自定義參數綁定

實現Converter接口

 

 

springmvc配置文件中配置

1.

 

 

2.

 

 

 

post請求亂碼

 

 

將上述配置在web.xml中進行配置便可;

 

 

get請求亂碼

第一種辦法是修改tomcat配置文件添加編碼與工程編碼一致,以下:

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080"

protocol="HTTP/1.1" redirectPort="8443"/>

 

另一種辦法對參數進行從新編碼;

String userName=new String(request.getParamter("username").getBytes("ISO8859-1"),"utf-8")

 

 

 

數組綁定

 

 

 

 

List綁定

 

 

 

 

 

Map綁定

 

 

 

 

 

校驗框架

Springmvc.xml中配置

 

 

 

 

 

 

 

 

 

 

PO類添加校驗規則

 

 

添加錯誤信息屬性文件

 

 

Handler配置

 

 

 

獲取錯誤信息

 

 

ItemsQuery類中包裝了一個ItemsCustom對象,而後我校驗ItemsQuery對象,結果是校驗不成功,因此該校驗框架只能校驗直接設置了校驗屬性的對象

分組校驗

建立接口

 

 

PO類添加校驗規則

 

 

Handler配置

 

 

若是校驗的屬性沒有添加分組,則處於無分組;那麼在Handler中不指定分組,則程序會調用無分組的屬性。

 

 

 

文件上傳

配置multipart類型解析器

 

 

Jsp頁面配置

 

 

 

 

Handler配置

 

 

 

須要如下jar

 

 

 

建立圖片虛擬目錄

Tomcatserver.xml中配置一下這條語句,便可在web應用中實用pic做爲docBase指定路徑的虛擬路徑;

 

 

 

實現json交互

@RequestBodyjson數據轉換爲java對象

@ResponseBodyjava對象轉換爲json數據

相關jar

 

 

 

 傳入的數據是json,傳出的數據是json

 

 

 

 傳入的數據是key/value,傳出的數據是json

 

 

 

<mvc:annotation-driven/>標籤已經配置了json轉換器,無需手動配置了;

 

 

 

springmvcurl映射中,//*的區別

/能夠用來實現RESTful架構,可是會致使程序不能直接訪問靜態資源文件,如jscssimg文件;它不會匹配到*.jsp,即*.jsp不會進入springDispatcherServlet類 。

/*會匹配*.jsp,會出現返回jsp視圖時再次進入springDispatcherServlet 類,致使找不到對應的controller因此報404錯或堆棧異常。

springmvc中能夠配置多個DispatcherServlet,好比: 配置多個DispatcherServlet//*,先匹配的是/*這個。

詳解:當我在客戶端調用URL/user/list而後返回user.jsp視圖,當配置的是/DispathcherServlet拿到這個請求而後返回對應的controller,而後依據Dispather TypeForward類型轉發到user.jsp視圖,即就是請求user.jsp視圖(/user/user.jsp),此時Dispather沒有攔截/user/user.jsp,由於此時你配置的是默認的/,就順利的交給ModleAndView去處理顯示了。當配置的是/*DispathcherServlet拿到這個請求而後返回對應的controller,而後經過Dispather Type經過Forward轉發到user.jsp視圖,即就是請求user.jsp視圖(/user/user.jsp),此時Dispather已經攔截/user/user.jspDispatcher會把他看成Controller去匹配,沒有匹配到就會報404錯誤或堆棧異常。

總之,關於web.xmlurl映射的小知識:
< url-pattern>/</url-pattern>  會匹配到/login這樣的路徑型url,不會匹配到模式爲*.jsp這樣的後綴型url
< url-pattern>/*</url-pattern> 會匹配全部url:路徑型的和後綴型的url(包括/login,*.jsp,*.js*.html)

使用/時,開啓對靜態文件的掃描

 

 

 

RESTful架構

 

 

攔截器

 

 

 

perHandle()方法返回true,則表明放行,返回false,則表明不放行。

攔截器的執行前後順序

① 所有放行

preHandle

HandlerInteceptor2.......preHandle

HandlerInteceptor2.......postHandle

postHandle

HandlerInteceptor2.......afterCompletion

afterCompletion

至關於棧,先進後出

② 攔截器1放行,攔截器2不放行

preHandle

HandlerInteceptor2.......preHandle

afterCompletion

只要一個攔截器不放行,那麼全部的攔截器都不會執行

常見問題

相關文章
相關標籤/搜索