《Java Web開發(fā)從入門到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第14章 Spring Boot的Web開發(fā)_第1頁
《Java Web開發(fā)從入門到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第14章 Spring Boot的Web開發(fā)_第2頁
《Java Web開發(fā)從入門到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第14章 Spring Boot的Web開發(fā)_第3頁
《Java Web開發(fā)從入門到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第14章 Spring Boot的Web開發(fā)_第4頁
《Java Web開發(fā)從入門到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第14章 Spring Boot的Web開發(fā)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第14章SpringBoot的Web開發(fā)學(xué)習(xí)目的與要求本章首先介紹Thymeleaf視圖模板引擎技術(shù),然后介紹如何使用Thymeleaf模板技術(shù)進(jìn)行頁面信息國際化,最后介紹Spring

Boot與Thymeleaf的表單驗(yàn)證。通過本章的學(xué)習(xí),掌握SpringBoot的Web開發(fā)技術(shù)?!禞avaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄14.1Thymeleaf模板引擎14.2SpringBoot與Thymeleaf實(shí)現(xiàn)頁面信息國際化14.3SpringBoot與Thymeleaf的表單驗(yàn)證14.4基于Thymeleaf與BootStrap的Web開發(fā)實(shí)例《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.1Thymeleaf模板引擎在SpringBoot的Web應(yīng)用中,建議開發(fā)者使用HTML完成動態(tài)頁面。SpringBoot提供了許多模板引擎,主要包括FreeMarker、Groovy、Thymeleaf和Mustache。因?yàn)門hymeleaf提供了完美的SpringMVC支持,所以在SpringBoot的Web應(yīng)用中推薦使用Thymeleaf作為模板引擎。Thymeleaf是一個Java類庫,是一個xml/xhtml/html5的模板引擎,能夠處理HTML、XML、JavaScript以及CSS,可以作為MVC

Web應(yīng)用的View層顯示數(shù)據(jù)。《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.1.1SpringBoot的Thymeleaf支持在SpringBoot1.X版本中,spring-boot-starter-thymeleaf依賴包含了spring-boot-starter-web模塊。但是,在Spring5中,WebFlux的出現(xiàn)對于Web應(yīng)用的解決方案將不再唯一。所以,spring-boot-starter-thymeleaf依賴不再包含spring-boot-starter-web模塊,需要開發(fā)人員自己選擇spring-boot-starter-thymeleaf模塊依賴?!禞avaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.1.2Thymeleaf基礎(chǔ)語法1.引入Thymeleaf首先,將View層頁面文件的html標(biāo)簽修改如下:<htmlxmlns:th="">然后,在View層頁面文件的其它標(biāo)簽里,使用th:*動態(tài)處理頁面。示例代碼如下:<imgth:src="'images/'+${aBook.picture}"/>其中,${aBook.picture}獲得數(shù)據(jù)對象aBook的picture屬性?!禞avaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

2.輸出內(nèi)容使用th:text和th:utext(不對文本轉(zhuǎn)義,正常輸出)將文本內(nèi)容輸出到所在標(biāo)簽的body中。假如在國際化資源文件messages_en_US.properties中有消息文本“test.myText=<strong>TestInternationalMessage</strong>”,那么在頁面中可以使用如下兩種方式獲得消息文本:<pth:text="#{test.myText}"></p><!--對文本轉(zhuǎn)義,即輸出<strong>TestInternationalMessage</strong>--><pth:utext="#{test.myText}"></p><!--對文本不轉(zhuǎn)義,即輸出加粗的“TestInternationalMessage”-->《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

