javascript
使用Spring 3 MVC处理表单
在本文中,我們向Spring MVC邁出了又一步。 [此外: 術(shù)語(yǔ)MVC的創(chuàng)建者提供的pdf 。]從上一篇文章構(gòu)建,讓我們添加將“聯(lián)系人”添加到應(yīng)用程序所需的代碼。 首先,我們需要添加一些UI組件來(lái)啟動(dòng)該過(guò)程。 為了簡(jiǎn)單起見,讓它成為一個(gè)簡(jiǎn)單的鏈接。
文件:/springwebapp001/src/main/webapp/index.jsp
[...] <a href="contacts/addNew.html"> Add new contact.</a> [...]如您所見,我們已將此鏈接指向“ contacts / addNew.html”。 這意味著我們需要某些東西–正在尋找此請(qǐng)求的控制器和/或方法。 讓我們創(chuàng)建一個(gè)控制器,該控制器將處理所有以“聯(lián)系人”開頭的請(qǐng)求。
文件:src / main / java / org / academy / ui / spring3 / controllers / ContactCtlr.java
package org.academy.ui.spring3.controllers; import org.academy.ui.spring3.forms.ContactFrm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping(value = "/contacts") public class ContactCtlr { private final static Logger logger = LoggerFactory .getLogger(ContactCtlr.class); [...] }Spring還必須知道它必須掃描控制器的特定軟件包。
文件:/springwebapp001/src/main/webapp/WEB-INF/spring-servlet.xml
[...] <context:component-scan base-package="org.academy.ui.spring3.controllers" /> [...]設(shè)置好之后,我們將需要在ContactCtlr中使用一個(gè)方法來(lái)為/addNew.html字段獲取GET請(qǐng)求。 [另外:GET和POST請(qǐng)求有什么區(qū)別? 在這里閱讀。 ]
文件:src / main / java / org / academy / ui / spring3 / controllers / ContactCtlr.java
[...] private final String addNewView = "Contacts/AddNew"; @RequestMapping(value = "/addNew", method = RequestMethod.GET) public String addNewContact() { logger.debug("Display form to add a new contact."); return addNewView; } [...]在這里,我們只是將控件定向到“ Contacts / AddNew”,其簡(jiǎn)化為/springwebapp001/src/main/webapp/WEB-INF/views/Contacts/AddNew.jsp。
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <html> <head> <title>Add New Contact</title> </head> <body> <form:form method="post" commandName="contact" action="addNew.html"> <table> <tr> <td colspan="2">Add a new contact.</td> </tr> <tr> <td><form:label path="firstname">First Name</form:label></td> <td><form:input path="firstname" /></td> </tr> <tr> <td><form:label path="lastname">Last Name</form:label></td> <td><form:input path="lastname" /></td> </tr> <tr> <td><form:label path="email">Email</form:label></td> <td><form:input path="email" /></td> </tr> <tr> <td><form:label path="telephone">Telephone</form:label></td> <td><form:input path="telephone" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="Add Contact" /></td> </tr> </table> </form:form> </body> </html>此表單將需要一個(gè)Java pojo作為后盾,該pojo將保存jsp中提到的所有表單元素。
文件:/springwebapp001/src/main/java/org/academy/ui/spring3/forms/ContactFrm.java
package org.academy.ui.spring3.forms; public class ContactFrm { private String firstname; private String lastname; private String email; private String telephone; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } }在AddNew.jsp中,您可以看到該表單期望某人處理對(duì)“ addNew.html”的調(diào)用。 和以前一樣,讓我們??回到控制器并向“ addNew.html”添加一個(gè)處理POST請(qǐng)求的方法。 請(qǐng)注意,這是一個(gè)POST請(qǐng)求,而不是我們之前處理過(guò)的GET請(qǐng)求。
文件:/springwebapp001/src/main/java/org/academy/ui/spring3/controllers/ContactCtlr.java
[...] @RequestMapping(value = "/addNew", method = RequestMethod.POST) public ModelAndView addNewContact( @ModelAttribute("contact") ContactFrm contactFrm, BindingResult result) { logger.debug("Adding a new contact. {}", contactFrm.getFirstname()); // Some code to work on the data received from the user. return new ModelAndView(addNewView, "contact", new ContactFrm()); } [...]瞧,如果您在任何servlet容器(例如Tomcat)中編譯并運(yùn)行此應(yīng)用程序,您將獲得一個(gè)鏈接,該鏈接將導(dǎo)致一個(gè)Form,該鏈接將允許您放入數(shù)據(jù),并將該數(shù)據(jù)傳輸?shù)轿挥诜?wù)器端,然后返回表格以了解更多信息。 那些在MVC框架應(yīng)運(yùn)而生之前設(shè)計(jì)和開發(fā)Web應(yīng)用程序的聽眾肯定會(huì)濕潤(rùn)的。 即使您使用過(guò)早期的MVC框架,Struts(最成功的框架)也將使花在將三個(gè)組件(M,V和C)結(jié)合在一起上的時(shí)間花費(fèi),現(xiàn)在我們可以在10分鐘內(nèi)完成。 軟件開發(fā)肯定已經(jīng)走了很長(zhǎng)一段路。
在下一節(jié)中,我們將向該應(yīng)用程序添加單元測(cè)試和日志記錄 。 快樂(lè)的編碼。
相關(guān)鏈接
- Struts –我可以推薦的唯一其他MVC框架
- GET和POST之間的區(qū)別
- MVC一詞的由來(lái)
繼續(xù)使用Spring 3 MVC處理表單驗(yàn)證
參考:來(lái)自Tech for Enterprise博客的JCG合作伙伴 Partho 使用Spring 3 MVC處理表單 。
翻譯自: https://www.javacodegeeks.com/2012/08/handling-form-validation-with-spring-3.html
總結(jié)
以上是生活随笔為你收集整理的使用Spring 3 MVC处理表单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 游戏《最终幻想 16》免费 DLC 今日
- 下一篇: 安卓脑点子百度云(安卓脑点子)