最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring如何處理表單提交

 更新時(shí)間:2020年10月13日 08:40:41   作者:David  
這篇文章主要介紹了Spring如何處理表單提交,幫助大家更好的理解和學(xué)習(xí)spring框架,感興趣的朋友可以了解下

今天我們來(lái)講一個(gè)最簡(jiǎn)單的表單提交處理的例子,通過(guò)提交一個(gè)表單給朋友打一聲招呼!

看這邊文章之前,你至少應(yīng)該了解基于Spring的Web開(kāi)發(fā)的基礎(chǔ)知識(shí),當(dāng)然,你還是應(yīng)該準(zhǔn)備好開(kāi)發(fā)環(huán)境:

  • IDE+Java環(huán)境(JDK 1.7或以上版本)
  • Maven 3.0+(Eclipse和Idea IntelliJ內(nèi)置,如果使用IDE并且不使用命令行工具可以不安裝)

準(zhǔn)備POM文件

POM.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>

 <groupId>com.tianmaying</groupId>
 <artifactId>springboot-form-submission-demo</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>

 <name>springboot-form-submission-demo</name>
 <description>Springboot form submission demo</description>

 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.2.5.RELEASE</version>
 <relativePath/>
 </parent>

 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <java.version>1.8</java.version>
 </properties>

 <dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-thymeleaf</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>
 </dependencies>

 <build>
 <plugins>
 <plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin>
 </plugins>
 </build>

</project>

創(chuàng)建Controller

我們已經(jīng)知道可以通過(guò)Controller來(lái)進(jìn)行URL路由,Spring WebMvc框架會(huì)將Servlet容器里收到的HTTP請(qǐng)求根據(jù)路徑分發(fā)給對(duì)應(yīng)的@Controller類進(jìn)行處理、而 @RequestMapping注解表明該方法處理那些URL對(duì)應(yīng)的HTTP請(qǐng)求。

我們的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";
 }

}
  • 針對(duì)/sayhelloGET請(qǐng)求,我們返回提交表單的頁(yè)面,即sayHello.html
  • 針對(duì)/sayhelloPOST請(qǐng)求,我們進(jìn)行表單的處理,然后將打招呼的信息渲染到message.html頁(yè)面返回。

表單處理也無(wú)外乎這兩件事情:顯示表單,處理表單提交。

顯示表單

/sayhelloGET請(qǐng)求里,在渲染頁(yè)面之前,我們通過(guò)model.addAttribute("helloMessage", new HelloMessage());告訴頁(yè)面綁定到一個(gè)空的HelloMessage對(duì)象,這樣sayHello.html頁(yè)面初始時(shí)就會(huì)顯示一個(gè)空白的表單。

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;
 }

}

僅僅扔一個(gè)空白對(duì)象給表單還不夠,你還得告訴表單的各個(gè)輸入如何綁定到對(duì)象的各個(gè)屬性上。這個(gè)時(shí)候我們要用上Themeleaf了。

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
 <title>腳本之家: Spring表單提交處理</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
 <h1>表單處理演示</h1>
 <form action="#" th:action="@{/sayhello}" th:object="${helloMessage}" method="post">
 <p>friend: <input type="text" th:field="*{name}" /></p>
 <p>message: <input type="text" th:field="*{message}" /></p>
 <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
 </form>
</body>
</html>
  • th:action="@{/sayhello}"表示將表單提交的POST請(qǐng)求交給/sayhello這個(gè)URL來(lái)處理
  • th:object="${helloMessage}"表示用來(lái)搜集的表單數(shù)據(jù)的對(duì)象時(shí)helloMessage,即用戶輸入信息將存儲(chǔ)于這個(gè)對(duì)象中
  • 兩個(gè)表單域分別增加了屬性th:field="*{name}"th:field="*{message}",這就是將一個(gè)表單域綁定到特定的對(duì)象屬性

處理表單

把處理表單的Controller代碼再單獨(dú)拿出來(lái):

 @RequestMapping(value="/sayhello", method=RequestMethod.POST)
 public String greetingSubmit(@ModelAttribute HelloMessage helloMessage, Model model) {
 model.addAttribute("helloMessage", helloMessage);
 return "message";
 }

處理表單就非常簡(jiǎn)單了,通過(guò)@ModelAttribute,我們可以直接通過(guò)helloMessage對(duì)象來(lái)處理用戶提交的信息了。

從最早JSP和Servlet時(shí)代過(guò)來(lái)的人,對(duì)從request中根據(jù)參數(shù)名稱逐個(gè)獲取信息,然后自己去設(shè)置對(duì)應(yīng)對(duì)象屬性的場(chǎng)景一定會(huì)歷歷在目,那叫慘絕人寰哪?,F(xiàn)在我們只需專注于Model的業(yè)務(wù)邏輯處理了,Spring MVC和Thymeleaf這對(duì)黃金組合幫我們搞定了表單和對(duì)象綁定這樣繁瑣的事情。

Run起來(lái)

