甘肃省城乡与住房建设厅网站,东莞城建局电话是多少,西安seo哪家好,襄阳云平台网站建设Spring MVC是Spring Framework的一部分#xff0c;其主要目的是使Web开发更加简单#xff0c;便捷和轻松。 与表单的交互是或多或少现代Web应用程序的一部分。 Spring MVC允许您以非常严格和简单的方式执行各种形式的活动。 在本文中#xff0c;您将在Spring MVC的帮助下阅读… 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 xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemalocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelversion4.0.0/modelversiongroupidEduSprMvc/groupidartifactidEduSprMvc/artifactidversion0.0.1-SNAPSHOT/versionpackagingwar/packagingpropertiesspring.version3.1.1.RELEASE/spring.version/propertiesdependencies!-- Spring --dependencygroupidorg.springframework/groupidartifactidspring-context/artifactidversion${spring.version}/version/dependencydependencygroupidorg.springframework/groupidartifactidspring-webmvc/artifactidversion${spring.version}/version/dependencydependencygroupidorg.springframework/groupidartifactidspring-beans/artifactidversion${spring.version}/version/dependencydependencygroupidorg.springframework/groupidartifactidspring-web/artifactidversion${spring.version}/version/dependency!-- CGLIB is required to process Configuration classes --dependencygroupidcglib/groupidartifactidcglib/artifactidversion2.2.2/version/dependency!-- Servlet API, JSTL --dependencygroupidjavax.servlet/groupidartifactidjavax.servlet-api/artifactidversion3.0.1/versionscopeprovided/scope/dependencydependencygroupidjstl/groupidartifactidjstl/artifactidversion1.2/version/dependency/dependenciesbuildpluginspluginartifactidmaven-compiler-plugin/artifactidversion2.3.2/versionconfigurationsource1.7target1.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类。 表单与域模型的正确绑定是必需的。 现在让我们继续进入“人员表单”页面的概述 % page languagejava contentTypetext/html; charsetISO-8859-1pageEncodingISO-8859-1%
%taglib urihttp://www.springframework.org/tags/form prefixform%
...
h1Person page/h1
pThis is Person page/p
form:form methodPOST commandnameperson-entity actionprocess-person.html
tabletbodytrtdform:label pathfirstNameName:/form:label/tdtdform:input pathfirstName/form:input/td/trtrtdform:label pathageAge:/form:label/tdtdform:input pathage/form:input/td/trtrtd colspan2input valueSubmit typesubmit/tdtd/tdtd/td/tr
/tbody/table
/form:form
... 在这里我想强调两个宝贵的时刻。 首先是spring表单标签库的导入。 第二个参数是commandName “ person-entity”。 它的值等于控制器第一种方法中返回参数的值。 请注意表单中的所有标签均包含与Person类字段完全对应的路径值。 让我们回到第二种方法processPersonModelAttribute Person person 。 在此方法中我想强调以下几点 该方法获取带有ModelAttribute注释的参数Person对象 。 注释定义方法的参数Person person将引用从表单传递的适当属性。 RequestMappingvalue ” / process-person”包含将由该方法处理的URL的值。 我在person-page.jsp中定义的值相同 我的意思是表单的属性action ” process-person.html” 。 我已经指定了要传递给modelAndView对象的person对象的名称。 vname是“ pers”。 我将在person-result.page.jsp中使用此名称来调用我需要的参数。 % page languagejava contentTypetext/html; charsetISO-8859-1pageEncodingISO-8859-1%
...
h1Person Result page/h1
pStudents name is ${pers.firstName}. The age is ${pers.age}.
...
/p 这里的一切都很简单。 我使用一种表达语言来访问person对象的所有所需值该值是在控制器的第二种方法处理请求之后获得的。 结果我得到了这样的项目结构 摘要 在本教程中您已经了解了如何使用Spring MVC处理表单。 并非所有可能的方式都可以做到。 在以后的课程中我将演示表单处理的其他变体。 您可以在下面看到工作的结果 您可以从我的DropBox 下载此项目。 参考 Spring MVC表单处理卷。 Fruzenshtein的笔记博客中来自JCG合作伙伴 Alexey Zvolinskiy的1 。 翻译自: https://www.javacodegeeks.com/2013/04/spring-mvc-form-handling-vol-1.html