摘要:當(dāng)過濾器有注入其他類時(shí),可直接通過的方式進(jìn)行實(shí)體類過濾器,這樣不可自動(dòng)注入過濾器使用的其他類。就是先簡(jiǎn)單的記錄一下攔截器,過濾器和監(jiān)聽器的簡(jiǎn)單使用方法,后期如果有詳細(xì)的使用方法,再來更新本文。
很多時(shí)候我們都想要做一些與業(yè)務(wù)邏輯無關(guān)的事情,比如統(tǒng)計(jì)在線人數(shù),篩選登陸賬號(hào),統(tǒng)計(jì)頁(yè)面瀏覽量等等。。。這時(shí)候我們就需要用到今天講到的這些工具了。
首先我們先看一下攔截器
我們需要先自定義一個(gè)攔截器,寫上我們自己對(duì)邏輯的處理。
@Slf4j public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.info("preHandle:請(qǐng)求前調(diào)用"); //返回 false 則請(qǐng)求中斷 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { log.info("postHandle:請(qǐng)求后調(diào)用"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { log.info("afterCompletion:請(qǐng)求調(diào)用完成后回調(diào)方法,即在視圖渲染完成后回調(diào)"); } }
然后我們需要注冊(cè)這個(gè)攔截器
public class WebMvcConfigurer extends WebMvcConfigurationSupport { @Override public void addInterceptors(InterceptorRegistry registry) { //注冊(cè)攔截器 攔截規(guī)則 //多個(gè)攔截器時(shí) 以此添加 執(zhí)行順序按添加順序 registry.addInterceptor(getHandlerInterceptor()).addPathPatterns("/*"); } @Bean public static HandlerInterceptor getHandlerInterceptor() { return new MyInterceptor(); } }
當(dāng)然了需要在啟動(dòng)類上添加注解@ServletComponentScan才能生效。這就是一個(gè)簡(jiǎn)單的沒什么邏輯的攔截器了,如果需要什么特別的操作的話就直接在我們自定義的攔截器方法里面寫就好了。
接下來我民額看一下過濾器,和上面的攔截器一樣,我們需要先自定義一個(gè)過濾器,實(shí)現(xiàn)我們自己想實(shí)現(xiàn)的方法。
@Slf4j public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { log.info("filter 初始化"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub log.info("doFilter 請(qǐng)求處理"); //對(duì)request、response進(jìn)行一些預(yù)處理 // 比如設(shè)置請(qǐng)求編碼 // request.setCharacterEncoding("UTF-8"); // response.setCharacterEncoding("UTF-8"); //TODO 進(jìn)行業(yè)務(wù)邏輯 //鏈路 直接傳給下一個(gè)過濾器 chain.doFilter(request, response); } @Override public void destroy() { log.info("filter 銷毀"); } }
然后我們調(diào)用我們寫的這個(gè)過濾器。
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean ResistFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); //當(dāng)過濾器有注入其他bean類時(shí),可直接通過@bean的方式進(jìn)行實(shí)體類過濾器,這樣不可自動(dòng)注入過濾器使用的其他bean類。 //當(dāng)然,若無其他bean需要獲取時(shí),可直接new MyFilter(),也可使用getBean的方式。 registration.setFilter(new MyFilter()); //過濾器名稱 registration.setName("customFilter"); //攔截路徑 registration.addUrlPatterns("/hello"); //設(shè)置順序 registration.setOrder(10); return registration; } }
在攔截器哪里我們已經(jīng)在啟動(dòng)類上添加了注解,所以這里就不用重復(fù)添加了。
我們最后來看一下監(jiān)聽器,這里的監(jiān)聽器不需要調(diào)用等操作,只需要寫好,添加注解就可以了。
/** * 監(jiān)聽器 * servletRequestListener一般來實(shí)現(xiàn)web瀏覽量
*/ @WebListener @Slf4j public class ServletLister implements ServletRequestListener { @Override public void requestDestroyed(ServletRequestEvent sre) { log.info("監(jiān)聽器:銷毀"); } @Override public void requestInitialized(ServletRequestEvent sre) { log.info("監(jiān)聽器:初始化"); } } ``` ``` /** * 監(jiān)聽器 * httpSessionListener來實(shí)如今線人數(shù)的統(tǒng)計(jì) * @author zhouzhaodong */ @WebListener @Slf4j public class HttpLister implements HttpSessionListener { @Override public void sessionCreated(HttpSessionEvent se) { log.info("又有人上線了,統(tǒng)計(jì)一下在線人數(shù)吧!"); } @Override public void sessionDestroyed(HttpSessionEvent se) { log.info("又有人下線了,統(tǒng)計(jì)一下在線人數(shù)吧!"); } } ``` 監(jiān)聽器主要是用來統(tǒng)計(jì)數(shù)量的。 就是先簡(jiǎn)單的記錄一下攔截器,過濾器和監(jiān)聽器的簡(jiǎn)單使用方法,后期如果有詳細(xì)的使用方法,再來更新本文。 代碼下載地址:https://github.com/zhouzhaodong/Study
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/75658.html
摘要:當(dāng)面講給你聽講堂地址,或許是最實(shí)用的教程,新課促銷中,只要你敢來,保你收貨滿滿。優(yōu)惠報(bào)名全程擼碼快速入門教程全原價(jià),優(yōu)惠價(jià)全程擼碼進(jìn)階全原價(jià),優(yōu)惠價(jià) 回顧 Spring Boot - 初識(shí) Hello World Spring Boot - Servlet、過濾器、監(jiān)聽器、攔截器 Spring Boot - 靜態(tài)資源處理、啟動(dòng)加載、日志處理 Spring Boot - 部署Deplo...
摘要:索引初識(shí)過濾器監(jiān)聽器攔截器靜態(tài)資源處理啟動(dòng)加載日志處理數(shù)據(jù)庫(kù)配置部署最后如果覺得我的文章對(duì)您有用,請(qǐng)點(diǎn)贊收藏。您的支持將鼓勵(lì)我繼續(xù)創(chuàng)作 Spring Boot - 部署Deploy 服務(wù)發(fā)布Tomcat 修改啟動(dòng)類,繼承 SpringBootServletInitializer 并重寫 configure 方法 @Override protected SpringApplication...
摘要:過濾器監(jiān)聽器攔截器上一篇,我們講解了配置及整合方法,不清楚的可以點(diǎn)擊了解的兩種實(shí)現(xiàn)方式通過手動(dòng)注入實(shí)現(xiàn)一個(gè)返回的方法,并將該對(duì)象注冊(cè)到中。 Spring Boot - Servlet、過濾器、監(jiān)聽器、攔截器 上一篇,我們講解了spring boot(json,jsp,freemarker)配置及整合方法,不清楚的可以點(diǎn)擊了解 Servlet的兩種實(shí)現(xiàn)方式 通過@Bean手動(dòng)注入實(shí)現(xiàn)一個(gè)...
摘要:初步使用主要使用注解的方式對(duì)進(jìn)行校驗(yàn),第一個(gè)例子在需要校驗(yàn)的字段上指定約束條件然后在中可以這樣調(diào)用,加上注解即可。如果校驗(yàn)失敗,默認(rèn)會(huì)返回框架的出錯(cuò)信息。指定到的分組名會(huì)全部進(jìn)行校驗(yàn),不指定的不校驗(yàn)。 Spring Boot - 表單校驗(yàn)(JSR303&Hibernate Validator) 回顧 Spring Boot - 初識(shí) Hello World Spring Boot -...
閱讀 3466·2019-08-30 13:15
閱讀 1403·2019-08-29 18:34
閱讀 829·2019-08-29 15:18
閱讀 3488·2019-08-29 11:21
閱讀 3252·2019-08-29 10:55
閱讀 3705·2019-08-26 10:36
閱讀 1874·2019-08-23 18:37
閱讀 1827·2019-08-23 16:57