首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

SpringMVC 流程控制詳解:攔截器、映射解析與 Controller 進階

     編輯:關於C

SpringMVC 流程控制核心

本文總結 SpringMVC 中攔截器配置、處理器映射解析、多種 Controller 實現方式。

處理器映射解析器

1. BeanNameUrlHandlerMapping(默認)

以 Bean 的 name 屬性作為 URI 直接映射:


優點:簡單直觀;缺點:URI 與類強耦合。

2. SimpleUrlHandlerMapping(推薦)

通過映射關係綁定 URI 與 Controller ID,降低耦合:


    
        
            
        
    

攔截器配置與使用

1. 自定義攔截器

public class TimeInterceptor extends HandlerInterceptorAdapter {
    @Override public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) {
        System.out.println("preHandle: " + new Date()); return true;
    }
    @Override public void postHandle(HttpServletRequest req, HttpServletResponse res, Object handler, ModelAndView mv) {
        System.out.println("postHandle: " + new Date());
    }
    @Override public void afterCompletion(HttpServletRequest req, HttpServletResponse res, Object handler, Exception ex) {
        System.out.println("afterCompletion: " + new Date());
    }
}

2. 配置攔截器




    
        
    
    
        
    

Controller 進階實現

1. AbstractController

需重寫 handleRequestInternal,將 protected 改為 public,單動作控制器。

2. MultiActionController(多動作控制器)

public class MultiController extends MultiActionController {
    public ModelAndView insert(HttpServletRequest req, HttpServletResponse res) {
        return new ModelAndView("insertSuccess");
    }
    public ModelAndView delete(HttpServletRequest req, HttpServletResponse res) {
        return new ModelAndView("deleteSuccess");
    }
}

配置方法名解析器:



    
        
    


    
    


    
        
            insert
            delete
        
    

3. AbstractCommandController(指令控制器)

自動將請求參數綁定到命令對象,類似 Struts2 模型驅動:

public class DemoController extends AbstractCommandController {
    public DemoController() { setCommandClass(User.class); }
    @Override
    protected ModelAndView handle(HttpServletRequest req, HttpServletResponse res, Object cmd, BindException errors) {
        User user = (User)cmd;
        System.out.println(user.getUsercode());
        return new ModelAndView("test");
    }
}

總結

SpringMVC 流程控制核心:核心控制器、映射解析器、Controller、攔截器擴展。掌握大方向,細節查 API 文檔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved