1. 程式人生 > >spring以註解的方式啟動spring mvc

spring以註解的方式啟動spring mvc

第一步 如何啟動Spring Mvc

     1.建立一個類繼承AbstractAnnotationConfigDispatcherServletInitializer

        程式碼:

       MyWebAppInitializer

//web容器啟動的時候建立物件;呼叫方法來初始化容器控制前端控制器
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    //獲取根容器的配置類;(Spring的配置檔案)   父容器;
@Override
protected 
Class<?>[] getRootConfigClasses() { // TODO Auto-generated method stub return new Class<?>[]{RootConfig.class}; } //獲取web容器的配置類(SpringMVC配置檔案) 子容器; @Override protected Class<?>[] getServletConfigClasses() { // TODO Auto-generated method stub return new Class<?>[]{AppConfig.class
}; } //獲取DispatcherServlet的對映資訊 // /:攔截所有請求(包括靜態資源(xx.js,xx.png)),但是不包括*.jsp; // /*:攔截所有請求;連*.jsp頁面都攔截;jsp頁面是tomcat的jsp引擎解析的; @Override protected String[] getServletMappings() { // TODO Auto-generated method stub return new String[]{"/"}; } }

RootConfig




第二步 定製SpringMVC

1)、@EnableWebMvc:開啟SpringMVC定製配置功能;
<mvc:annotation-driven/>;


2)、配置元件(檢視解析器、檢視對映、靜態資源對映、攔截器。。。)
extends WebMvcConfigurerAdapter

程式碼:

@EnableWebMvc
public class AppConfig extends WebMvcConfigurerAdapter {
    //定製
    //檢視解析器
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
        // TODO Auto-generated method stub
//預設所有的頁面都從 /WEB-INF/ xxx .jsp
        //registry.jsp();
registry.jsp("/WEB-INF/views/", ".jsp");
}

    //靜態資源訪問
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        // TODO Auto-generated method stub
configurer.enable();
}

    //攔截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
        // TODO Auto-generated method stub
//super.addInterceptors(registry);
registry.addInterceptor(new MyFirstInterceptor()).addPathPatterns("/**");
}

}
public class MyFirstInterceptor implements HandlerInterceptor {
    //目標方法執行之前執行
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // TODO Auto-generated method stub
System.out.println("preHandle..."+request.getRequestURI());
        return true;
}

    //目標方法執行正確以後執行
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
        // TODO Auto-generated method stub
System.out.println("postHandle...");
}

    //頁面響應以後執行
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        // TODO Auto-generated method stub
System.out.println("afterCompletion...");
}
}