日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring MVC:表单处理卷。 1个

發(fā)布時間:2023/12/3 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring MVC:表单处理卷。 1个 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Spring MVC是Spring Framework的一部分,其主要目的是使Web開發(fā)更加簡單,便捷和輕松。 與表單的交互是或多或少現(xiàn)代Web應(yīng)用程序的一部分。 Spring MVC允許您以非常嚴(yán)格和簡單的方式執(zhí)行各種形式的活動。 在本文中,您將在Spring MVC的幫助下閱讀表單處理的基礎(chǔ)知識。

我將使用與Spring MVC相關(guān)的以前的教程之一作為以下示例的基礎(chǔ)。 我更喜歡基于Java的配置,因此不要驚訝,在本教程中您還將看到它們。 讓我們轉(zhuǎn)到本節(jié),我將指出這篇文章的主要目的。

Spring表單處理教程:

  • 復(fù)選框
  • 選框
  • 單選按鈕
  • 下拉列表

主要目標(biāo)

我將向您展示如何在Spring MVC的幫助下處理表單,如何將域模型與表單綁定,如何處理表單數(shù)據(jù)并在視圖中表示它。

發(fā)展歷程

我們的項目將基于Dynamic Web Project和Maven。 我建議使用這套傳統(tǒng)工具進(jìn)行專業(yè)軟件開發(fā)。 第一步將參考本文前面提到的帖子。 我的意思是在Eclipse中創(chuàng)建項目并將其轉(zhuǎn)換為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>

聲明所有依賴項后,我們可以繼續(xù)進(jìn)行項目配置。 如前所述,我將使用基于注釋的配置或許多人喜歡將其稱為“程序化配置方法”。 如果您想避免大量的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);} }

接下來,我將創(chuàng)建一個類,該類將表示與Web表單綁定的數(shù)據(jù)模型。 這是重要的一步,因?yàn)樵谑纠?#xff0c;我將不使用簡單的html表單標(biāo)簽,而是使用Spring表單標(biāo)簽庫。

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是必需的,因?yàn)镾pring表單標(biāo)簽使用它們與視圖層中的對象字段進(jìn)行交互。 本教程的主要部分隱含了控制器和視圖的開發(fā)。 因此,讓我們繼續(xù)。

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()中的第一個方法負(fù)責(zé)導(dǎo)航到帶有表單的頁面。 注意,方法的返回包含Person()類。 表單與域模型的正確綁定是必需的。
現(xiàn)在,讓我們繼續(xù)進(jìn)入“人員表單”頁面的概述:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> ... <h1>Person page</h1> <p>This is Person page</p> <form:form method="POST" commandname="person-entity" action="process-person.html"> <table><tbody><tr><td><form:label path="firstName">Name:</form:label></td><td><form:input path="firstName"></form:input></td></tr><tr><td><form:label path="age">Age:</form:label></td><td><form:input path="age"></form:input></td></tr><tr><td colspan="2"><input value="Submit" type="submit"></td><td></td><td></td></tr> </tbody></table> </form:form> ...

在這里,我想強(qiáng)調(diào)兩個寶貴的時刻。 首先是spring表單標(biāo)簽庫的導(dǎo)入。 第二個參數(shù)是commandName =“ person-entity”。 它的值等于控制器第一種方法中返回參數(shù)的值。 請注意,表單中的所有標(biāo)簽均包含與Person類字段完全對應(yīng)的路徑值。 讓我們回到第二種方法processPerson(@ModelAttribute Person person) 。 在此方法中,我想強(qiáng)調(diào)以下幾點(diǎn):

  • 該方法獲取帶有@ModelAttribute注釋的參數(shù)Person對象 。 注釋定義方法的參數(shù)(Person person)將引用從表單傳遞的適當(dāng)屬性。
  • @RequestMapping(value =” / process-person”)包含將由該方法處理的URL的值。 我在person-page.jsp中定義的值相同; 我的意思是表單的屬性action =” process-person.html” 。
  • 我已經(jīng)指定了要傳遞給modelAndView對象的person對象的名稱。 vname是“ pers”。 我將在person-result.page.jsp中使用此名稱來調(diào)用我需要的參數(shù)。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%> ... <h1>Person Result page</h1> <p>Student's name is ${pers.firstName}. The age is ${pers.age}. ... </p>

這里的一切都很簡單。 我使用一種表達(dá)語言來訪問person對象的所有所需值,該值是在控制器的第二種方法處理請求之后獲得的。 結(jié)果,我得到了這樣的項目結(jié)構(gòu):

摘要

在本教程中,您已經(jīng)了解了如何使用Spring MVC處理表單。 并非所有可能的方式都可以做到。 在以后的課程中,我將演示表單處理的其他變體。 您可以在下面看到工作的結(jié)果:

您可以從我的DropBox 下載此項目。

參考: Spring MVC:表單處理卷。 Fruzenshtein的筆記博客中來自JCG合作伙伴 Alexey Zvolinskiy的1 。

翻譯自: https://www.javacodegeeks.com/2013/04/spring-mvc-form-handling-vol-1.html

總結(jié)

以上是生活随笔為你收集整理的Spring MVC:表单处理卷。 1个的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。