3.基本表達(dá)式1)變量表達(dá)式:${...}用于訪問容器上下文環(huán)境中的變量,示例代碼如下:<spanth:text="${information}">2)選擇變量表達(dá)式:*{...}選擇變量表達(dá)式計算的是選定的對象(th:object屬性綁定的對象),示例代碼如下:<divth:object="${session.user}">name:<spanth:text="*{firstName}"></span><br><!--firstName為user對象的屬性-->surname:<spanth:text="*{lastName}"></span><br>nationality:<spanth:text="*{nationality}"></span><br></div>3)信息表達(dá)式:#{...}一般用于顯示頁面靜態(tài)文本。將可能需要根據(jù)需求而整體變動的靜態(tài)文本放在properties文件中以便維護(hù)(如國際化)。通常與th:text屬性一起使用,示例代碼如下:<pth:text="#{test.myText}"></p>《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

4.引入URLThymeleaf模板通過@{...}表達(dá)式引入URL,示例代碼如下:<!--默認(rèn)訪問src/main/resources/static下的css文件夾--><linkrel="stylesheet"th:href="@{css/bootstrap.min.css}"/><!--訪問相對路徑--><ath:href="@{/}">去看看</a><!--訪問絕對路徑--><ath:href="@{/index.html(param1='傳參')}">去清華大學(xué)出版社</a><!--默認(rèn)訪問src/main/resources/static下的'images文件夾--><imgth:src="'images/'+${aBook.picture}"/>《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.訪問WebContext對象中的屬性Thymeleaf模板通過一些專門的表達(dá)式從模板的WebContext獲取請求參數(shù)、請求、會話和應(yīng)用程序中的屬性,具體如下:${xxx}將返回存儲在Thymeleaf模板上下文中的變量xxx或請求request作用域中的屬性xxx。${param.xxx}將返回一個名為xxx的請求參數(shù)(可能是多個值)。${session.xxx}將返回一個名為xxx的HttpSession作用域中的屬性。${application.xxx}將返回一個名為xxx的全局ServletContext上下文作用中的屬性。與EL表達(dá)式一樣,使用${xxx}獲得變量值,使用${對象變量名.屬性名}獲取JavaBean屬性值。但需要注意的是,${}表達(dá)式只能在th標(biāo)簽內(nèi)部有效?!禞avaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.運(yùn)算符在Thymeleaf模板的表達(dá)式中可以使用+、-、*、/、%等各種算術(shù)運(yùn)算符,也可以使用>、<、<=、>=、==、!=等各種邏輯運(yùn)算符。示例代碼如下:<trth:class="(${row}=='even')?'even':'odd'">...</tr>《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

7.條件判斷1)if和unless標(biāo)簽只有在th:if條件成立時才顯示,th:unless與th:if相反,只有條件不成立時,才顯示標(biāo)簽內(nèi)容。示例代碼如下:<ahref="success.html"th:if="${user!=null}">成功</a><ahref="success.html"th:unless="${user=null}">成功</a>2)switch語句Thymeleaf模板也支持多路選擇switch語句結(jié)構(gòu),默認(rèn)屬性default可用“*”表示。示例代碼如下:<divth:switch="${user.role}"><pth:case="'admin'">Userisanadministrator</p><pth:case="'teacher'">Userisateacher</p><pth:case="*">Userisastudent</p></div>《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

8.循環(huán)(基本循環(huán))Thymeleaf模板使用th:each="obj,iterStat:${objList}"標(biāo)簽進(jìn)行迭代循環(huán),迭代對象可以是java.util.List、java.util.Map或數(shù)組等。示例代碼如下:<!--循環(huán)取出集合數(shù)據(jù)--><divclass="col-md-4col-sm-6"th:each="book:${books}"> <ahref="">

<imgth:src="'images/'+${book.picture}"alt="圖書封面"style="height:180px;width:40%;"/> </a> <divclass="caption"> <h4th:text="${book.bname}"></h4> <pth:text="${book.author}"></p> <pth:text="${book.isbn}"></p> <pth:text="${book.price}"></p> <pth:text="${book.publishing}"></p> </div></div>《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

