Spring如何处理表单提交

网友投稿 264 2022-11-17


Spring如何处理表单提交

今天我们来讲一个最简单的表单提交处理的例子,通过提交一个表单给朋友打一声招呼!

看这边文章之前,你至少应该了解基于Spring的Web开发的基础知识,当然,你还是应该准备好开发环境:

IDE+java环境(JDK 1.7或以上版本)

Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用IDE并且不使用命令行工具可以不安装)

准备POM文件

POM.xml

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.tianmaying

springboot-form-submission-demo

0.0.1-SNAPSHOT

jar

springboot-form-submission-demo

Springboot form submission demo

org.springframework.boot

spring-boot-starter-parent

1.2.5.RELEASE

UTF-8

1.8

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.tianmaying

springboot-form-submission-demo

0.0.1-SNAPSHOT

jar

springboot-form-submission-demo

Springboot form submission demo

org.springframework.boot

spring-boot-starter-parent

1.2.5.RELEASE

UTF-8

1.8

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

创建Controller

我们已经知道可以通过Controller来进行URL路由,Spring WebMvc框架会将Servlet容器里收到的HTTP请求根据路径分发给对应的@Controller类进行处理、而 @RequestMapping注解表明该方法处理那些URL对应的HTTP请求。

我们的SayHelloController的代码如下:

package com.tianmaying.springboot.formsubmission;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.ModelAttribute;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

@Controller

public class SayHelloController {

@RequestMapping(value="/sayhello", method=RequestMethod.GET)

public String sayHelloForm(Model model) {

model.addAttribute("helloMessage", new HelloMessage());

return "sayhello";

}

@RequestMapping(value="/sayhello", method=RequestMethod.POST)

public String sayHello(@ModelAttribute HelloMessage helloMessage, Model model) {

model.addAttribute("helloMessage", helloMessage);

return "message";

}

}

针对/sayhello的GET请求,我们返回提交表单的页面,即sayHello.html

针对/sayhello的POST请求,我们进行表单的处理,然后将打招呼的信息渲染到message.html页面返回。

表单处理也无外乎这两件事情:显示表单,处理表单提交。

显示表单

/sayhello的GET请求里,在渲染页面之前,我们通过model.addAttribute("helloMessage", new HelloMessage());告诉页面绑定到一个空的HelloMessage对象,这样sayHello.html页面初始时就会显示一个空白的表单。

HelloMessage

package com.tianmaying.springboot.formsubmission;

public class HelloMessage {

private String name;

private String message;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

}

仅仅扔一个空白对象给表单还不够,你还得告诉表单的各个输入如何绑定到对象的各个属性上。这个时候我们要用上Themeleaf了。

friend:

message:

th:action="@{/sayhello}"表示将表单提交的POST请求交给/sayhello这个URL来处理

th:object="${helloMessage}"表示用来搜集的表单数据的对象时helloMessage,即用户输入信息将存储于这个对象中

两个表单域分别增加了属性th:field="*{name}"和th:field="*{message}",这就是将一个表单域绑定到特定的对象属性

处理表单

把处理表单的Controller代码再单独拿出来:

@RequestMapping(value="/sayhello", method=RequestMethod.POST)

public String greetingSubmit(@ModelAttribute HelloMessage helloMessage, Model model) {

model.addAttribute("helloMessage", helloMessage);

return "message";

}

处理表单就非常简单了,通过@ModelAttribute,我们可以直接通过helloMessage对象来处理用户提交的信息了。

从最早JSP和Servlet时代过来的人,对从request中根据参数名称逐个获取信息,然后自己去设置对应对象属性的场景一定会历历在目,那叫惨绝人寰哪。现在我们只需专注于Model的业务逻辑处理了,Spring MVC和Thymeleaf这对黄金组合帮我们搞定了表单和对象绑定这样繁琐的事情。

Run起来

这应该是你很熟悉的代码了:

package com.tianmaying.springboot.formsubmission;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class App {

public static void main(String[] args) {

SpringApplication.run(App.class, args);

}

}

SpringBootApplication标注做的事情参考这里,mvn spring-boot:run或在IDE中运行main()方法就可以看到效果了!​不用装Web服务器不用部署就能直接Run Web应用的感觉确实很酸爽!

当然,一个成熟的应用,通常还需要做表单的验证操作,即确保用户提交上来的数据是合法http://而且有效的!且待下回分解!

以上就是Spring如何处理表单提交的详细内容,更多关于Spring处理表单提交的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java两种常用的随机数生成方式(小白总结)
下一篇:SpringBoot 创建容器的实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~