国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring Boot - Servlet、過(guò)濾器、監(jiān)聽(tīng)器、攔截器

anRui / 2216人閱讀

摘要:過(guò)濾器監(jiān)聽(tīng)器攔截器上一篇,我們講解了配置及整合方法,不清楚的可以點(diǎn)擊了解的兩種實(shí)現(xiàn)方式通過(guò)手動(dòng)注入實(shí)現(xiàn)一個(gè)返回的方法,并將該對(duì)象注冊(cè)到中。

Spring Boot - Servlet、過(guò)濾器、監(jiān)聽(tīng)器、攔截器

上一篇,我們講解了spring boot(json,jsp,freemarker)配置及整合方法,不清楚的可以點(diǎn)擊了解

Servlet的兩種實(shí)現(xiàn)方式

通過(guò)@Bean手動(dòng)注入
實(shí)現(xiàn)一個(gè)返回ServletRegistrationBean的方法,并將該對(duì)象注冊(cè)到spring中。這段代碼需要放到spring boot自動(dòng)掃描的目錄中,建議放到@Configuration標(biāo)識(shí)的類中,進(jìn)行統(tǒng)一管理

    @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        return new ServletRegistrationBean(new HelloServlet(),"/xiaohong");
    }

通過(guò)@WebServlet自動(dòng)注入

增加注解@ServletComponentScan,開(kāi)啟servlet掃描

增加注解@WebServlet,標(biāo)識(shí)該類是servlet,并聲明urlPath

@ServletComponentScan
@SpringBootApplication
public class Start {……}        
@WebServlet("/xiaohong")
public class HelloServlet extends HttpServlet {……}

示例:HelloServlet.java

package com.wanye.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by wanye on 2017/5/24.
 */
@WebServlet("/xiaohong")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println(">>do get<<");
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println(">>do post<<");
        PrintWriter out = resp.getWriter();
        out.print("hello @xiaohong");
        out.close();
    }
}
過(guò)濾器Filter和監(jiān)聽(tīng)器Listener

過(guò)濾器Filter和監(jiān)聽(tīng)器Listener的實(shí)現(xiàn)方式與Servlet實(shí)現(xiàn)方式一樣,這里列出來(lái)區(qū)別,大家自己可以嘗試一下。

通過(guò)@Bean手動(dòng)注入

Filter需要實(shí)現(xiàn)返回FilterRegistrationBean的方法

Listener需要實(shí)現(xiàn)返回ServletListenerRegistrationBean的方法

通過(guò)注解自動(dòng)注入

Filter需要增加注解@WebFilter,標(biāo)識(shí)該類是Filter

Listener需要增加注解@WebListener,標(biāo)識(shí)該類是Listener

攔截器

上面講解了Servlet、過(guò)濾器、監(jiān)聽(tīng)器,細(xì)心的同學(xué)可以發(fā)現(xiàn),他們都是屬于javax.servlet所提供的Api。

攔截器原理

簡(jiǎn)單來(lái)講是通過(guò)動(dòng)態(tài)代理實(shí)現(xiàn),被訪問(wèn)的目標(biāo)方法通過(guò)代理類(方法)來(lái)執(zhí)行,這樣我們就可以在真正要執(zhí)行的方法執(zhí)行前、后做一些處理;通過(guò)攔截器這種方式,使得代碼可以進(jìn)行更高度的抽象。更多攔截器、動(dòng)態(tài)代理的內(nèi)容,請(qǐng)大家查閱資料了解。

HTTP攔截器

在Spring中實(shí)現(xiàn)Http攔截器

創(chuàng)建攔截器類并實(shí)現(xiàn) HandlerInterceptor接口,perHandler返回true表示通過(guò)攔截

package com.wanye.interceptor;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by wanye on 2017/5/24.
 */
public class HelloInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println(">>interceptor preHandle<<");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println(">>interceptor postHandle請(qǐng)求處理之后進(jìn)行調(diào)用,但是在視圖被渲染之前(Controller方法調(diào)用之后)<<");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println(">>interceptor afterCompletion<<");
    }
}

創(chuàng)建一個(gè)Java類繼承WebMvcConfigurerAdapter,并重寫(xiě) addInterceptors 方法,@Configuration

package com.wanye.interceptor;

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

/**
 * Created by wanye on 2017/5/24.
 */
@Configuration
public class HelloConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new HelloInterceptor()).addPathPatterns("/**");

    }
}

