91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用SpringBoot攔截器

發布時間:2020-07-30 11:35:41 來源:億速云 閱讀:129 作者:小豬 欄目:編程語言

這篇文章主要為大家展示了如何使用SpringBoot攔截器,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

攔截器簡介

攔截器通常通過動態代理的方式來執行。

攔截器的生命周期由IoC容器管理,可以通過注入等方式來獲取其他Bean的實例,使用更方便。

攔截器配置使用方式

實現攔截器接口:

import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

private class AuthenticationInterceptor implements HandlerInterceptor {
	// 在請求處理之前進行調用(Controller方法調用之前)
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException{
  	System.out.println(request.getRequestURL());
  	User user = (User)request.getSession().getAttribute("USER");
    if(user != null){
    	return true;
    }else {
    	System.out.println("no login...");
    	// request.getRequestDispatcher("/index.html").forward(request, response);
    	response.sendRedirect(request.getContextPath()+"login.html");
    	return false;
    }
    return false;
  }
  
  // 在請求處理之后視圖被渲染之前進行調用(Controller方法調用之后)
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
    System.out.println("postHandle...");
  }

	// 在請求結束之后、也就是視圖被渲染之后進行調用(主要是用于進行資源清理工作)
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    System.out.println("afterCompletion...");
  }
}

將攔截器加入到配置中:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebSecurityConfig implements WebMvcConfigurer{
  @Override
  public void addInterceptors(InterceptorRegistry registry){
    registry.addInterceptor(new AuthenticationInterceptor())
    		//所有路徑都被攔截
    		.addPathPatterns("/**")
    		//添加不攔截的路徑
    		.excludePathPatterns("/userLogin", "/css/**", "/images/**", "/js/**", "/login.html");
    registry.addInterceptor(new OtherInterceptor())
        .addPathPatterns("/**");
  }
}

備注:

由于 preHandle、postHandle、afterCompletion 是不同的方法,如果在這些方法之間使用共享變量來儲存值,會存在線程安全問題。而使用過濾器實現則不存在此問題。

以上就是關于如何使用SpringBoot攔截器的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富源县| 柘荣县| 郴州市| 诏安县| 南阳市| 南昌市| 乌兰浩特市| 衡阳市| 梁山县| 新沂市| 鹤庆县| 滕州市| 会泽县| 稷山县| 鹿邑县| 班玛县| 翁牛特旗| 红河县| 五大连池市| 成安县| 辽源市| 姜堰市| 肥东县| 梅河口市| 永丰县| 集安市| 曲周县| 中超| 南充市| 新宁县| 巴林左旗| 海宁市| 大荔县| 左贡县| 鸡西市| 科尔| 沂水县| 延庆县| 栾川县| 太白县| 郧西县|