@zhuanxu
2017-12-11T03:44:57.000000Z
字数 2339
阅读 2062
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的异常
