打卡6:Spring MVC基礎之基本配置

一. 靜態資源映射

  1. 簡述
    通過在配置裏重寫addResourceHandlers方法來實現靜態文件(js、css、圖片)的直接訪問。

  2. 示例

    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");
        }
    }
    

二. 攔截器配置

  1. 簡述
    攔截器即對每一個請求處理請後進行相關業務處理。

  2. 示例
    攔截器示例:計算每一次請求的處理時間

    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());
        }
    }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章