@zhuanxu
2017-12-11T11:44:57.000000Z
字数 2339
阅读 1807
spring-boot
web
FreeMarker官网,FreeMarker是一模板引擎。
FreeMarker 如何集成到spring-boot中?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
classpath:/templates/
下,默认的文件扩展名为tfl
FreeMarkerProperties
类中设置。
@GetMapping("/logout")
public String logout(Model model){
model.addAttribute("username","zhuanxu");
model.addAttribute("status","logout");
return "logout";
}
<h1>logout ftl</h1>
<b>username: ${username}</b>
<br/>
<b>status: ${status}</b>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
ServerProperties
类里存放着server的配置。
直接在src/main/webapp
目录下的资源可以访问,我们可以去org.springframework.boot.autoconfigure.web
下看到关于资源的配置文件ResourceProperties
,里面定义了资源的位置:
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
"classpath:/META-INF/resources/", "classpath:/resources/",
"classpath:/static/", "classpath:/public/"
};
spring.resources.staticLocations
配置静态资源目录。方法一:(Servlet 3 可以使用这种方式)
1. 编写Servlet,加上注解@WebServlet
2. 需要启用@ServletComponentScan
方法二:(Servlet2.5以下版本可以使用)
1. 编写Servlet
2. 配置bean到容器中
Servlet:ServletRegistrationBean
Filter:FilterRegistrationBean
Listener:ServletListenerRegistrationBean
HandlerInterceptor
接口WebMvcConfigurerAdapter
,并重写方法addInterceptors
,在其中调用registry.addInterceptor
注册HandlerInterceptor
中的方法有:
preHandle:controller执行之前执行
postHandle:Controller执行之后,且页面渲染之前调用
afterCompletion:页面渲染之后调用,一般用于资源清理操作
默认的异常处理逻辑是在ErrorMvcAutoConfiguration
中配置的,我们可以通过@SpringBootApplication(exclude = ErrorMvcAutoConfiguration.class)
方式去除。
使用ErrorPageRegistrar
方法,写一个类,实现ErrorPageRegistrar
接口,然后在里面调用registry.addErrorPages
添加ErrorPage。
全局异常处理的方法
1. 写一个类,加上@ControllerAdvice
注解
2. 写异常处理方法,加上@ExceptionHandler
注解
3. 在每个controller中通过@ExceptionHandler
注解的方法,只处理本Controller的异常