色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java handler和攔截器

榮姿康2年前9瀏覽0評論

在Java中,Handler和攔截器都是常用的開發工具,可以讓開發者更方便地管理和控制代碼的執行。下面我們來詳細地了解一下這兩個工具。

Handler的概念和用途

在Java中,Handler是一個讓開發者可以在某個時刻執行一段代碼的工具。在Android中,Handler經常被用來更新UI元素或者在一個子線程中執行任務并返回結果。

// 創建一個Handler對象
Handler handler = new Handler(Looper.getMainLooper());
// 利用Handler更新UI元素
handler.post(new Runnable() {
@Override
public void run() {
textView.setText("Hello World!");
}
});
// 利用Handler在子線程中執行任務并返回結果
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// do something
handler.post(new Runnable() {
@Override
public void run() {
// update UI or return result
}
});
}
});
thread.start();

攔截器的概念和用途

攔截器是一種AOP(Aspect Oriented Programming)編程思想的體現,可以在方法調用前、調用后或者拋出異常時執行一些邏輯代碼。攔截器可以用來做日志記錄、性能監控、安全驗證等等操作。

public class LogInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle: " + request.getRequestURI());
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle: " + request.getRequestURI());
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion: " + request.getRequestURI());
}
}
// 在Spring中使用攔截器
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogInterceptor());
}
}

上述代碼中,我們創建了一個LogInterceptor類,實現了Spring的HandlerInterceptor接口,并且在preHandle、postHandle和afterCompletion方法中分別輸出了日志。我們可以在Spring的配置文件中把這個攔截器加入到攔截器注冊表中,這樣在任何Controller方法執行之前、之后或者拋出異常時都會執行這個攔截器里的代碼。

總結來說,Handler和攔截器都是Java開發中非常重要且常用的工具,可以幫助我們更好地管理和控制代碼執行的時機和流程,提高程序的效率和可維護性。