Spring Boot与Kotlin处理Web表单提交的方法

2025-05-27 0 63

我们在做web开发的时候,肯定逃不过表单提交,这篇文章通过Spring Boot使用Kotlin 语言 创建和提交一个表单。

下面我们在之前《Spring BootKotlin使用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/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:https://www.jianshu.com/p/a790c185948e

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Spring Boot与Kotlin处理Web表单提交的方法 https://www.kuaiidc.com/76483.html

相关文章

发表评论
暂无评论