日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring如何處理表單提交

瀏覽:167日期:2023-08-08 18:36:05

今天我們來(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類(lèi)進(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;@Controllerpublic 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ì)/sayhello的GET請(qǐng)求,我們返回提交表單的頁(yè)面,即sayHello.html 針對(duì)/sayhello的POST請(qǐng)求,我們進(jìn)行表單的處理,然后將打招呼的信息渲染到message.html頁(yè)面返回。

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

顯示表單

/sayhello的GET請(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>好吧啦網(wǎng): 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,即用戶(hù)輸入信息將存儲(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)處理用戶(hù)提交的信息了。

從最早JSP和Servlet時(shí)代過(guò)來(lái)的人,對(duì)從request中根據(jù)參數(shù)名稱(chēng)逐個(gè)獲取信息,然后自己去設(shè)置對(duì)應(yīng)對(duì)象屬性的場(chǎng)景一定會(huì)歷歷在目,那叫慘絕人寰哪。現(xiàn)在我們只需專(zhuā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;@SpringBootApplicationpublic 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)證操作,即確保用戶(hù)提交上來(lái)的數(shù)據(jù)是合法而且有效的!且待下回分解!

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

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产视频一区二| 国产日韩欧美高清免费| 岛国av在线网站| 嫩呦国产一区二区三区av| 久久尤物视频| 精品一级视频| 视频福利一区| 1000部精品久久久久久久久| 日韩中文字幕1| 欧美另类专区| 香蕉视频亚洲一级| 亚洲影院天堂中文av色| 国模精品一区| 午夜电影一区| 欧美+日本+国产+在线a∨观看| 一区二区日韩免费看| 在线人成日本视频| 蜜桃国内精品久久久久软件9| 日本少妇一区| 亚州av乱码久久精品蜜桃| 麻豆9191精品国产| 日韩av中文字幕一区二区| 国产精品乱战久久久| 国际精品欧美精品| 国产在线欧美| 色综合视频一区二区三区日韩 | 日韩中文首页| 欧美手机在线| 亚洲免费福利一区| 国产精品亚洲一区二区在线观看| 国产一区二区三区亚洲综合| 国产91精品对白在线播放| 免费久久99精品国产| 欧美片第1页综合| 精品久久97| 午夜av一区| 欧美日韩一区二区国产| 激情视频网站在线播放色| 激情自拍一区| 国产日韩高清一区二区三区在线| 精品福利久久久| 精品一区免费| 欧美自拍一区| 久久久久欧美精品| 综合视频一区| 98精品视频| 国产精品美女久久久| 国产欧美一区二区三区国产幕精品| 97精品国产一区二区三区 | 综合亚洲自拍| 高清一区二区| 蜜桃视频在线观看一区二区| 久久精品九色| 久久中文字幕av| 日本aⅴ亚洲精品中文乱码| 91av亚洲| 日韩一二三区在线观看| 久久美女性网| 欧美天堂一区| 欧美精品羞羞答答| 欧美男人天堂| а√在线中文在线新版| 日韩高清中文字幕一区| 久久先锋影音| 精品视频一二| 国产99久久| 视频一区欧美日韩| 91精品韩国| 国产精品玖玖玖在线资源| 久久亚洲人体| 色8久久久久| 久久人人精品| 午夜久久tv| 国产日韩欧美一区二区三区| 91综合久久爱com| 免费不卡在线观看| 亚洲欧美成人综合| 欧美日韩a区| 水蜜桃精品av一区二区| 精品美女在线视频| 欧美一区二区三区激情视频 | 蜜臀精品一区二区三区在线观看| 久久国产影院| 亚洲三区欧美一区国产二区| 亚洲最新无码中文字幕久久| 欧美一区二区三区久久| 日韩中文欧美在线| 久久久久久美女精品| 日本天堂一区| 老司机精品久久| 激情婷婷欧美| 日韩av福利| 国产免费av国片精品草莓男男| 伊人久久亚洲影院| 日韩欧美二区| 国产精品99久久免费观看| 午夜国产精品视频| 成人在线免费观看网站| 国产三级一区| 亚洲久草在线| 国产婷婷精品| 999久久久91| 日韩精品电影| 精品视频在线一区二区在线| 国产无遮挡裸体免费久久| 色婷婷成人网| 蜜臀av性久久久久蜜臀aⅴ流畅| 91高清一区| 久久一级电影| 99成人在线视频| 欧美日韩免费看片| 精品一区二区三区中文字幕视频 | 鲁大师成人一区二区三区| 欧美福利一区| 欧美午夜精彩| 久久国产电影| 99视频精品视频高清免费| 国产麻豆久久| 精精国产xxxx视频在线播放 | 9久re热视频在线精品| 亚洲小说欧美另类婷婷| 伊伊综合在线| 久久男人av资源站| 国产精品蜜芽在线观看| 捆绑调教日本一区二区三区| 精品国产中文字幕第一页| 免费在线亚洲| 麻豆精品视频在线观看视频| 美女精品久久| 精品一区二区三区在线观看视频| 美女久久99| 国内自拍视频一区二区三区| 国产精品男女| 国产亚洲观看| 欧美极品一区二区三区| 国产一区二区三区91| 精品精品99| 欧美精品日日操| 日韩一级网站| 一区二区精品| 国产欧美日韩精品一区二区三区| 国产欧美另类| 色乱码一区二区三区网站| 色在线视频观看| 国产精品99一区二区| 免费久久99精品国产| 欧美日韩 国产精品| 日韩av一二三| 国产精品17p| 色偷偷偷在线视频播放| 红桃视频国产一区| 综合激情五月婷婷| 欧美视频精品全部免费观看| 精品中文在线| 999国产精品999久久久久久| 日韩天堂av| 日本强好片久久久久久aaa| 欧美视频一区| 亚洲欧洲高清| 一区在线观看| 日本99精品| 麻豆理论在线观看| 激情偷拍久久| 欧美伊人影院| 免费污视频在线一区| 国产女优一区| 国产精品宾馆| 亚洲香蕉网站| 日韩高清三区| 国产中文在线播放| 美女国产一区| 国产福利一区二区精品秒拍| 欧美性感美女一区二区 | 亚洲人成高清| 麻豆国产精品777777在线| 久久精品官网| 国产精品日韩| 国产精品nxnn| 亚洲免费高清| 国产极品一区| 午夜久久美女| 精品久久国产一区| 亚洲一区二区三区四区电影| 精品资源在线| 蜜桃视频免费观看一区| 精品视频自拍| 日本大胆欧美人术艺术动态| 精品视频国内| 亚洲精品护士| 国产99久久| 国产精品白浆| 国产亚洲精品v| 精品资源在线| 一区二区国产在线| 日本精品不卡| 国产精品天堂蜜av在线播放| 怡红院精品视频在线观看极品| 麻豆高清免费国产一区| 亚洲一区av| 婷婷成人在线|