8.循環(huán)(循環(huán)狀態(tài)的使用)<divclass="col-md-4col-sm-6"th:each="book,bookStat:${books}"> <ahref=""> <imgth:src="'images/'+${book.picture}"alt="圖書封面"style="height:180px;width:40%;"/> </a> <divclass="caption"> <!--循環(huán)狀態(tài)bookStat--> <h3th:text="${bookStat.count}"></h3> <h4th:text="${book.bname}"></h4> <pth:text="${book.author}"></p> <pth:text="${book.isbn}"></p> <pth:text="${book.price}"></p> <pth:text="${book.publishing}"></p> </div></div>《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.1.3Thymeleaf的常用屬性1.th:action定義后臺控制器路徑,類似<form>標(biāo)簽的action屬性。示例代碼如下:<formth:action="@{/login}">...</form>2.th:each集合對象遍歷,功能類似JSTL標(biāo)簽<c:forEach>。示例代碼如下:<divclass="col-md-4col-sm-6"th:each="gtype:${gtypes}"> <divclass="caption"> <pth:text="${gtype.id}"></p> <pth:text="${gtype.typename}"></p> </div></div>《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.1.3Thymeleaf的常用屬性3.th:field常用于表單參數(shù)綁定,通常與th:object一起使用。示例代碼如下:<formth:action="@{/login}"th:object="${user}"><inputtype="text"value=""th:field="*{username}"></input><inputtype="text"value=""th:field="*{role}"></input></form>4.th:href定義超鏈接,類似<a>標(biāo)簽的href屬性。value形式為@{/logout},示例代碼如下:<ath:href="@{/gogo}"></a>5.th:iddiv的id聲明,類似html標(biāo)簽中的id屬性,示例代碼如下:<divth:id="stu+(${rowStat.index}+1)"></div>《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.1.3Thymeleaf的常用屬性6.th:if條件判斷。如果為否則標(biāo)簽不顯示,示例代碼如下:<divth:if="${rowStat.index}==0">...dosomething...</div>7.th:fragment聲明定義該屬性的div為模板片段,常用于頭文件、頁尾文件的引入。常與th:include、th:replace一起使用。8.th:object用于表單數(shù)據(jù)對象綁定,將表單綁定到后臺Controller的一個JavaBean參數(shù),常與th:field一起使用,進(jìn)行表單數(shù)據(jù)綁定。《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.1.3Thymeleaf的常用屬性【例14-1】表單提交及數(shù)據(jù)綁定的實(shí)現(xiàn)過程1)創(chuàng)建Web應(yīng)用創(chuàng)建基于Lombok與Thymeleaf依賴的SpringBootWeb應(yīng)用ch14_1,并在全局配置文件perties中,配置應(yīng)用的上下文路徑server.servlet.context-path=/ch14_1。《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

2)創(chuàng)建實(shí)體類在Web應(yīng)用ch14_1的src/main/java目錄下,創(chuàng)建包c(diǎn)om.ch7_1.model,并在該包中創(chuàng)建實(shí)體類LoginBean,代碼如下:packagecom.ch7_1.model;importlombok.Data;@DatapublicclassLoginBean{Stringuname;Stringurole;}《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

3)創(chuàng)建控制器類在Web應(yīng)用ch14_1的src/main/java目錄下,創(chuàng)建包c(diǎn)om.ch14_1.controller,并在該包中創(chuàng)建控制器類LoginController。@GetMapping("/toLogin")publicStringtoLogin(Modelmodel){/*loginBean與login.html頁面中的th:object="${loginBean}"相同,類似于SpringMVC的表單綁定。*/model.addAttribute("loginBean",newLoginBean());return"login";}@PostMapping("/login")publicStringgreetingSubmit(@ModelAttributeLoginBeanloginBean){/*@ModelAttributeLoginBeanloginBean接收login.html頁面中的表單數(shù)據(jù),并將loginBean對象保存到model中返回給result.html頁面顯示。*/System.out.println("測試提交的數(shù)據(jù):"+loginBean.getUname());return"result";

}《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

4)創(chuàng)建頁面表示層Tymeleaf模板默認(rèn)將視圖頁面放在src/main/resources/templates目錄下。因此,在Web應(yīng)用ch14_1的src/main/resources/templates目錄下,創(chuàng)建頁面login.html和result.html?!禞avaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5)運(yùn)行首先,運(yùn)行Ch141Application主類。然后,訪問http://localhost:8080/ch14_1/toLogin,運(yùn)行結(jié)果如圖14.2所示?!禞avaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.1.3Thymeleaf的常用屬性9.th:src用于外部資源引入,類似于<script>標(biāo)簽的src屬性。示例代碼如下:<imgth:src="'images/'+${aBook.picture}"/>10.th:text文本顯示,將文本內(nèi)容顯示到所在標(biāo)簽的body中。示例代碼如下:<tdth:text="${username}"></td>11.th:value用于標(biāo)簽賦值,類似標(biāo)簽的value屬性。示例代碼如下:<optionth:value="Adult">Adult</option><inputtype="hidden"th:value="${msg}"

/>《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.1.3Thymeleaf的常用屬性12.th:style用于修改標(biāo)簽style,示例代碼如下:<spanth:style="'display:'+@{(${myVar}?'none':'inline-block')}">myVar是一個變量</span>13.th:onclick用于修改點(diǎn)擊事件,示例代碼如下:<buttonth:onclick="'getCollect()'"></button>《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄14.1Thymeleaf模板引擎14.2SpringBoot與Thymeleaf實(shí)現(xiàn)頁面信息國際化14.3SpringBoot與Thymeleaf的表單驗(yàn)證14.4基于Thymeleaf與BootStrap的Web開發(fā)實(shí)例《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.2SpringBoot與Thymeleaf實(shí)現(xiàn)頁面信息國際化【例14-2】國際化的實(shí)現(xiàn)過程,具體實(shí)現(xiàn)步驟如下。1.編寫國際化資源屬性文件1)編寫管理員模塊的國際化信息在應(yīng)用ch14_1的src/main/resources目錄下創(chuàng)建i18n/admin文件夾,并在該文件夾下創(chuàng)建adminMperties、adminMessages_en_US.properties和adminMessages_zh_CN.properties資源屬性文件。adminMperties表示默認(rèn)加載的信息;adminMessages_en_US.properties表示英文信息(en代表語言代碼,US代表國家地區(qū));adminMessages_zh_CN.properties表示中文信息?!禞avaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

1.編寫國際化資源屬性文件2)編寫用戶模塊的國際化信息在應(yīng)用ch14_1的src/main/resources目錄下創(chuàng)建i18n/before文件夾,并在該文件夾下創(chuàng)建beforeMperties、beforeMessages_en_US.properties和beforeMessages_zh_CN.properties資源屬性文件。3)編寫公共模塊的國際化信息在應(yīng)用ch14_1的src/main/resources目錄下創(chuàng)建i18n/common文件夾,并在該文件夾下創(chuàng)建commonMperties、commonMessages_en_US.properties和commonMessages_zh_CN.properties資源屬性文件?!禞avaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

2.添加配置文件內(nèi)容,引入資源屬性文件在應(yīng)用ch14_1的配置文件perties中,添加如下內(nèi)容,引入資源屬性文件。spring.messages.basename=i18n/admin/adminMessages,i18n/before/beforeMessages,i18n/common/commonMessages《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

3.重寫localeResolver方法配置語言區(qū)域選擇在應(yīng)用ch14_1的com.ch14_1包中,創(chuàng)建配置類LocaleConfig,該配置類實(shí)現(xiàn)WebMvcConfigurer接口,并配置語言區(qū)域選擇。@Configuration@EnableAutoConfigurationpublicclassLocaleConfigimplementsWebMvcConfigurer{ @Bean publicLocaleResolverlocaleResolver(){ } @Bean publicLocaleChangeInterceptorlocaleChangeInterceptor(){ } @Override publicvoidaddInterceptors(InterceptorRegistryregistry){ registry.addInterceptor(localeChangeInterceptor()); }

}《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

4.創(chuàng)建控制器類I18nTestController在應(yīng)用ch14_1的com.ch14_1.controller包中,創(chuàng)建控制器類I18nTestController。@Controller@RequestMapping("/i18n")publicclassI18nTestController{@GetMapping("/first")publicStringtestI18n(){return"/i18n/first";}@GetMapping("/admin")publicStringadmin(){return"/i18n/admin";}@GetMapping("/before")publicStringbefore(){return"/i18n/before";}}《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.創(chuàng)建視圖頁面,并獲得國際化信息在應(yīng)用ch14_1的src/main/resources/templates目錄下,創(chuàng)建文件夾i18n。并在該文件夾中創(chuàng)建admin.html、before.html和first.html視圖頁面,并在這些視圖頁面中使用th:text="#{xxx}"獲得國際化信息。《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.運(yùn)行《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄14.1Thymeleaf模板引擎14.2SpringBoot與Thymeleaf實(shí)現(xiàn)頁面信息國際化14.3SpringBoot與Thymeleaf的表單驗(yàn)證14.4基于Thymeleaf與BootStrap的Web開發(fā)實(shí)例《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.3SpringBoot與Thymeleaf的表單驗(yàn)證本節(jié)使用Hibernate

Validator對表單進(jìn)行驗(yàn)證,注意它和Hibernate無關(guān),只是使用它進(jìn)行數(shù)據(jù)驗(yàn)證。因?yàn)閟pring-boot-starter-web不再依賴hibernate-validator的jar包,所以在Spring

Boot的Web應(yīng)用中,使用Hibernate

Validator對表單進(jìn)行驗(yàn)證時,需要加載Hibernate

Validator所依賴的jar包。<dependency>

<groupId>org.hibernate.validator</groupId>

<artifactId>hibernate-validator</artifactId></dependency>使用Hibernate

Validator驗(yàn)證表單時,需要利用它的標(biāo)注類型在實(shí)體模型的屬性上嵌入約束?!禞avaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

HibernateValidator標(biāo)注類型1.空檢查@Null:驗(yàn)證對象是否為null。@NotNull:驗(yàn)證對象是否不為null,無法查檢長度為0的字符串。@NotBlank:檢查約束字符串是不是null,還有被trim后的長度是否大于0,只對字符串,且會去掉前后空格。@NotEmpty:檢查約束元素是否為null或者是empty。示例如下:@NotBlank(message="{goods.gname.required}")//goods.gname.required為屬性文件的錯誤代碼privateStringgname;《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

HibernateValidator標(biāo)注類型2.booelan檢查@AssertTrue:驗(yàn)證boolean屬性是否為true。@AssertFalse:驗(yàn)證boolean屬性是否為false。示例如下:@AssertTrueprivatebooleanisLogin;3.長度檢查@Size(min=,max=):驗(yàn)證對象(Array,Collection,Map,String)長度是否在給定的范圍之內(nèi)。@Length(min=,max=):驗(yàn)證字符串長度是否在給定的范圍之內(nèi)。示例如下:@Length(min=1,max=100)privateStringgdescription;《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

HibernateValidator標(biāo)注類型4.日期檢查@Past:驗(yàn)證Date和Calendar對象是否在當(dāng)前時間之前。@Future:驗(yàn)證Date和Calendar對象是否在當(dāng)前時間之后。@Pattern:驗(yàn)證String對象是否符合正則表達(dá)式的規(guī)則。示例如下:@Past(message="{gdate.invalid}")privateDategdate;《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

