在web.xml中配置css
在springmvc配置文件中配置html
在springmvc配置文件中配置前端
如下標籤能夠代替以上這兩個配置,而且該標籤還配置了json相關信息。java
在springmvc配置文件中配置web
1.實現Controller接口spring
2.實現HttpRequestHandler接口json
3.使用@Controller註解數組
1.返回值爲ModelAndViewtomcat
2.返回值爲String,使用return控制分發和重定向(默認爲分發)架構
分發:return "request:itemsList.action";
重定向:return "redirect:itemsList.action";
3.使用返回值爲void 的方法,用request添加模型數據和跳轉頁面;
在Controller類上面加上@RequestMapping註解
在@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.
將上述配置在web.xml中進行配置便可;
第一種辦法是修改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")
Springmvc.xml中配置
爲PO類添加校驗規則
添加錯誤信息屬性文件
Handler配置
獲取錯誤信息
ItemsQuery類中包裝了一個ItemsCustom對象,而後我校驗ItemsQuery對象,結果是校驗不成功,因此該校驗框架只能校驗直接設置了校驗屬性的對象。
建立接口
爲PO類添加校驗規則
Handler配置
若是校驗的屬性沒有添加分組,則處於無分組;那麼在Handler中不指定分組,則程序會調用無分組的屬性。
配置multipart類型解析器
Jsp頁面配置
Handler配置
須要如下jar包
在Tomcat的server.xml中配置一下這條語句,便可在web應用中實用pic做爲docBase指定路徑的虛擬路徑;
@RequestBody將json數據轉換爲java對象
@ResponseBody將java對象轉換爲json數據
相關jar包
① 傳入的數據是json,傳出的數據是json
② 傳入的數據是key/value,傳出的數據是json
<mvc:annotation-driven/>標籤已經配置了json轉換器,無需手動配置了;
/能夠用來實現RESTful架構,可是會致使程序不能直接訪問靜態資源文件,如js、css、img文件;它不會匹配到*.jsp,即*.jsp不會進入spring的DispatcherServlet類 。
而/*會匹配*.jsp,會出現返回jsp視圖時再次進入spring的DispatcherServlet 類,致使找不到對應的controller因此報404錯或堆棧異常。
在springmvc中能夠配置多個DispatcherServlet,好比: 配置多個DispatcherServlet有/和/*,先匹配的是/*這個。
詳解:當我在客戶端調用URL:/user/list而後返回user.jsp視圖,當配置的是/:DispathcherServlet拿到這個請求而後返回對應的controller,而後依據Dispather Type爲Forward類型轉發到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.jsp,Dispatcher會把他看成Controller去匹配,沒有匹配到就會報404錯誤或堆棧異常。
總之,關於web.xml的url映射的小知識:
< url-pattern>/</url-pattern> 會匹配到/login這樣的路徑型url,不會匹配到模式爲*.jsp這樣的後綴型url;
< url-pattern>/*</url-pattern> 會匹配全部url:路徑型的和後綴型的url(包括/login,*.jsp,*.js和*.html等);
perHandle()方法返回true,則表明放行,返回false,則表明不放行。
攔截器的執行前後順序
① 所有放行
preHandle
HandlerInteceptor2.......preHandle
HandlerInteceptor2.......postHandle
postHandle
HandlerInteceptor2.......afterCompletion
afterCompletion
至關於棧,先進後出
② 攔截器1放行,攔截器2不放行
preHandle
HandlerInteceptor2.......preHandle
afterCompletion
只要一個攔截器不放行,那麼全部的攔截器都不會執行