1. 程式人生 > 其它 >在springboot中,如何擴充套件springmvc的功能

在springboot中,如何擴充套件springmvc的功能

技術標籤:spring boot學習筆記spring boot

SpringBoot擴充套件springMvc功能

1. 使用spring boot擴充套件springMvc原因
  • 未使用spring boot時,我們在springmvc中配置檢視解析器和攔截器的時候都是需要在xml檔案中編寫一些配置檔案以達到擴充套件的功能。如下所示新增檢視對映:
<mvc:view-controller path="/hello" view-name="success"/>
 <mvc:interceptors>
     <mvc:interceptor
>
<mvc:mapping path="/hello"/> <bean></bean> </mvc:interceptor> </mvc:interceptors>
  • spring boot概念中,spring boot幾乎完全不需要xml檔案進行配置。因此,是spring boot自動載入了許多以前SpringMVC需要手動配置的東西,例如檢視解析器,訊息轉換器等
  • 但是,spring boot中的自動配置並不足以滿足我們的開發需求,所以我們可以在預設的配置上進行擴充套件。
2. spring boot進行springMvc擴充套件
  • 編寫MVC擴充套件類,實現WebMvcConfigurer類,用來說明這個類是用來配置MVC的擴充套件容器。
@Configuration
public class WebMVCConfig implements WebMvcConfigurer {

    /**
     * 自定義檢視
     *
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.
addViewController("/").setViewName("index"); registry.addViewController("/index").setViewName("index"); registry.addViewController("/index.html").setViewName("index"); // 定義跳轉到主頁面的檢視 registry.addViewController("/main.html").setViewName("dashboard"); } /** * 註冊攔截器 * * @param registry */ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new WebInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/login", "/css" + "/**", "/js/**", "/img/**", "/", "/index", "/index.html"); } }
  • 攔截器
public class WebInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object loginUser = request.getSession().getAttribute("loginUser");
        if (loginUser == null) {
            request.setAttribute("msg", "請先登入!");
            request.getRequestDispatcher("/").forward(request, response);
            return false;
        } else {
            return true;
        }
    }
}
  • 執行專案即可。

總結:

3. 全面接管springMVC的配置