关键词:
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
④ 新建一个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系列文章:
本文出自 “IT技术解决方案” 博客,请务必保留此出处http://wyait.blog.51cto.com/12674066/1966573
springboot1.5.4从入门到实践
SpringBoot四个重要核心:自动配置:针对很多Sping应用程序常见的应用功能,SpringBoot能自动提供相关配置;起步依赖:告诉SpringBoot需要什么功能,它就能引入需要的库;命令行界面:这是SpringBoot的可选特性,借此你只需写代码就... 查看详情
springboot1.5.4集成swagger2构建restfulapi(十八)
上一篇博客地址:springboot1.5.4整合rabbitMQ(十七)1 SpringBoot集成Swagger2构建RESTfulAPI文档1.1 Swagger2简介Swagger2官网:http://swagger.io/由于SpringBoot能够快速开发、便捷部署等特性,相信有很大一部分SpringBoo 查看详情
springboot1.5.4整合log4j2
上一篇:springboot1.5.4定时任务和异步调用(十) SpringBoot整合log4j2springboot整合log4j2项目spring-boot-jsp源码:https://git.oschina.net/wyait/springboot1.5.4.git1.1 log4j2概要对于我们开发人员来说,日志记录往往不被重视。在生产环境中,... 查看详情
springboot1.5.4集成devtools
上一篇:springboot1.5.4整合JSP(四)1.1 SpringBoot集成devToolsspringboot集成devTools源码:https://git.oschina.net/wyait/springboot1.5.4.git实现步骤:650)this.width=650;"src="https://s2.51cto.com/wyf 查看详情
springboot1.5.4集成jdbctemplate
上一篇:springboot1.5.4集成devTools(五)SpringBoot使用JdbcTemplate访问数据库springboot整合jdbcTemplate项目源码:https://git.oschina.net/wyait/springboot1.5.4.gitSpring的JdbcTemplate是自动配置的,你可以直接使用@Autowired来注入到你自己的bean中来使用... 查看详情
springboot1.5.4整合druid(十三)
上一篇:springboot1.5.4整合mybatis(十二) 1 集成druid连接池springboot集成druid项目mybatis-spring-boot源码地址:https://git.oschina.net/wyait/springboot1.5.4.git 1.1 druid简介D 查看详情
springboot1.5.4统一异常处理
上一篇:springboot1.5.4配置文件详解(八) 1 SpringBoot统一异常处理SpringBoot中实现了默认的error映射,但是在实际应用中,上面你的错误页面对用户来说并不够友好,我们通常需要去实现我们自己的异... 查看详情
springboot1.5.4整合rabbitmq(十七)
上一篇:springboot1.5.4整合redis、拦截器、过滤器、监听器、静态资源配置(十六) 关于rabbitMQ原理,请参阅博客:rabbitMQ消息队列原理 1.2.2 创建spring-boot-MQ工程spring-boot-rabbitMQ项目源码,码云地址:htt... 查看详情
springboot1.5.4定时任务和异步调用
上一篇:springboot1.5.4统一异常处理(九) 1 SpringBoot定时任务和异步调用我们在编写SpringBoot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查... 查看详情
springboot1.5.4集成spring-data-jpa
上一篇:springboot1.5.4集成JdbcTemplate(六)1 SpringBoot使用Spring-Data-JPA访问数据库springboot整合jdbcTemplate项目源码:https://git.oschina.net/wyait/springboot1.5.4.git1.1 Spingdat 查看详情
springboot1.5.4aop实例
原文:https://github.com/x113773/testall/issues/121.还是首先添加依赖(使用当前springboot的默认版本)```<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</ 查看详情
springboot1.5.4连接池和事务
原文:https://github.com/x113773/testall/issues/10默认连接池---springBoot中默认支持的连接池有Tomcat、HikariCP、DBCP、DBCP2,以下摘自[官方文档](http://docs.spring.io/spring-boot/docs/1.5.4.RELEASE/reference/htmlsingle/#boot-feature 查看详情
springboot1.5.4整合redis拦截器过滤器监听器静态资源配置(十六)
上一篇:springboot1.5.4整合webService(十五) 1 SpringBoot整合redis和缓存SpringBoot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redi... 查看详情
springboot1.5.4配置druid1.1.0(使用druid-spring-boot-starter)
原文:https://github.com/x113773/testall/issues/11###Druid最近发布了1.1.0版本,并且提供了[druid-spring-boot-starter](https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter),方便与SpringBoot集成1.首先添加依赖```& 查看详情
web开发敏捷之道pdf
下载地址:网盘下载《Web开发敏捷之道:应用Rails进行敏捷Web开发(第2版)》内容简介:全书主要分为两大部分。在“构建应用程序”部分中,读者将看到一个完整的“在线购书网站”示例。在随后的“Rails框架”部分中,作者深入... 查看详情
python--web开发之javascript
JavaScriptJavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理。一、基本语法1、JavaScript代码存在形式<!--方式一--><scriptt... 查看详情
typescript之web开发(代码片段)
...1.1概述下棋游戏(XXOO)是通过Web(网页)开发实现的,因此,我们要学习Web开发的相关知识。Web开发涵盖以下内容:HTML、CSS、JavaScript(HTML、CSS不是本课程的重点,仅简单讲解)。三者之间... 查看详情
python之wjango实现web开发详解---01(代码片段)
Python之Wjango实现Web开发详解—01本文将会详解:1、Web框架的搭建、2、框架以及数据库的初始化、3、应用的建立文章目录Python之Wjango实现Web开发详解---01一、介绍二、环境的配置以及初始化1、虚拟环境2、创建项目以及应用3、... 查看详情