spring boot 1.5.4 之web开发(三)

上一篇:springboot 1.5.4 入门和原理(二)

spring Boot 之web开发

更多更详细的配置参考文件:application.properties《SpringBoot之application配置详解》(新版本新增属性缺失)  或参考官网http://projects.spring.io/spring-boot/

注意:Spring Boot工程默认沿用前文中的project,如有变动,各章节会明确说明

注释springboot工程中的application.properties中的#server.servlet-path=*.html

1      Spring Boot工程结构

Spring Boot工程结构最佳实践:

spring boot1.5.4 入门和原理(二)中,关于@ComponentScan注解功能描述:

  • @ComponentScan:默认扫描@SpringBootApplication所在类的同级目录和它的子目录(当前包以及它的子包)。

最佳项目结构:

com

  +- wyait

    +- boot

      +-Application.java

      |

      +- domain

      |  +- User.java

      |  +- UserDao.java

      |

      +- service

      |  +- UserService.java

      |

      +- web

      |  +- UserController.java

      |

  • root package结构:com.wyait.boot
  • 应用主类Application.java置于rootpackage下,通常我们会在应用主类中做一些框架配置扫描等配置,我们放在root package下可以帮助程序减少手工配置来加载到我们希望被Spring加载的内容
  • 实体(Entity)与数据访问层(Dao)置于com.wyait.boot.domain包下
  • 逻辑层(Service)置于com.wyait.boot.service包下
  • Web层(web)置于com.wyait.boot.web包下

2      web前端配置

2.1  配置静态资源访问

在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。

Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:

  • /static
  • /public
  • /resources
  • /META-INF/resources

举例:我们可以在src/main/resources/目录下创建static,在该位置放置一个图片文件0.jpg。启动程序后,尝试访问http://localhost:8081/0.jpg

配置成功。

这使用了Spring MVC的ResourceHttpRequestHandler,所以你可以通过添加自己的WebMvcConfigurerAdapter并覆写addResourceHandlers方法来改变这个行为(加载静态文件)。

自定义静态资源配置参考章节:《Spring Boot集成Mybatis》

2.2  Spring Boot之HTML模版引擎

渲染html页面,在动态Html实现上Spring Boot提供了多种模板引擎的默认配置支持;所以在推荐的模板引擎下,我们可以很快的上手开发动态网站。

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库,基于ApacheLicense 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。

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

示例模板:

<table>

<thead>

<tr>

<thth:text="#{msgs.headers.name}">Name</td>

<thth:text="#{msgs.headers.price}">Price</td>

</tr>

</thead>

<tbody>

<trth:each="prod : ${allProducts}">

<tdth:text="${prod.name}">Oranges</td>

<tdth:text="${#numbers.formatDecimal(prod.price,1,2)}">0.99</td>

</tr>

</tbody>

</table>

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

①   在pom.xml添加thymeleaf依赖

<dependency>

<!--Spring Boot 模板引擎thymeleaf依赖 -->

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-thymeleaf</artifactId>

</dependency>

②   新建路径为:src/main/resources/templates

③   关闭thymeleaf缓存(Thymeleaf默认配置详细信息参考:application.properties)

spring.thymeleaf.cache=false

注意端口改回:8080

④   新建一个demo.html

<!DOCTYPE html>

<html>

<head>

<!-- 标签必须闭合,否则报错 -->

<metacharset="UTF-8"/>

<title>This is thymeleafhtml</title>

</head>

<body>

<h1th:text="${host}">Hello World</h1>

</body>

</html>

⑤   Controller中新增toDemo方法

/**

*

* @描述:跳转到thymeleaf页面

* @创建人:wyait

* @创建时间:2017年6月27日上午9:30:44

* @param map

* @return

*/

@RequestMapping("/")

publicString toDemo(ModelMap map) {

map.addAttribute("host","http://wyait.blog.51cto.com");

return"demo";

}

ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数: 
addAttribute(String key,Object value); 
在页面上可以通过el变量方式$key或者bboss的一系列数据展示标签获取并展示modelmap中的数据。 
modelmap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的返回值来设置跳转url地址别名或者物理跳转地址

⑥   启动,访问Controller:http://127.0.0.1:8080

访问html:http://127.0.0.1:8080/demo.html

如上页面,直接打开html页面展现HelloWorld;启动程序后,访问Controller:http://127.0.0.1:8080,则是展示Controller中host的值:http://wyait.blog.51cto.com,做到了不破坏HTML自身内容的数据逻辑分离。

更多Thymeleaf的页面语法,还请访问Thymeleaf的官方文档查询使用。

附:springboot项目,码云地址:https://git.oschina.net/wyait/springboot1.5.4.git

