我们在做web开发的时候,肯定逃不过表单提交,这篇文章通过Spring Boot使用Kotlin 语言 创建和提交一个表单。
下面我们在之前《Spring Boot 与 Kotlin使用Freemarker模板引擎渲染web视图》项目的基础上,增加处理表单提交。
build.gradle 文件没有变化,这里贴一下完整的build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
group 'name.quanke.kotlin' version '1.0-SNAPSHOT' buildscript { ext.kotlin_version = '1.2.10' ext.spring_boot_version = '1.5.4.RELEASE' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath("org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version") // Kotlin整合SpringBoot的默认无参构造函数,默认把所有的类设置open类插件 classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlin_version") classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlin_version") } } apply plugin: 'kotlin' apply plugin: "kotlin-spring" // See https://kotlinlang.org/docs/reference/compiler-plugins.html#kotlin-spring-compiler-plugin apply plugin: 'org.springframework.boot' jar { baseName = 'chapter11-5-4-service' version = '0.1.0' } repositories { mavenCentral() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" compile "org.springframework.boot:spring-boot-starter-web:$spring_boot_version" compile "org.springframework.boot:spring-boot-starter-thymeleaf:$spring_boot_version" // compile "com.fasterxml.jackson.module:jackson-module-kotlin:$kotlin_version" testCompile "org.springframework.boot:spring-boot-starter-test:$spring_boot_version" testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" } compileKotlin { kotlinOptions.jvmTarget = "1.8" } compileTestKotlin { kotlinOptions.jvmTarget = "1.8" } |
创建实体类Hello
1
2
3
4
|
/** * Created by http://quanke.name on 2018/1/12. */ data class Hello(var id: Long? = 0 , var content: String? = "" ) |
创建Controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import name.quanke.kotlin.chaper11_5_4.entity.Hello import org.springframework.stereotype.Controller import org.springframework.ui.ModelMap import org.springframework.web.bind.annotation.ModelAttribute import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestMapping /** * Created by http://quanke.name on 2018/1/10. */ @Controller class HelloController { @RequestMapping ( "/" ) fun index(map: ModelMap): String { // / 加入一个属性,用来在模板中读取 map.addAttribute( "host" , "http://quanke.name" ) map.addAttribute( "hello" ,Hello()) // return模板文件的名称,对应src/main/resources/templates/index.html return "index" } @PostMapping ( "/hello" ) fun helloPostSubmit( @ModelAttribute hello: Hello): String { return "result" } } |
页面展示层
src/main/resources/templates/index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!DOCTYPE html> < html xmlns:th = "http://www.w3.org/1999/xhtml" > < head lang = "en" > < title >quanke.name</ title > < meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" /> </ head > < body > < h1 th:text = "${host}" >Hello World</ h1 > < h1 >Form</ h1 > < form action = "#" th:action = "@{/hello}" th:object = "${hello}" method = "post" > < p >Id: < input type = "text" th:field = "*{id}" /></ p > < p >Message: < input type = "text" th:field = "*{content}" /></ p > < p >< input type = "submit" value = "Submit" /> < input type = "reset" value = "Reset" /></ p > </ form > </ body > </ html > |
src/main/resources/templates/result.html
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!DOCTYPE html> < html lang = "en" xmlns:th = "http://www.w3.org/1999/xhtml" > < head > < meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" /> < title >Title</ title > </ head > < body > < h1 >Result</ h1 > < p th:text = "'id: ' + ${hello.id}" /> < p th:text = "'content: ' + ${hello.content}" /> < a href = "/" rel = "external nofollow" >Submit another message</ a > </ body > </ html > |
Spring Boot 启动
1
2
3
4
5
6
7
8
9
10
11
12
|
import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.SpringBootApplication /** * Created by http://quanke.name on 2018/1/9. */ @SpringBootApplication class Application fun main(args: Array<String>) { SpringApplication.run(Application:: class .java, *args) } |
启动工程,访问ttp://localhost:8080/:
参考:https://spring.io/guides/gs/handling-form-submission/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.jianshu.com/p/a790c185948e