spring以註解的方式啟動spring mvc
阿新 • • 發佈:2019-01-04
第一步 如何啟動Spring Mvc
1.建立一個類繼承AbstractAnnotationConfigDispatcherServletInitializer
程式碼:
MyWebAppInitializer
//web容器啟動的時候建立物件;呼叫方法來初始化容器控制前端控制器 public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { //獲取根容器的配置類;(Spring的配置檔案) 父容器; @Override protectedClass<?>[] 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..."); } }