后文,将使用spring-boot-jsp工程。

spring boot系列文章:

spring boot1.5.4 概述(一)

spring boot1.5.4 入门和原理(二)

spring boot 1.5.4 之web开发(三)

时间: 2024-10-13 02:12:12

spring boot 1.5.4 之web开发(三)的相关文章

《深入实践Spring Boot》第一部分 基础应用开发

第一部分 基础应用开发 第1章 Spring Boot入门 第2章 在Spring Boot中使用数据库 第3章 Spring Boot界面设计 第4章 提高数据库访问性能 第5章 Spring Boot安全设计 这一部分从搭建开发环境,简单入门,到使用数据库.界面设计.安全管理等一系列内容,介绍了使用Spring Boot框架进行基础应用开发的方法. 第1章 介绍了开发环境的搭建和开发工具的选择和安装,并以一个非常简单的实例,演示了如何使用Spring Boot框架创建工程和发布应用. 第2章

Spring Boot 入门之持久层篇(三)

原文地址:Spring Boot 入门之持久层篇(三) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之 Web 篇(二)>介绍了 Spring Boot 的 Web 开发相关的内容,项目的开发离不开数据,因此本篇开始介绍持久层相关的知识. 二.整合 JdbcTemplate 2.1 添加依赖 <dependency> <groupId>org.springframework.boot</groupId&g

用Spring Boot零配置快速创建web项目(1)

一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. 本文是一个springboot入门级的helloworld程序. 二.maven安装与配置 下载地址:http://maven.apache

Spring Boot 整合JDBC 实现后端项目开发

一.前言 前后端分离开发是将项目开发工作前后端交互工作拆分,使前端开发人员能够专注于页面开发或APP 开发,后端开发人员专注与接口开发.业务逻辑开发. 此处开发后端项目,给前端或者APP 端提供接口.不涉及复杂的业务逻辑,通过简单的增删改查来演示后端开发项目. 环境介绍: 开发工具:IDEA JDK: 1.7 及以上 Spring Boot: 2.0 及以上 Maven: 3.0 及以上 二.新建Spring Boot 项目 通过功能菜单File - New - Project 新建Spring

Spring boot构建基于rest的Web服务

一.介绍:使用Spring Boot我们可以很容易的创建一个可独立运行的Rest web服务,其中内嵌tomact,我们只需“run”就可以查看效果了. Spring Boot利用Gradle或Maven构建引入第三方库的方式,所以我么不需要去担心我们改引入哪些库,而且使用Spring Boot省去了很多繁琐的配置. 接下来,我们将用Spring Boot实现和c# mvc一样的Rest Web服务. 二.效果:经典的Hello World. 这将是我么最终的效果,毋须配置部署tomact,我们

docker-compose + spring boot + mysql + redis + nginx 发布web应用: part 1

-----**  原创 **------ docker的使用现在越来越多,但多个容器的话,还要一个个的安装,比较麻烦.相比于k8s的“厚重”,docker-compose相对要简单得多.这里是一篇使用docker-compose,对spring boot应用进行一个集群(2个docker)发布的过程. 1. 前言    架构:spring boot使用nginx作为反向代理,redis作为缓存,mysql作为数据库,全部docker化.  环境:开发使用win 10笔记本, eclipse id

spring boot 2.0 源码分析(三)

通过上一章的源码分析,我们知道了spring boot里面的listeners到底是什么(META-INF/spring.factories定义的资源的实例),以及它是创建和启动的,今天我们继续深入分析一下SpringApplication实例变量中的run函数中的其他内容.还是先把run函数的代码贴出来: /** * Run the Spring application, creating and refreshing a new * {@link ApplicationContext}. *

Spring Boot 2.X 微信公众平台开发之接入

声明 : 本系列纯属自己为了学习而编写,均已测试号为例,如果不正之处,恳请指正,谢谢! 接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 由于只是接入,只需要一个Controller的方法路径 和 定义一个token,可以写在配置文件里 2.验证服务器地址的有效性 /** * FileName: CoreController * Author: Phil * Date: 8/1/2018 15:52 * Description: 接入微信并处理消息事件 * History:

springcloud Spring Boot mybatis分布式微服务云架构(三):服务提供与调用

上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册中心,搭建一个简单的服务端注册服务,客户端去调用服务使用的案例. 案例中有三个角色:服务注册中心.服务提供者.服务消费者,其中服务注册中心就是我们上一篇的eureka单机版启动既可,流程是首先启动注册中心,服务提供者生产服务并注册到服务中心中,消费者从服务中心中获取服务并执行. 服务提供 我们假设服务提供者有一个hello方法,可以根据传入的参数,提供输出"hello xxx,this is firs