一. 靜態資源映射
-
簡述
通過在配置裏重寫addResourceHandlers方法來實現靜態文件(js、css、圖片)的直接訪問。 -
示例
package com.muzi.springboot01.mvc3; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; @EnableWebMvc //開啓Spring MVC支持 @Configuration @ComponentScan("com.muzi.springboot01.mvc3") public class MyMvcConfig extends WebMvcConfigurerAdapter { @Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/classes/views/"); viewResolver.setSuffix(".jsp"); viewResolver.setViewClass(JstlView.class); return viewResolver; } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { /** * addResourceHandler:文件放置的目錄 * addResourceLocations:對外暴露的訪問路徑 */ registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets"); } }
二. 攔截器配置
-
簡述
攔截器即對每一個請求處理請後進行相關業務處理。 -
示例
攔截器示例:計算每一次請求的處理時間import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DemoInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { long startTime = System.currentTimeMillis(); request.setAttribute("startTime", startTime); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { long startTime = (long) request.getAttribute("startTime"); request.removeAttribute("startTime"); long endTime = System.currentTimeMillis(); System.out.println("請求處理時間爲:"+new Long(endTime - startTime) + "ms"); request.setAttribute("handlingTime", endTime - startTime); } }
配置
@Configuration @EnableWebMvc //開啓Spring MVC支持 @ComponentScan("com.muzi.mvc3") public class MyMvcConfig extends WebMvcConfigurerAdapter { @Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/classes/views/"); viewResolver.setSuffix(".jsp"); viewResolver.setViewClass(JstlView.class); return viewResolver; } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { /** * addResourceHandler:文件放置的目錄 * addResourceLocations:對外暴露的訪問路徑 */ registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets"); } @Bean public DemoInterceptor demoInterceptor() { return new DemoInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(demoInterceptor()); } }