javascript
Spring MVC:表单处理卷。 1个
Spring MVC是Spring Framework的一部分,其主要目的是使Web開發更加簡單,便捷和輕松。 與表單的交互是或多或少現代Web應用程序的一部分。 Spring MVC允許您以非常嚴格和簡單的方式執行各種形式的活動。 在本文中,您將在Spring MVC的幫助下閱讀表單處理的基礎知識。
我將使用與Spring MVC相關的以前的教程之一作為以下示例的基礎。 我更喜歡基于Java的配置,因此不要驚訝,在本教程中您還將看到它們。 讓我們轉到本節,我將指出這篇文章的主要目的。
Spring表單處理教程:
- 復選框
- 選框
- 單選按鈕
- 下拉列表
主要目標
我將向您展示如何在Spring MVC的幫助下處理表單,如何將域模型與表單綁定,如何處理表單數據并在視圖中表示它。
發展歷程
我們的項目將基于Dynamic Web Project和Maven。 我建議使用這套傳統工具進行專業軟件開發。 第一步將參考本文前面提到的帖子。 我的意思是在Eclipse中創建項目并將其轉換為Maven項目。 此外,我將向您演示完成示例所需的所有必需文件。
pom.xml看起來像:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelversion>4.0.0</modelversion><groupid>EduSprMvc</groupid><artifactid>EduSprMvc</artifactid><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><properties><spring.version>3.1.1.RELEASE</spring.version></properties><dependencies><!-- Spring --><dependency><groupid>org.springframework</groupid><artifactid>spring-context</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-webmvc</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-beans</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-web</artifactid><version>${spring.version}</version></dependency><!-- CGLIB is required to process @Configuration classes --><dependency><groupid>cglib</groupid><artifactid>cglib</artifactid><version>2.2.2</version></dependency><!-- Servlet API, JSTL --><dependency><groupid>javax.servlet</groupid><artifactid>javax.servlet-api</artifactid><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupid>jstl</groupid><artifactid>jstl</artifactid><version>1.2</version></dependency></dependencies><build><plugins><plugin><artifactid>maven-compiler-plugin</artifactid><version>2.3.2</version><configuration><source>1.7<target>1.7</target></configuration></plugin></plugins></build></project>聲明所有依賴項后,我們可以繼續進行項目配置。 如前所述,我將使用基于注釋的配置或許多人喜歡將其稱為“程序化配置方法”。 如果您想避免大量的xml編碼,這非常方便。
WebAppConfig.java
package com.sprmvc.init;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.view.JstlView; import org.springframework.web.servlet.view.UrlBasedViewResolver;@Configuration @ComponentScan("com.sprmvc") @EnableWebMvc public class WebAppConfig {@Beanpublic UrlBasedViewResolver setupViewResolver() {UrlBasedViewResolver resolver = new UrlBasedViewResolver();resolver.setPrefix("/WEB-INF/pages/");resolver.setSuffix(".jsp");resolver.setViewClass(JstlView.class);return resolver;} }初始化器
package com.sprmvc.init;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration.Dynamic;import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet;public class Initializer implements WebApplicationInitializer {@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();ctx.register(WebAppConfig.class);ctx.setServletContext(servletContext); Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));servlet.addMapping("/");servlet.setLoadOnStartup(1);} }接下來,我將創建一個類,該類將表示與Web表單綁定的數據模型。 這是重要的一步,因為在示例中,我將不使用簡單的html表單標簽,而是使用Spring表單標簽庫。
package com.sprmvc.bean;public class Person {private String firstName;private Integer age;public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;} }請注意,Person類僅包含具有專用訪問修飾符和每個字段的getter / setter方法的字段。 getter / setter是必需的,因為Spring表單標簽使用它們與視圖層中的對象字段進行交互。 本教程的主要部分隱含了控制器和視圖的開發。 因此,讓我們繼續。
package com.sprmvc.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;import com.sprmvc.bean.Person;@Controller public class PersonController {@RequestMapping(value="/person-form")public ModelAndView personPage() {return new ModelAndView("person-page", "person-entity", new Person());}@RequestMapping(value="/process-person")public ModelAndView processPerson(@ModelAttribute Person person) {ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("person-result-page");modelAndView.addObject("pers", person);return modelAndView;} } 控制器personPage()中的第一個方法負責導航到帶有表單的頁面。 注意,方法的返回包含Person()類。 表單與域模型的正確綁定是必需的。
現在,讓我們繼續進入“人員表單”頁面的概述:
在這里,我想強調兩個寶貴的時刻。 首先是spring表單標簽庫的導入。 第二個參數是commandName =“ person-entity”。 它的值等于控制器第一種方法中返回參數的值。 請注意,表單中的所有標簽均包含與Person類字段完全對應的路徑值。 讓我們回到第二種方法processPerson(@ModelAttribute Person person) 。 在此方法中,我想強調以下幾點:
- 該方法獲取帶有@ModelAttribute注釋的參數Person對象 。 注釋定義方法的參數(Person person)將引用從表單傳遞的適當屬性。
- @RequestMapping(value =” / process-person”)包含將由該方法處理的URL的值。 我在person-page.jsp中定義的值相同; 我的意思是表單的屬性action =” process-person.html” 。
- 我已經指定了要傳遞給modelAndView對象的person對象的名稱。 vname是“ pers”。 我將在person-result.page.jsp中使用此名稱來調用我需要的參數。
這里的一切都很簡單。 我使用一種表達語言來訪問person對象的所有所需值,該值是在控制器的第二種方法處理請求之后獲得的。 結果,我得到了這樣的項目結構:
摘要
在本教程中,您已經了解了如何使用Spring MVC處理表單。 并非所有可能的方式都可以做到。 在以后的課程中,我將演示表單處理的其他變體。 您可以在下面看到工作的結果:
您可以從我的DropBox 下載此項目。
翻譯自: https://www.javacodegeeks.com/2013/04/spring-mvc-form-handling-vol-1.html
總結
以上是生活随笔為你收集整理的Spring MVC:表单处理卷。 1个的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支墩设置条件(支墩有哪些类型?其作用和各
- 下一篇: 百度日语输入法快捷键(如何用百度输入法输