1. 程式人生 > >搭建SpringMVC(非web.xml檔案方式)

搭建SpringMVC(非web.xml檔案方式)

配置DispatcherServlet

既然DispatcherServlet是Spring MVC的核心,首先來配置DispatcherServlet。傳統的配置DispatcherServlet是通過web.xml來配置的,然後將web.xml放在應用的WAR包裡面。這裡不使用web.xml檔案配置,而採用Java來將DispatcherServlet配置在servlet容器中。

通過Java 來配置其實很簡單,只需要繼承AbstractAnnotationConfigDispatcherServletInitializer類即可配置DispatcherServlcet。程式碼如下:

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
    //對映路徑到DispatcherServlet上
    @Override
    protected String[] getServletMappings(){
        return new String[] { "/" };
    }

    //指定哪些配置類由DispatcherServlet載入
    @Override
    protected Class<?>[] getServletConfigClasses(){
        return new Class<?>[] { WebConfig.class };
    }

    //指定哪些配置類由ContextLoaderListner載入
    @Override
    protected Class<?>[] getRootConfigClasses(){
        return new Class<?>[] { RootConfig.class };
    }
}

這裡面需要重寫這三個方法,下面具體解釋每個方法的作用:

getServletMapping()方法:

這個方法將一個或多個路徑對映到DispatcherServlet上。上面的例子中指定“/”,表明它是預設的Servlet,會處理進入應用的所有請求。

getServletConfigClasses()方法:

該方法返回的配置類,由DispatcherServlet載入應用上下文時載入其中的Bean。也就是說我們開發Web應用時,使用Java配置Bean的配置類,會放在該方法的返回陣列中。

getRootConfigClasses()方法:

通常在Spring Web應用中,包含Web元件的bean,如控制器、檢視解析器、處理器對映等由DispatcherServlet載入,而其他如中間層和資料層的bean則交給另一個應用上下文ContextLoaderListener載入。該方法就是指定哪些配置類由ContextLoaderListener載入。

啟動SpringMVC

XML中啟動SpringMVC是使用<mvc:annotation-driven>啟動註解啟動的SpringMVC。但這裡還是不用XML,仍然採用Java進行配置。

最簡單的啟動SpringMVC就是在配置類上新增@EnableWebMvc註解。

@Configuration
@EnableWebMvc
public class WebConfig{
}

當然,這是最最簡單的SpringMVC的配置類,該配置類可以新增很多東西來配置很多功能,比如配置元件掃描,配置檢視解析器,配置靜態資源處理等等。

@Configuration    //宣告是配置類
@EnableWevMvc     //啟動SpringMVC
@ComponentScan    //啟動元件掃描
public class WebConfig extends WebMvcConfigurerAdapter{
    //手動配置自己的Bean
    @Bean
    public Login loginImpl(){
    }

    //配置JSP檢視解析器
    @Bean
    public ViewResolver viewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }

    //配置靜態資源處理
    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer){
        configurer.enable();
    }
}

RootConfig的話,如果是WEB開發,可直接寫一個空的配置類即可。

使用SpringMVC

搭建好SpringMVC後,就可以使用SpringMVC了。編寫Controller和JSP檢視和普通的Ja'v'a開發沒什麼區別。