javascript
[zz]Spring MVC 之 SimpleFormController类別
Spring附有一些簡單的窗體處理handler,這些handler都實現了Controller接口,您可以使用這些類別,讓它自動為您收集窗體參數并填入窗體對象(form object),而無需您親自處理這些細節。
?
org.springframework.web.servlet.mvc.SimpleFormController是Spring提供的一個 Controller接口實現,以下實現一個窗體登入程序,以示范SimpleFormController的作用,首先我們先設計一個 form.jsp:?
< html >
< head >< title > Login </ title ></ head >
< body >
????請輸入使用者名稱與密碼: < p >
???? < form?name = " loginform " ?action = " /springapp/login.do " ?method = " post " >
????????名稱? < input?type = " text " ?name = " username " />< br >
????????密碼? < input?type = " password " ?name = " password " />< br >
???????? < input?type = " submit " ?value = " 確定 " />
???? </ form >
????注意:輸入錯誤會再回到這個頁面中。
</ body >
</ html >
窗體中傳遞兩個參數username與password,注意method是post,這樣待會Spring才會將我們的參數填入窗體對象中。先看看我們的LoginAction:
?
LoginAction.java
import ?org.springframework.web.servlet.mvc.SimpleFormController;
import ?org.springframework.web.servlet. * ;
public ? class ?LoginAction? extends ?SimpleFormController? {
???? // ?重載父類onSubmit方法
???? protected ?ModelAndView?onSubmit(Object?command)? throws ?Exception? {
???????LoginForm?form? = ?(LoginForm)?command;
??????? if ( " caterpillar " .equals(form.getUsername())? && ? " 123456 " .equals(form.getPassword()))? {
?????????? return ? new ?ModelAndView( this .getSuccessView(), " user " ,?form.getUsername());
???????} else ? {
??????????? return ? new ?ModelAndView( this .getFormView());
???????}
????}
}
LoginAction繼承了SimpleFormController,并重新定義其onSumit()方法,Spring會呼叫這個方 法,onSumit()接收command對象,這個對象代表了窗體對象,onSumit()有幾個不同的版本,這邊所使用的是最簡單的版本,您可以看看 API文件了解它的其它版本。
getSuccessView()與getFormView()是SimpleFormController中定義的兩個方法,分別表示通過驗證與物敗的目標網頁,我們待會可以直接在Bean定義檔中定義,先來看看窗體對象,它只是個簡單的JavaBean:
?
LoginForm.java :
public ? class ?LoginForm? {
???? private ?String?username;
???? private ?String?password;
???? public ? void ?setUsername(String?username)? {
??????? this .username? = ?username;
????}
???? public ? void ?setPassword(String?password)? {
??????? this .password? = ?password;
????}
???? public ?String?getUsername()? {
??????? return ?username;
????}
???? public ?String?getPassword()? {
??????? return ?password;
????}
}
Spring會收集Request中相關的參數,并將之填入有對應到的屬性,至于LoginAction如何得到command,這我們要在Bean定義檔中撰寫:?
<? xml?version = " 1.0 " ?encoding = " UTF-8 " ?><! DOCTYPE?beans?PUBLIC? " -//SPRING/DTD?BEAN/EN " ? " http://www.springframework.org/dtd/spring-beans.dtd " >
< beans >
???? < bean?id = " urlMapping " ? class = " org.springframework.web.servlet.handler.SimpleUrlHandlerMapping " >
???????? < property?name = " mappings " >
???????????? < props >< prop?key = " /login.do " > loginAction </ prop ></ props >
???????? </ property >
???? </ bean >
???? < bean?id = " viewResolver " ? class = " org.springframework.web.servlet.view.InternalResourceViewResolver " >
???????? < property?name = " viewClass " >
???????????? < value > org.springframework.web.servlet.view.InternalResourceView </ value >
???????? </ property >
???????? < property?name = " prefix " >< value >/ WEB - INF / jsp /</ value ></ property >
???????? < property?name = " suffix " >< value > .jsp </ value ></ property >
???? </ bean >
???? < bean?id = " loginAction " ? class = " onlyfun.caterpillar.LoginAction " >
???????? < property?name = " commandClass " >< value > onlyfun.caterpillar.LoginForm </ value ></ property >
???????? < property?name = " successView " >< value >/ WEB - INF / jsp / success.jsp </ value ></ property >
???????? < property?name = " formView " >< value >/ html / form.htm </ value ></ property >
???? </ bean >
</ beans >
在loginAction中的commandClass,即使定義它所要使用的窗體對象,注意我們也定義了successView與formView,其中我們的success.jsp如下:?
< html >< head >< title > Login?Success </ title ></ head >
< body >
???? < H1 > ?Hello,?$ {user} !!</ H2 >
????This?is?your?secret?gift.
</ body >
</ html >
登入成功的話,會進入success.jsp并顯示使用者的名稱,登入失敗的話,依formView的設定,會回到原來的登入窗體。
===========================================================================================
以上文章轉自:http://www.blogjava.net/liuwentao253/archive/2007/01/31/96982.html
posted on 2011-09-29 14:10 yoyo_zeng 閱讀(...) 評論(...) ?編輯 收藏轉載于:https://www.cnblogs.com/zengyou/articles/2195460.html
總結
以上是生活随笔為你收集整理的[zz]Spring MVC 之 SimpleFormController类別的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C和C++中指针与地址的区别
- 下一篇: 【挑战极限】最短AJAX创建代码