a.創(chuàng)建數(shù)據(jù)庫 springbootdb:
CREATE DATABASE springbootdb;
b.創(chuàng)建表 city :(因為我喜歡徒步)
DROP TABLE IF EXISTS `city`;
CREATE TABLE `city` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT'城市編號',
`province_id` int(10) unsigned NOT NULL COMMENT'省份編號',
`city_name` varchar(25) DEFAULT NULL COMMENT'城市名稱',
`description` varchar(25) DEFAULT NULL COMMENT'描述',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
c.插入數(shù)據(jù)
INSERT city VALUES (1 ,1,'溫嶺市','BYSocket 的家在溫嶺。');
2. 項目結(jié)構(gòu)介紹
org.spring.springboot.controller – Controller 層org.spring.springboot.dao – 數(shù)據(jù)操作層 DAOorg.spring.springboot.domain – 實體類org.spring.springboot.service – 業(yè)務(wù)邏輯層Application – 應(yīng)用啟動類resources/application.properties – 應(yīng)用配置文件,應(yīng)用啟動會自動讀取配置resources/web – *.ftl文件,是 FreeMarker 文件配置路徑。在 application.properties 配置resources/mapper – DAO Maper XML 文件
1 | localhost:8080 /api/city/1 |
1 | localhost:8080 /api/city |
pom.xml 代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>springboot</groupId>
<artifactId>springboot-freemarker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-freemarker :: Spring Boot 集成 FreeMarker 案例</name>
<!-- Spring Boot 啟動父依賴 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<properties>
<mybatis-spring-boot>1.2.0</mybatis-spring-boot>
<mysql-connector>5.1.39</mysql-connector>
</properties>
<dependencies>
<!-- Spring Boot Freemarker 依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!-- Spring Boot Web 依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Test 依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring Boot Mybatis 依賴 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot}</version>
</dependency>
<!-- MySQL 連接驅(qū)動依賴 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector}</version>
</dependency>
<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
然后在 application.properties 中加入 FreeMarker 相關(guān)的配置:
## Freemarker 配置
## 文件配置路徑
spring.freemarker.template-loader-path=classpath:/web/
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
spring.freemarker.request-context-attribute=request
spring.freemarker.suffix=.ftl
這是我這塊的配置,如果需要更多的 FreeMarker 配置,可以查看下面的詳解:
spring.freemarker.allow-request-override=false # Set whether HttpServletRequest attributes are allowed to override (hide) controller generated model attributes of the same name.
spring.freemarker.allow-session-override=false # Set whether HttpSession attributes are allowed to override (hide) controller generated model attributes of the same name.
spring.freemarker.cache=false # Enable template caching.
spring.freemarker.charset=UTF-8# Template encoding.
spring.freemarker.check-template-location=true # Check that the templates location exists.
spring.freemarker.content-type=text/html # Content-Type value.
spring.freemarker.enabled=true # Enable MVC view resolution for this technology.
spring.freemarker.expose-request-attributes=false # Set whether all request attributes should be added to the model prior to merging with the template.
spring.freemarker.expose-session-attributes=false # Set whether all HttpSession attributes should be added to the model prior to merging with the template.
spring.freemarker.expose-spring-macro-helpers=true # Set whether to expose a RequestContext for use by Spring's macro library, under the name "springMacroRequestContext".
spring.freemarker.prefer-file-system-access=true # Prefer file system access for template loading. File system access enables hot detection of template changes.
spring.freemarker.prefix=# Prefix that gets prepended to view names when building a URL.
spring.freemarker.request-context-attribute=# Name of the RequestContext attribute for all views.
spring.freemarker.settings.*=# Well-known FreeMarker keys which will be passed to FreeMarker's Configuration.
spring.freemarker.suffix=# Suffix that gets appended to view names when building a URL.
spring.freemarker.template-loader-path=classpath:/templates/ # Comma-separated list of template paths.
spring.freemarker.view-names=# White list of view names that can be resolved.
3.展示層 Controller 詳解
/**
* 城市 Controller 實現(xiàn) Restful HTTP 服務(wù)
* <p>
* Created by bysocket on 07/02/2017.
*/
@Controller
public class CityController {
@Autowired
private CityService cityService;
@RequestMapping(value ="/api/city/{id}", method = RequestMethod.GET)
public String findOneCity(Model model,@PathVariable("id") Long id) {
model.addAttribute("city", cityService.findCityById(id));
return "city";
}
@RequestMapping(value ="/api/city", method = RequestMethod.GET)
public String findAllCity(Model model) {
List<City> cityList = cityService.findAllCity();
model.addAttribute("cityList",cityList);
return "cityList";
}
}
更多建議: