首页 > 开发 > Java > 正文

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

2024-07-13 10:17:05
字体:
来源:转载
供稿:网友

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

下面我们在之前《Spring Boot 与 Kotlin使用Freemarker模板引擎渲染web视图》项目的基础上,增加处理表单提交。

build.gradle 文件没有变化,这里贴一下完整的build.gradle

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-pluginapply 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

/** * Created by http://quanke.name on 2018/1/12. */data class Hello(var id: Long? = 0, var content: String? = "")

创建Controller

import name.quanke.kotlin.chaper11_5_4.entity.Helloimport org.springframework.stereotype.Controllerimport org.springframework.ui.ModelMapimport org.springframework.web.bind.annotation.ModelAttributeimport org.springframework.web.bind.annotation.PostMappingimport org.springframework.web.bind.annotation.RequestMapping/** * Created by http://quanke.name on 2018/1/10. */@Controllerclass 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

<!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

<!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 启动

import org.springframework.boot.SpringApplicationimport org.springframework.boot.autoconfigure.SpringBootApplication/** * Created by http://quanke.name on 2018/1/9. */@SpringBootApplicationclass Applicationfun main(args: Array<String>) {  SpringApplication.run(Application::class.java, *args)}

启动工程,访问ttp://localhost:8080/:

参考:https://spring.io/guides/gs/handling-form-submission/

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表