激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java 使用過濾器實現登錄攔截處理

java 使用過濾器實現登錄攔截處理

2022-01-20 12:05ChengNengNeng Java教程

這篇文章主要介紹了java 使用過濾器實現登錄攔截處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

濾器實現登錄攔截處理

一、什么是過濾器

過濾器是處于客戶端與服務器資源文件之間的一道過濾網(駐留在服務器端的Web組件),在訪問資源文件之前,通過一系列的過濾器對請求進行修改、判斷等,把不符合規則的請求在中途攔截或修改。也可以對響應進行過濾,攔截或修改響應

二、工作原理及生命周期

舉個例子 當我們登錄系統可以訪問到頁面,當退出登錄后,要訪問就必須重新登錄,這就是過濾器起到的作用。當我們訪問某個接口時,過濾器會攔截請求,判斷當前用戶是否是登錄狀態,若登錄則放行訪問,若未登錄則返回指定頁面(通常為登錄頁或一個客戶友好的提示頁)

java 使用過濾器實現登錄攔截處理 java 使用過濾器實現登錄攔截處理

這個過程包含了過濾器的生命周期:

1.實例化

2.初始化

3.執行過濾操作(包括訪問前對request操作和返回時對response的操作處理)

4.銷毀

三、過濾器使用

在springboot項目簡單使用過濾器進行登錄攔截處理

1.實現過濾器

public class MyFilter implements Filter {
	private static final String CURRENT_USER = "current_user";
 //配置白名單
	protected static List<Pattern> patterns = new ArrayList<Pattern>();
	//靜態代碼塊,在虛擬機加載類的時候就會加載執行,而且只執行一次
	static {
		patterns.add(Pattern.compile("/index"));
		patterns.add(Pattern.compile("/login"));
		patterns.add(Pattern.compile("/register"));
	}
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
	}
	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
		HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
		HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
		HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(httpResponse);
		String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
		if (isInclude(url)) {
			//在白名單中的url,放行訪問
			filterChain.doFilter(httpRequest, httpResponse);
			return;
		}
		if (SessionUtils.getSessionAttribute(CURRENT_USER) != null) {
			//若為登錄狀態 放行訪問
			filterChain.doFilter(httpRequest, httpResponse);
			return;
		} else {
			//否則默認訪問index接口
			wrapper.sendRedirect("/index");
		}
	}
	@Override
	public void destroy() {
	}
//判斷當前請求是否在白名單
	private boolean isInclude(String url) {
		for (Pattern pattern : patterns) {
			Matcher matcher = pattern.matcher(url);
			if (matcher.matches()) {
				return true;
			}
		}
		return false;
	}
}

2.注冊過濾器

@Configuration
public class WebConfig {
	/**
	 * 配置過濾器
	 * @return
	 */
	@Bean
	public FilterRegistrationBean someFilterRegistration() {
		FilterRegistrationBean registration = new FilterRegistrationBean();
		registration.setFilter(myFilter());
		//攔截/*的訪問 多級匹配(springboot 過濾器/*以及匹配 /**多級匹配)
		registration.addUrlPatterns("/*");
		registration.setName("myFilter");
		return registration;
	}
	/**
	 * 創建一個bean
	 * @return
	 */
	@Bean(name = "myFilter")
	public Filter myFilter() {
		return new MyFilter();
	}
}

3.運行項目

訪問/index,會發現沒有被攔截,返回正確結果

java 使用過濾器實現登錄攔截處理

在未登錄狀態,訪問/update接口,會被攔截跳轉至/index頁

java 使用過濾器實現登錄攔截處理

在登錄狀態,訪問/update接口,可以訪問

java 使用過濾器實現登錄攔截處理

這里也可以在程序debug看下。簡單的過濾器功能完成。

常用過濾器及其使用后續再來學習。

 

filter簡易實現登錄功能攔截

暑期項目實習第八課, filter簡易實現登錄功能攔截

LoginFliter

public class LoginFliter implements Filter {
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
  }
  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
      HttpServletRequest request = (HttpServletRequest) servletRequest;
      HttpServletResponse response = (HttpServletResponse) servletResponse;
      HttpSession session = request.getSession();
      User user = (User)session.getAttribute("user");
      String uri = request.getRequestURI();
      System.out.println(uri.indexOf("findAll.do"));
      System.out.println(uri.indexOf("login.do"));
      if(user==null && uri.indexOf("login.do")==-1){
          response.sendRedirect(request.getContextPath()+"/");
      }else {
          filterChain.doFilter(request,response);
      }
  }
  @Override
  public void destroy() {
  }
}

controller

 @RequestMapping("/login.do")
  public ModelAndView login(User user, HttpSession session){
      boolean flag = userService.login(user.getName(),user.getPassword());
      ModelAndView modelAndView = new ModelAndView();
      if(flag){
          session.setAttribute("user",user);
          modelAndView.setViewName("../ok");
      }else {
          modelAndView.setViewName("../failure");
      }
      return modelAndView;
  }

結果圖

java 使用過濾器實現登錄攔截處理 java 使用過濾器實現登錄攔截處理

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/ChengChengxn/article/details/88619575

延伸 · 閱讀

精彩推薦
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: 操操插插 | 亚洲精品午夜国产va久久成人 | 欧美一级久久久久久久大片 | 黄色一级毛片免费看 | 毛片网站视频 | 精品中文字幕久久久久四十五十骆 | 国产成人精品区 | 老师你怎么会在这第2季出现 | 国产精品久久久久av | 久久精品网址 | 日韩欧美动作影片 | 欧美日本在线视频 | 91九色视频观看 | 日本黄色美女网站 | 91免费在线视频 | 黄色一级片免费观看 | 一本精品999爽爽久久久 | 日本aⅴ在线| 亚洲天堂午夜 | 91九色视频观看 | 欧美精品一区二区久久 | 欧美日韩精品一区二区三区不卡 | 性色av一区二区三区在线播放亚… | 免费毛片播放 | 午夜精品福利在线观看 | 日韩精品久久久久久久九岛 | 黄色毛片一级视频 | 国产一有一级毛片视频 | 美国一级毛片片aa久久综合 | 国产精品久久久久网站 | 中文字幕国产一区 | 国产精品自在线拍 | 午夜视频在线免费播放 | 国产一级在线观看视频 | 黄色一级毛片免费看 | 91伊人久久 | 中文字幕在线不卡视频 | av在线免费播放 | 成人久久18免费 | 久草免费资源视频 | 爱逼爱操综合网 |