SpringBoot集成Freemarker模板技术和SpringBoot全局异常处理

SpringBoot集成Freemarker模板技术和SpringBoot全局异常处理


前言

案例github地址(如果有用点个star呗) https://github.com/chenxiban/BlogCaseSet.git


SpringBoot 集成Mybatis框架

FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮
件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入
他们所开发产品的组件。

模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言。该意味着要准备数据在真实
编程语言中来显示,比如数据库查询和业务运算,之后模板显示已经准备好的数据。在模板中,你可以专注
于如何展现数据,而在模板之外可以专注于要展示什么数据。

Freemarker的作用主要是将动态页面转换成微静态html页面,提高搜索引擎的收录。具体框架的介绍和用法
可参考http://freemarker.foofun.cn

SpringBoot框架提供了对Freemarker框架的集成操作,具体操作如下:

        <!-- Spring Boot Freemarker 模板 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
  1. 在application.properties配置freemarker配置或者使用默认模板位置/src/main/resources/templates/
    及默认后缀 .ftl 。
## Freemarker 配置 
## 自定义模板文件配置路径默认模板路径在resources/templates下,默认后缀.ftl
##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
  1. 创建controller
package org.spring.springboot.controller;

import org.spring.springboot.domain.City;
import org.spring.springboot.service.CityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 城市 Controller 实现 Restful HTTP 服务
 * <p>
 * Created by bysocket on 07/02/2017.
 */
@Controller
public class CityController {

	@Autowired
	private CityService cityService;

	/**
	 * http://localhost:8080/excep
	 * 
	 * @return
	 */
	@RequestMapping("/excep")
	public String excep() {
		int k = 4 / 0;
		return "city";
	}

	/**
	 * http://localhost:8080/index
	 * 
	 * @return
	 */
	@RequestMapping("/index")
	public @ResponseBody String index() {
		return "SpringBoot SSM框架";
	}

	/**
	 * http://localhost:8080/api/city/1
	 * 
	 * @param model
	 * @param id
	 * @return
	 */
	@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";
	}

	/**
	 * http://localhost:8080/api/city
	 * 
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/api/city", method = RequestMethod.GET)
	public String findAllCity(Model model) {
		List<City> cityList = cityService.findAllCity();
		model.addAttribute("cityList", cityList);
		return "cityList";
	}
}
  1. 在目录下resources的templates创建模板文件

SpringBoot全局异常处理

任何项目发生异常是不可避免的,使用全局异常捕获发生的异常是十分必要的。SpringBoot框架对全局异常
捕获提供了很好的支持,并且操作非常简单。我们只需要创建一个类和一个方法,并添加两个注解:
@ControllerAdvice@ExceptionHandler即可,如:

package org.spring.springboot.controller;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 
 * @Description: 全局异常处理类
 * @ClassName: GlobalExceptionHandler.java
 * @author ChenYongJia
 * @Date 2017-10-5 下午6:27:21
 * @Email 867647213@qq.com
 */
@ControllerAdvice
@ResponseBody
public class GlobalExceptionHandler {
	
	@ExceptionHandler(RuntimeException.class) // 捕获所有运行时异常
	public String exceptionHandler() {
		return "error";
	}
	
}

其中,@ControllerAdvice:该注解是spring2.3以后新增的一个注解,主要是用来Controller的一些公共的需
求的低侵入性增强提供辅助,作用于@RequestMapping标注的方法上。@ExceptionHandler:该注解是配
合@ExceptionHandler一起使用的注解,自定义错误处理器,可自己组装json字符串,并返回到页面。

注意:如果想实现,不同的异常有不同的操作的话,只需要将 @ExceptionHandler的value的值不一样就可
以了,可以同时实现多个不同的异常处理,但不能出现包含状态。
由此可见,全局异常捕获的原理是: 使用AOP技术,采用异常通知的方式处理


最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈永佳

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值