HibernateValidator標(biāo)注類型5.?dāng)?shù)值檢查@Min:驗(yàn)證Number和String對象是否大等于指定的值。@Max:驗(yàn)證Number和String對象是否小等于指定的值。@DecimalMax:被標(biāo)注的值必須不大于約束中指定的最大值,這個約束的參數(shù)是一個通過BigDecimal定義的最大值的字符串表示,小數(shù)存在精度。@DecimalMin:被標(biāo)注的值必須不小于約束中指定的最小值,這個約束的參數(shù)是一個通過BigDecimal定義的最小值的字符串表示,小數(shù)存在精度。@Digits:驗(yàn)證Number和String的構(gòu)成是否合法。@Digits(integer=,fraction=):驗(yàn)證字符串是否符合指定格式的數(shù)字,interger指定整數(shù)精度,fraction指定小數(shù)精度。@Range(min=,max=):檢查數(shù)字是否介于min和max之間。@Valid:對關(guān)聯(lián)對象進(jìn)行校驗(yàn),如果關(guān)聯(lián)對象是個集合或者數(shù)組,那么對其中的元素進(jìn)行校驗(yàn),如果是一個map,則對其中的值部分進(jìn)行校驗(yàn)。@CreditCardNumber:信用卡驗(yàn)證。@Email:驗(yàn)證是否是郵件地址,如果為null,不進(jìn)行驗(yàn)證,通過驗(yàn)證。@Range(min=0,max=100,message="{gprice.invalid}")privatedoublegprice;《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

14.3SpringBoot與Thymeleaf的表單驗(yàn)證【例14-3】使用Hibernate

Validator驗(yàn)證表單的過程。1.創(chuàng)建Web應(yīng)用創(chuàng)建基于Lombok與Thymeleaf依賴的SpringBootWeb應(yīng)用ch14_2,并在全局配置文件perties中,配置應(yīng)用的上下文路徑server.servlet.context-path=/ch14_2。2.加載HibernateValidator依賴在應(yīng)用ch14_2的pom.xml文件中添加Hibernate

Validator所依賴的JAR包。《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

3.創(chuàng)建表單實(shí)體模型在應(yīng)用ch14_2的src/main/java目錄下,創(chuàng)建com.ch14_2.model包,并在該包中創(chuàng)建表單實(shí)體模型類Goods。在該類使用HibernateValidator的標(biāo)注類型進(jìn)行表單驗(yàn)證。@DatapublicclassGoods{@NotBlank(message="商品名必須輸入")

@Length(min=1,max=5,message="商品名長度在1到5之間")privateStringgname;@Range(min=0,max=100,message="商品價格在0到100之間")privatedoublegprice;}《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

4.創(chuàng)建控制器在應(yīng)用ch14_2的src/main/java目錄下,創(chuàng)建com.ch14_2.controller包,并在該包中創(chuàng)建控制器類TestValidatorController。在該類中有兩個處理方法,一個是界面初始化處理方法testValidator,一個是添加請求處理方法add。在add方法中,使用@Validated注解使驗(yàn)證生效。@PostMapping("/add")publicStringadd(@ModelAttribute("goodsInfo")@ValidatedGoodsgoods,BindingResultrs){

//@ModelAttribute("goodsInfo")與th:object="${goodsInfo}"相對應(yīng)

if(rs.hasErrors()){//驗(yàn)證失敗

return"testValidator";

}

//驗(yàn)證成功,可以到任意地方,在這里直接到testValidator界面

return"testValidator";}《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.創(chuàng)建視圖頁面在應(yīng)用ch14_2的src/main/resources/templates目錄下,創(chuàng)建視圖頁面testValidator.html。在視圖頁面中,直接讀取到ModelAttribute里面注入的數(shù)據(jù),然后通過th:errors="*{xxx}"獲得驗(yàn)證錯誤信息。《JavaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.運(yùn)行首先,運(yùn)行Ch142Application主類。然后,訪問http://localhost:8080/ch14_2/testValidator。表單驗(yàn)證失敗效果如圖14.6所示?!禞avaWeb開發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄14.1Thymeleaf模板引擎14.2SpringBoot與Thymeleaf實(shí)現(xiàn)頁面信息國際化14.3SpringBoot與Thymeleaf的表單驗(yàn)證14.4基于Thymele

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論