欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Spring boot如何創(chuàng)建簡單的web交互應用

 更新時間:2017年04月28日 10:43:20   作者:Be a funny man.  
這篇文章主要介紹了利用Spring boot如何創(chuàng)建簡單的web交互應用的相關資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。

關于頁面渲染

其實在工作中,一直都是前后端分離,也就是說,我的工作從來都是提供接口,而不寫 html css js 之類的,所以在這方面也沒有經(jīng)驗。

這里為了給大家介紹下模板引擎,我將會寫個非常非常簡單的頁面,如果不好看,請見諒~

Spring Boot 官方推薦的模板引擎是 Thymeleaf ,點擊可以進入其官網(wǎng)了解詳情。

本章目標

  • 讓 Spring Boot 應用可以訪問到靜態(tài)資源文件
  • 創(chuàng)建用戶登錄表單,并對用戶名、密碼進行校驗
  • 校驗失敗,將返回登錄頁,并展示錯誤信息
  • 校驗成功,重定向到蘋果列表頁面

快速開始

添加依賴文件

創(chuàng)建一個 quick-thymeleaf 項目,創(chuàng)建方式參見上一篇文章 Springboot 入門。

創(chuàng)建好之后,修改我們的 POM 文件,添加 Thymeleaf 依賴,這里我們同時用到了 lombok 注解。

<!-- 模板 -->
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 引入 lombok ,用于注解 Model -->
<dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <version>1.12.6</version>
</dependency>

創(chuàng)建 Model 類

依賴添加完畢后,創(chuàng)建需要用到的類,這里需要用到兩個,一個 User 用于用戶登錄,一個 Apple 用于展示作用。

User.java

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
 @NotEmpty(message = "用戶名不能為空")
 @Length(min = 5, message = "用戶名長度不能小于5位")
 private String username;
 @NotEmpty(message = "密碼不能為空")
 @Length(min = 6, message = "密碼長度不能小于6位")
 private String password;
 /**
 * 校驗是否合法用戶
 *
 * @param user
 * @return
 */
 public static boolean isUserValid(User user) {
 return "admin".equals(user.getUsername()) && "123456".equals(user.getPassword());
 }
}

Apple.java

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Apple {
 private Float price;
 private String color;
 /**
 * 制造蘋果,這里生成 9 只
 *
 * @return
 */
 public static List<Apple> generateApples() {
 List<Float> prices = Arrays.asList(2.5f, 1.3f, 3.2f);
 List<String> colors = Arrays.asList("red", "green", "black");
 return prices.stream().flatMap(
 p -> colors.stream().map(c -> new Apple(p, c))).collect(toList());
 }
 
}

java8 新特性

Apple類為我們提供一些蘋果,在用戶登錄成功后展示。

其中 generateApples 方法用到了 Java8 的新特性 函數(shù)式編程,這樣代碼會少很多,看起來很舒服。

關于 Java8 函數(shù)式編程 ,有時間的話,我會專門開一個系列來和大家聊聊,敬請期待。

lombok 注解

簡單說明一下 lombok 注解

@Data:為所有屬性增加 getter setter 方法,并且自動重寫 toString hashCode 方法,并且以所有非空的字段創(chuàng)建了構造方法。

@NoArgsConstructor:生成無參構造方法。

AllArgsConstructor:包含所有參數(shù)的構造方法。

該類中其他的注解大家應該常用就不說明了。

創(chuàng)建控制器

Model 創(chuàng)建完畢,接著創(chuàng)建一個UserController 控制器。

該控制器包含三個方法

  • 在瀏覽器訪問主頁的時候,我們希望進入到登錄頁面,所以含有一個 toLoginForm 方法
  • 用戶在登錄頁面輸入用戶名、密碼之后,需要進行登錄操作,所以包含一個 login 方法
  • 登錄成功后,將跳轉到蘋果列表頁面,需要一個 apples方法

UserController.java

@Controller
@RequestMapping("/user") // 在類中定義,表示該類中的所有方法都將以這個路徑作為前綴
public class UserController {
 @GetMapping // 4.3 版本后的新特性
 public ModelAndView toLoginForm(@ModelAttribute("errorMsg") String errorMsg, @ModelAttribute("user") User user) {
 // 返回 templates/login.html 頁面, html 可以省略
 return new ModelAndView("/login");
 }
 @PostMapping("/login") // 4.3 版本后的新特性
 public ModelAndView login(HttpServletRequest request, @Valid User user, BindingResult result,
  RedirectAttributes redirect) {
 // 如果 user 的字段不符合要求,則返回到登錄頁面,并將 valid error 信息傳入登錄頁面
 if (result.hasErrors())
 return new ModelAndView("/login", "formErrors", result.getAllErrors());
 // 用戶名或密碼不正確
 if (!User.isUserValid(user)) {
 // 添加錯誤消息,該消息將一起帶到重定向后的頁面,
 // 瀏覽器刷新后,該數(shù)據(jù)將消失
 redirect.addFlashAttribute("errorMsg", "登錄失敗,用戶名或密碼錯誤");
 // 重定向到 login.html 頁面
 return new ModelAndView("redirect:/user");
 }
 // 將用戶登錄信息添加到 session 中
 request.getSession().setAttribute("userLogin", true);
 return new ModelAndView("redirect:/user/apples");
 }
 @GetMapping("/apples")
 public ModelAndView apples(HttpServletRequest request) {
 Boolean userLogin = (Boolean) request.getSession().getAttribute("userLogin");
 if (userLogin != null && userLogin) {
 List<Apple> apples = Apple.generateApples();
 // 登錄成功,進入 apple 頁面,并展示 apples
 ModelAndView modelAndView = new ModelAndView("/apple");
 modelAndView.addObject("apples", apples);
 return modelAndView;
 }
 return new ModelAndView("redirect:/user");
 }
}