實(shí)例化攔截器,然后將對(duì)像手動(dòng)添加到攔截器鏈中(在addInterceptors方法中添加)

總結(jié)

本文講解了注冊(cè)Servlet/Filter/Listener的兩種?方式(Servlet/Filter/Listener的概念大家自行查閱資料了解),及攔截器基本原理,并通過(guò)注解實(shí)現(xiàn)http攔截器,另外本文還有一個(gè)疑問(wèn):為什么Spring中實(shí)現(xiàn)的Http攔截器,無(wú)法對(duì)我們自定義的servlet請(qǐng)求進(jìn)行攔截?歡迎大家留言討論。

注解含義

@Bean // @Bean明確地指示了產(chǎn)??一個(gè)bean的方法,并且交給Spring容器管理

@ServletComponentScan // 當(dāng)使用@ServletComponentScan掃描Servlet組件時(shí),Servlet、過(guò)濾器和監(jiān)聽(tīng)器可以是通過(guò)@WebServlet、@WebFilter和@WebListener自動(dòng)注冊(cè)

@WebServlet(“/hello")@WebFilter@WebListener // 分別標(biāo)識(shí)

最后

若本文對(duì)你有幫助,望點(diǎn)贊。為了提高大家學(xué)習(xí)效果,錄制了同步的視頻課程,還望大家支持視頻課程

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/71139.html

相關(guān)文章

  • Spring Boot - 部署Deploy

    摘要:索引初識(shí)過(guò)濾器監(jiān)聽(tīng)器攔截器靜態(tài)資源處理啟動(dòng)加載日志處理數(shù)據(jù)庫(kù)配置部署最后如果覺(jué)得我的文章對(duì)您有用,請(qǐng)點(diǎn)贊收藏。您的支持將鼓勵(lì)我繼續(xù)創(chuàng)作 Spring Boot - 部署Deploy 服務(wù)發(fā)布Tomcat 修改啟動(dòng)類,繼承 SpringBootServletInitializer 并重寫(xiě) configure 方法 @Override protected SpringApplication...

    YJNldm 評(píng)論0 收藏0
  • Spring Boot - 靜態(tài)資源處理、啟動(dòng)加載、日志處理

    摘要:靜態(tài)資源處理啟動(dòng)加載日志處理回顧初識(shí)過(guò)濾器監(jiān)聽(tīng)器攔截器我們通過(guò)啟動(dòng)日志,可以發(fā)現(xiàn),默認(rèn)提供了靜態(tài)資源處理。 Spring Boot - 靜態(tài)資源處理、啟動(dòng)加載、日志處理 回顧 Spring Boot-初識(shí) Hello World Spring Boot - Servlet、過(guò)濾器、監(jiān)聽(tīng)器、攔截器 我們通過(guò)啟動(dòng)日志,可以發(fā)現(xiàn),spring boot 默認(rèn)提供了靜態(tài)資源處理。接下來(lái),我...

    or0fun 評(píng)論0 收藏0
  • Spring Boot - 整合Jsp/FreeMarker

    摘要:大家自己了解一下的使用方法,我這里就不進(jìn)行詳細(xì)的講述了。啟動(dòng)方式兩種方式都可以主函數(shù)啟動(dòng)或者驗(yàn)證訪問(wèn)頁(yè)面,驗(yàn)證是否輸出了當(dāng)前時(shí)間。為了提高大家學(xué)習(xí)效果,錄制了同步的視頻課程,還望大家支持視頻課程 Spring Boot - 初識(shí) Hello World 索引 Spring Boot - 初識(shí) Hello World Spring Boot - Servlet、過(guò)濾器、監(jiān)聽(tīng)器、攔截器 ...

    AbnerMing 評(píng)論0 收藏0
  • Spring Boot - 自定義啟動(dòng)banner

    摘要:背景這段時(shí)間較忙,有些想念小紅,為了表達(dá)我對(duì)小紅的思念之情,決定將啟動(dòng)的研究一下,看看是否能夠自定義,讓我天天能夠看到她。 背景 這段時(shí)間較忙,有些想念小紅,為了表達(dá)我對(duì)小紅的思念之情,決定將spring boot啟動(dòng)的banner研究一下,看看是否能夠自定義,讓我天天能夠看到她。 展示 經(jīng)過(guò)調(diào)研,發(fā)現(xiàn)自定義banner是一個(gè)輕松愉快的過(guò)程,忍不住讓我多啟動(dòng)幾次,先看看效果:(省略了一...

    CollinPeng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<