环境
jdk1.8_73
apache-maven-3.5.3
springboot 2.0.0.RELEASE
eclipse Oxygen.3a Release (4.7.3a)
一、静态资源访问
静态资源,在这里指的是图片、样式、js脚本等等资源
springboot访问静态资源的几种方式
在src/main/resources/目录下创建static文件夹
在src/main/resources/目录下创建resources文件夹
在src/main/resources/目录下创建public文件夹
在src/main/resources/目录下创建META-INF/resources文件夹
我习惯是在src/main/resources/目录下创建static文件夹,然后再static文件下建三个文件image、js、css,如下图所示
如下实例
只需要在浏览器输入http://localhost:8080/a.GIF
就可以访问静态资源啦
顺便说一句,上图的application.properties是SpringBoot默认的配置文件,当然也可以是application.yml,后者比较节省空间,log4j.properties是日志插件log4j的配置文件,这两者跟上面的静态资源访问没有关系,只不过截图截到了。
二、全局捕获异常
SpringBoot提供了一个好好用的功能,就是对所有web访问异常的捕获,只要某一个请求出错了,将会被捕获,返回友好提示,代码很简单如下
package cn.forever;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 全局捕获异常
* @author forever
*
*/
@ControllerAdvice
public class GlobalExceptionHandler {
//捕获运行期异常
@ExceptionHandler(RuntimeException.class)
@ResponseBody //返回json串
public Map<String,Object> exception(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("errorcode", "0001");
map.put("errorinfo", "系统异常");
return map;
}
}
主要是用两个注解,下面是两个注解的说明
@ControllerAdvice注解使用@Component注解,可以被扫包扫到,内部使用@ExceptionHandler、@InitBinder、@ModelAttribute注解的方法应用到所有的 @RequestMapping注解的方法。
注解 | 作用 |
---|---|
@ControllerAdvice | 异常集中处理,更好的使业务逻辑与异常处理剥离开,该注解将作用在所有注解了@RequestMapping的控制器的方法上。约定了几种可行的返回值,如果是直接返回 model 类的话,需要使用 @ResponseBody 进行 json 转换,若返回的是String,表示跳转到某个页面 |
@ExceptionHandler | 表明这个方法拦截的异常类型 ,统一处理某一类异常,从而能够减少代码重复率和复杂度 |
三、Web页面渲染
之前的例子都是用@ResponseController注解返回的内容都是json,在微服务接口开发过程中一般都是用该注解,因为该注解相当于@Controller +@ResponseBody 的集合体,但是有时候我们是需要返回到页面的,此时就只会用@Controller注解即可。
SpringBoot的模板引擎
在动态HTML实现上Spring Boot依然可以完美胜任,并且提供了多种模板引擎的默认配置支持,所以在推荐的模板引擎下,我们可以很快的上手开发动态网站。
- Thymeleaf
- FreeMarker
- Velocity
- Groovy
- Mustache
- JSP
Spring Boot建议使用这些模板引擎,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性,也支持jsp模板引擎,当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates。当然也可以修改这个路径,具体如何修改,可在后续各模板引擎的配置属性中查询并修改。这里我推荐FreeMarker,比较方便和轻量化。具体的使用方法见下一篇博文。
结语
这篇博文主要介绍了SpringBoot在Web开发的一些基本使用,静态资源的访问、全局异常的捕获、以及简单的介绍了渲染HTML的一些模板引擎,本人习惯上使用Freemarker,其实都差不多的,JSP的话就需要多配置点内容。