本篇文章主要是围绕如何在Spring Boot中进行Web开发呢?

 

 

一、Web中的静态资源配置

通常在我们开发Web应用的时候都需要引入大量的JS、CSS、图片 等等的静态资源。

在Spring Boot中默认提供的静态资源目录位置需要放置在classpath下,目录名称需要符合如下:

    ·/static

    · /public

    · /resources

    · /META-INF/resources

例如:在src/main/resources/目录下创建一个static目录,在该目录下放置一个图片。启动程序后,尝试访问http://localhost:8080/temp.jpg,如果图片可以正常显示,则就配置成功。

二、关于Web页面的显示与渲染

在Spring Boot中,使用@RestController来处理请求,返回的内容为JSON对象。如果需要返回渲染或显示页面,可以使用@Controller来处理请求。

在Spring Boot中,官方为我们提供并推荐了多款模板引擎的默认配置支持,提供默认配置的模板引擎主要有如下几种:

    · Thymeleaf

    · FreeMarker

    · Velocity

    · Groovy

    · Mustache

在这里要特别特别说明:Spring Boot建议使用这些模板引擎,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性,所以,在这里我也就不再说怎么去支持JSP的配置了。

当我们要使用上面模板引擎中的任何一个时,它们默认的模板配置路径是 src/main/resources/templates,这个路径也是可以去配置修改的,至于怎么修改,继续往下面看哟 ~

在这里就以Thymeleaf为例:

简单介绍下Thymeleaf: Thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。

Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。

下面是一小段关于Thymeleaf模板引擎的示例:

<table>
  <thead>
    <tr>
      <th th:text="#{msgs.headers.name}">Name</td>
      <th th:text="#{msgs.headers.price}">Price</td>
    </tr>
  </thead>
  <tbody>
    <tr th:each="prod : ${allProducts}">
      <td th:text="${prod.name}">Oranges</td>
      <td th:text="${#numbers.formatDecimal(prod.price,1,2)}">0.99</td>
    </tr>
  </tbody>
</table>

从上面的实例中可以看到Thymeleaf主要以属性的方式加入到html标签中,浏览器在解析html时,当检查到没有的属性时候会忽略,所以Thymeleaf的模板可以通过浏览器直接打开展现,这样比较有利于前后端的分离。

如果我们要在Spring Boot中使用 Thymeleaf 模板,需要引入Spring boot Thymeleaf 的依赖,然后在默认的模板路径下 src/main/resources/templates 下编写模板文件就可以了。

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

以上配置基本完成。下面来一个简单的例子演示:

HelloController.java

package com.youth.hoel.hello;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@Controller


public class HelloController {


    @RequestMapping("/hello")
    public ModelAndView index(ModelMap map){
//        return "Hello Spring Boot!";
        map.addAttribute("host", "http://www.baikeyang.com/");
        return new ModelAndView("index");
    }

}

index.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8" />
    <title></title>
</head>
<body>
    <h1 th:text="${host}">Hello World</h1>
</body>
</html>

上面页面直接打开html显示的是Hello World,但是项目启动后访问http://localhost:8080/hello,这显示的 http://www.baikeyang.com/,这就做到了不破坏HTML自身内容的数据逻辑分离。

关于Thymeleaf的页面语法,大家可以查看Thymeleaf的官方文档学习使用。

下面是Thymeleaf的默认参数配置:

如果有需要修改默认配置,只需要将下面的修改属性复制到application.properties文件中,并修改成你说需要的值即可,比如修改模板文件的扩展名、模板路径 等

#
#thymeleaf 配置
#
# 开发时关闭缓存,不然没法看到实时页面
spring.thymeleaf.cache=false
# 检查模板位置是否存在
spring.thymeleaf.check-template-location=true
# Content-Type值
spring.thymeleaf.content-type=text/html
# 启用MVC Thymeleaf视图分辨率
spring.thymeleaf.enabled=true
# 模板编码
spring.thymeleaf.encoding=UTF-8
# 应该从解决方案中排除的视图名称的逗号分隔列表
spring.thymeleaf.excluded-view-names=
# 要应用于模板的模板模式。 另请参见StandardTemplateModeHandlers
spring.thymeleaf.mode=HTML5
# 在构建URL时,先前要查看名称的前缀
spring.thymeleaf.prefix=classpath:/templates/
# 构建URL时附加查看名称的后缀
spring.thymeleaf.suffix=.html
# 链中模板解析器的顺序
spring.thymeleaf.template-resolver-order=
# 可以解析的视图名称的逗号分隔列表
spring.thymeleaf.view-names=
关于JSP的配置:
Spring Boot并不建议使用,但如果一定要使用,可以参考此工程作为脚手架:JSP支持(点我传送>>>)

 

标签: Spring Boot, Spring Boot 快速入门, Spring boot Web应用开发

添加新评论