這應(yīng)該是你很熟悉的代碼了:

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標(biāo)注做的事情參考這里,mvn spring-boot:run或在IDE中運(yùn)行main()方法就可以看到效果了!​不用裝Web服務(wù)器不用部署就能直接Run Web應(yīng)用的感覺(jué)確實(shí)很酸爽!

當(dāng)然,一個(gè)成熟的應(yīng)用,通常還需要做表單的驗(yàn)證操作,即確保用戶提交上來(lái)的數(shù)據(jù)是合法而且有效的!且待下回分解!

以上就是Spring如何處理表單提交的詳細(xì)內(nèi)容,更多關(guān)于Spring處理表單提交的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring?Service中的@Service注解的使用小結(jié)

    Spring?Service中的@Service注解的使用小結(jié)

    本文主要介紹了Spring?Service中的@Service注解的使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • java swagger ui 添加header請(qǐng)求頭參數(shù)的方法

    java swagger ui 添加header請(qǐng)求頭參數(shù)的方法

    今天小編就為大家分享一篇java swagger ui 添加header請(qǐng)求頭參數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Spring?MVC各種參數(shù)進(jìn)行封裝的方法實(shí)例

    Spring?MVC各種參數(shù)進(jìn)行封裝的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Spring?MVC各種參數(shù)進(jìn)行封裝的相關(guān)資料,SpringMVC內(nèi)置多種數(shù)據(jù)類型轉(zhuǎn)換器,可以根據(jù)請(qǐng)求中的參數(shù)與后端控制器方法的參數(shù)的關(guān)系為我們實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)封裝,需要的朋友可以參考下
    2023-06-06
  • Java?web訪問(wèn)http://localhost:8080/xx/xx.jsp報(bào)404錯(cuò)誤問(wèn)題的解決方法

    Java?web訪問(wèn)http://localhost:8080/xx/xx.jsp報(bào)404錯(cuò)誤問(wèn)題的解決方法

    這篇文章主要給大家介紹了關(guān)于Java?web訪問(wèn)http://localhost:8080/xx/xx.jsp報(bào)404錯(cuò)誤問(wèn)題的解決方法,很多小伙伴在剛開(kāi)始用Springboot整合jsp開(kāi)發(fā)時(shí)都會(huì)遇到這個(gè)問(wèn)題, 按照別人的教程一步一步搭建,但就是會(huì)報(bào)404,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Java多線程教程之如何利用Future實(shí)現(xiàn)攜帶結(jié)果的任務(wù)

    Java多線程教程之如何利用Future實(shí)現(xiàn)攜帶結(jié)果的任務(wù)

    Callable與Future兩功能是Java?5版本中加入的,這篇文章主要給大家介紹了關(guān)于Java多線程教程之如何利用Future實(shí)現(xiàn)攜帶結(jié)果任務(wù)的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • SpringBoot跨域問(wèn)題的五種解決方式

    SpringBoot跨域問(wèn)題的五種解決方式

    前后端分離開(kāi)發(fā)中,跨域問(wèn)題是很常見(jiàn)的一種問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于SpringBoot跨域問(wèn)題的五種解決方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • FasfDFS整合Java實(shí)現(xiàn)文件上傳下載功能實(shí)例詳解

    FasfDFS整合Java實(shí)現(xiàn)文件上傳下載功能實(shí)例詳解

    這篇文章主要介紹了FasfDFS整合Java實(shí)現(xiàn)文件上傳下載功能實(shí)例詳解,需要的朋友可以參考下
    2017-08-08
  • java 文件大數(shù)據(jù)Excel下載實(shí)例代碼

    java 文件大數(shù)據(jù)Excel下載實(shí)例代碼

    這篇文章主要介紹了java 文件大數(shù)據(jù)Excel下載實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 通過(guò)代碼理解java泛型

    通過(guò)代碼理解java泛型

    本篇文章通過(guò)代碼實(shí)例讓大家充分的理解java泛型的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2018-08-08
  • Java中泛型的接口、通配符使用詳解

    Java中泛型的接口、通配符使用詳解

    這篇文章主要介紹了Java中泛型的接口、通配符使用詳解,編譯時(shí)的類型安全監(jiān)測(cè)機(jī)制,也可以把這個(gè)數(shù)據(jù)類型理解成是一種可以傳遞的參數(shù),需要的朋友可以參考下
    2023-08-08

最新評(píng)論

盐亭县| 广宁县| 黄平县| 龙泉市| 万荣县| 南通市| 鹤壁市| 离岛区| 普兰店市| 突泉县| 赣榆县| 锡林浩特市| 连南| 达州市| 中江县| 胶州市| 满洲里市| 佛学| 潮安县| 甘肃省| 寻乌县| 陈巴尔虎旗| 河北省| 罗田县| 广昌县| 临城县| 万州区| 大厂| 新兴县| 马公市| 连城县| 南华县| 彰化市| 汉寿县| 得荣县| 丹寨县| 西吉县| 邓州市| 延川县| 巴塘县| 荥经县|