類中已作了簡單的解釋,所以不再贅述,如果有疑問的,可以自己搜索相關資料,或者留言。

創(chuàng)建并訪問資源文件

在控制器中,我們的兩個方法都響應了不同的頁面,那么現(xiàn)在就需要創(chuàng)建對應的頁面。

在 Spring Boot 中,應用的資源文件默認處于 resources 資源文件夾下,其中靜態(tài)文件默認在 resources/static 目錄下,模板文件在 resources/templates 目錄下,我們創(chuàng)建對應的目錄結構

按照圖示創(chuàng)建好之后,再在對應的目錄中添加 css、js 文件。

然后創(chuàng)建 HTML 文件,這里由于代碼量太多,就不展示了,有興趣的可以點擊鏈接下載

apple.html

login.html

layout.html

接下來在 resources 根目錄下創(chuàng)建 Spring Boot 的配置文件 application.yml

推薦使用 yml 格式作為配置文件格式,看上去很直觀

application.yml

server:
 # 指定服務器端口號
 port: 8088
spring:
 thymeleaf:
 # 禁止瀏覽器緩存
 cache: false
 mode: HTML5

啟動項目

一切準備就緒,接下來我們啟動項目,和上一章不同的是,這次我們把啟動類單獨移出,以免和業(yè)務類混在一起。

在控制器所在包的上一層,我們創(chuàng)建

Application.java

@SpringBootApplication
public class Application extends WebMvcConfigurerAdapter {
 public static void main(String[] args) {
 SpringApplication.run(Application.class, args);
 }
}

效果預覽

運行 main 方法,在瀏覽器中訪問

http://localhost:8088/user

當用戶名少于 5 位,密碼少于 6 位時

當用戶名密碼不正確時

最后,登錄成功

至此,一個簡單的 web 交互做好了,當然這里面肯定存在些問題,我也是第一次接觸 Spring ,也是第一次以非 JSON 的格式傳遞數(shù)據(jù),在實現(xiàn)這個的過程中,讓我覺得還是提供接口簡單方便點,哈哈。

接下來要了解的

本章我們快速了解了下 Spring Boot 創(chuàng)建 web 應用。

但是在我們實現(xiàn)的過程中,每當改了類或者資源文件的時候,要想看到效果,只得重新啟動項目,這太麻煩了,下一節(jié)了解下 Spring Boot 熱部署。

并且在本章中,對于用戶的驗證,我們是寫死了的,下一章將整合 Mybatis。

代碼已同步到 GitHub, 項目地址 github:sboot-learn,大家也可以通過本地進行下載,點擊這里下載

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • 詳解使用spring cloud config來統(tǒng)一管理配置文件

    詳解使用spring cloud config來統(tǒng)一管理配置文件

    這篇文章主要介紹了詳解使用spring cloud config來統(tǒng)一管理配置文件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • java如何將實體類轉換成json并在控制臺輸出

    java如何將實體類轉換成json并在控制臺輸出

    這篇文章主要介紹了java如何將實體類轉換成json并在控制臺輸出問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • mybatis?foreach傳兩個參數(shù)批量刪除

    mybatis?foreach傳兩個參數(shù)批量刪除

    這篇文章主要介紹了mybatis?foreach?批量刪除傳兩個參數(shù),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Java中的Kafka攔截器詳解

    Java中的Kafka攔截器詳解

    這篇文章主要介紹了Java中的Kafka攔截器詳解,Producer?攔截器(interceptor)是在?Kafka?0.10?版本被引入的,主要用于實現(xiàn)?clients?端的定制化控制邏輯,需要的朋友可以參考下
    2023-11-11
  • Java讀取文件方法匯總

    Java讀取文件方法匯總

    這篇文章主要為大家詳細介紹了Java讀取文件方法,按字節(jié)讀取文件內容、按字符讀取文件內容、隨機讀取文件內容等,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • java 裝飾模式(Decorator Pattern)詳解及實例代碼

    java 裝飾模式(Decorator Pattern)詳解及實例代碼

    裝飾器模式(Decorator Pattern)允許向一個現(xiàn)有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬于結構型模式,它是作為現(xiàn)有的類的一個包裝
    2016-10-10
  • Java檢測死鎖案例

    Java檢測死鎖案例

    這篇文章主要介紹了Java檢測死鎖案例,本文列舉了導致死鎖的程序,通過使用jconsole工具進行檢測等,講述了避免死鎖的方法,需要的朋友可以參考下
    2021-07-07
  • Java設計模式之共享模式/享元模式(Flyweight模式)介紹

    Java設計模式之共享模式/享元模式(Flyweight模式)介紹

    這篇文章主要介紹了Java設計模式之共享模式/享元模式(Flyweight模式)介紹,本文講解了為什么使用共享模式/享元模式、如何使用共享模式/享元模式、Flyweight模式在XML等數(shù)據(jù)源中應用等內容,需要的朋友可以參考下
    2015-03-03
  • 詳解Java分布式Session共享解決方案

    詳解Java分布式Session共享解決方案

    這篇文章主要介紹了詳解Java分布式Session共享解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • SpringBoot文件分片上傳教程

    SpringBoot文件分片上傳教程

    這篇文章主要介紹了SpringBoot文件分片上傳教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論