(一)編寫控制器。html
注:若是WEB-INF下存在index.jsp,」/」將會優先訪問index.jsp,因此須要將index.jsp刪除或重命名。java
對應的home.jspgit
遊覽器訪問:web
(二)向視圖傳遞模型正則表達式
在web應用中,咱們常須要把數據渲染到視圖中,下面就看看如何用SpringMVC實現查詢用戶列表的功能。api
1.首先定義一個用戶bean數組
2.定義一個獲取用戶列表的service,這裏我直接建立一個List。jsp
3.控制器的編寫。ide
在新的方法裏,新加入了一個Model形參(其實就是Map,甚至能夠把Model換成Map),這樣,users就能夠將產生的信息傳遞到視圖。post
值得一提的是,在向Model添加數據時,若是不寫key,模型的Key將會根據類型推斷出(本例中,List<User>就是userList)。
不只如此,咱們甚至能夠不使用Model,就像下面這樣
由於沒有指定請求路徑,默認會是方法名「/allUser」。當處理器方法返回對象或集合時,這個值會放到模型中,模型的key會根據類型推斷得出。而視圖的名稱會根據請求的路徑推斷得出「allUser」。
4.最後是視圖的渲染
視圖使用了EL表達式和jstl,若是是Servlet3.0話,EL默認是關閉的,須要加上<%@ page isELIgnored="false" %>來開啓。
5.測試
3、對請求的處理
在Web中,客戶端能夠經過表單、url等方式,向服務端提交數據或查詢數據。那麼SpringMVC是如何對請求數據進行接受的呢?
(一)請求處理
在SpringMVC中,對於表單數據、Url參數均可以經過@RequestParam(「name」)進行接收。在下例中,須要在查詢用戶時進行分頁,這時就須要傳遞兩個參數:
max 從第幾個用戶開始
count 一次須要查詢的用戶數
對於這個兩個值爲空的狀況,還須要設置一個默認的值。
(二)路徑佔位符
SpringMVC提供了路徑佔位符的功能,這樣就可使Url變Restful
這樣,當咱們Url爲「users/13」時,SpringMVC就會自動截取13並賦值給userId。
對了,若是方法的參數名與佔位符的名稱一致的話,咱們還能夠去掉@PathVariable的Value屬性,就像下面這樣。
4、對錶單的處理
(一)表單數據處理
在上面的基礎上,咱們添加一個註冊功能,以此來講明SpringMvc對錶單的處理。
2.建立一個註冊頁面register.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>用戶註冊</title> </head> <body> <h1>用戶註冊</h1> <form method="post"> 用戶名:<input type="text" name="name"/><br/> 密碼:<input type="password" name="password"><br/> <input type="submit" value="提交"> </form> </body> </html>
這裏的form標籤沒有設置action屬性。在這種狀況下,表單會提交到與展示這個頁面相同的URL路徑上,如本例的「/register」上。
3.在Controller添加接受表單數據的方法
此處有3點須要注意。
(1)由於表單提交爲Post,因此須要在對應的controller也要設置接受post請求。
(2)咱們在方法中放了一個User對象,這個對象有id、name、password等屬性,這些屬性會被請求中同名的參數填充。
(3)當在返回的值前添加「redirect」前綴時,InternalResourceViewResolver視圖解析器會將值解析成重定向規則,而不是視圖的名稱。
(二)校驗表單
若是用戶在提交表單時忘記填寫name或者password,咱們目前的程序依然會正常執行,這顯然是不合理的,
從Spring3.0開始,SpringMVC提供了對Java校驗API的支持,咱們能夠根據註解方便的進行表單校驗。
下表列出了這些註解:
@AssertFalse |
所註解的元素必須爲Boolean類型,而且爲false |
@AssertTrue |
所註解的元素必須爲Boolean類型,而且爲true |
@DecimalMax |
所註解的元素必須爲數字,而且值要小於等於給定的BigDecimalString值 |
@DecimalMin |
所註解的元素必須爲數字,而且值要大於等於給定的BigDecimalString值 |
@Digits |
所註解的元素必須爲數字,而且值必須爲指定位數 |
@Future |
所註解的元素必須爲一個未來的日期 |
@Max |
所註解的元素必須爲數字,而且值要小於等於給定的 |
@Min |
所註解的元素必須爲數字,而且值要大於等於給定的 |
@NotNull |
所註解的元素必須不爲null |
@Null |
所註解的元素必須爲null |
@Past |
所註解的元素必須爲一個過去的日期 |
@Pattern |
所註解的元素必須匹配給定的正則表達式 |
@Size |
所註解的元素必須爲String、集合或數組,且長度要符合給定的範圍 |
下面咱們就把這些規則應用到咱們的User實體中
首先,須要添加Java校驗APi的依賴
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency>
而後在須要驗證的實體類添加對應的校驗註解:
咱們須要在Controller方法啓用校驗功能它纔會生效,以下所示