亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Spring Boot整合Servlet三大組件

Spring Boot整合Servlet三大組件

來源:千鋒教育
發布人:zyh
時間: 2023-06-12 17:06:00 1686560760

  一. Servlet三大組件

  不知道各位小伙伴,是否還記得Servlet、Filter、Listener三大組件的知識點?如果你忘記了,趕緊翻開你的小本本復習回顧一下吧。今天小編會給大家介紹如何在Spring Boot中整合Servlet三大組件,快來看看吧。

  我們在進行Servlet開發時,通常首先自定義Servlet、Filter、Listener三大組件,然后在文件web.xm中進行配置。而Spring Boot使用的是內嵌式Servlet容器,并沒有提供外部配置文件web.xml,那么Spring Boot又該如何整合Servlet的相關組件呢?其實Spring Boot給我們提供了組件注冊和路徑掃描兩種方式,來整合Servlet三大組件。

Spring Boot整合Servlet三大組件

  在Spring Boot中,當我們使用組件注冊方式整合內嵌Servlet容器的Servlet、Filter、Listener三大組件時,只需將這些自定義組件通過ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean類注冊到容器中即可。

  接下來我們就來看看具體的代碼實現吧。

  二. 組件注冊方式整合Servlet

  1.創建自定義Servlet類

package com.cy.servletComponent;
import org.springframework.stereotype.Component;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/** 自定義Servlet類 */
@Component
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("Hello MyServlet");
}
}

      2.創建自定義Servlet類

  在chapter05項目中的com.cy.servletComponent包中,我們創建一個繼承了HttpServlet的類MySevlet。  

package com.cy.config;
import com.cy.servletComponent.MyServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/** 嵌入式Servlet容器三大組件配置 /
public class ServletConfig {
/* 注冊Servlet組件 */
public ServletRegistrationBean getServlet(MyServlet myServlet) {
ServletRegistrationBean registrationBean = new ServletRegistrationBean(myServlet, "/myServlet");
return registrationBean;
}
}

  3. 啟動項目進行測試

  項目啟動成功后,在瀏覽器上訪問網址查看數據顯示。

1684312955307.image

  三. 使用組件注冊方式整合Filter

  1.創建自定義Filter類

  我們可以在com.cy.servletComponent包下創建一個類MyFilter。

package com.cy.servletComponent;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import java.io.IOException;
/** 自定義Filter類 */
public class MyFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("Hello Filter");
filterChain.doFilter(servletRequest, servletResponse);
}

public void destroy() {
}
}

  2. 向Servlet組件配置類注冊自定義Filter類

  打開之前創建的Servlet組件配置類ServletConfig,將該自定義Filter類使用組件注冊方式進行注冊。 

/** 注冊Filter組件 */
@Bean
public FilterRegistrationBean getFilter(MyFilter myFilter) {
FilterRegistrationBean registrationBean = new FilterRegistrationBean(myFilter);
registrationBean.setUrlPatterns(Arrays.asList("/myFilter", "/toLoginPage"));
return registrationBean;
}

  3. 請求測試

  項目啟動成功后,在瀏覽器上訪問以下網址查看控制臺打印效果(這里由于我們沒有編寫對應路徑的請求處理方法,所以瀏覽器會現404錯誤頁面,這里重點關注控制臺即可)。

1684312974325.image

  控制臺會輸出如下結果:

1684312985150.image

  四. 使用組件注冊方式整合Listener

  1.創建自定義Listener類

  我們可以在com.cy.servletComponent包下創建一個類MyListener。  

package com.cy.servletComponent;
import org.springframework.stereotype.Component;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/** 自定義Listener類 */
public class MyListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized()...");
}

public void contextDestroyed(ServletContextEvent sce) {
System.out.println("contextDestroyed()...");
}
}

  2. 向Servlet組件配置類注冊自定義Listener類

  我們可以打開之前創建的Servlet組件配置類ServletConfig,將該自定義Listener類使用組件注冊方式進行注冊。 

/** 注冊Listener組件 */
public ServletListenerRegistrationBean getListener(MyListener myListener) {
ServletListenerRegistrationBean registrationBean = new ServletListenerRegistrationBean(myListener);
return registrationBean;
}

  需要說明的是,Servlet容器提供了很多Listener接口,例如ServletRequestListener、HttpSessionListener、ServletContextListener 等,我們在自定義Listener類時要根據自身需求選擇實現對應接口即可。

  3. 執行效果

  完成自定義Listener組件注冊后啟動項目,項目啟動成功后查看控制臺打印效果。

1684313000364.image

  單擊IDEA工具控制臺左側的[Exit]按鈕,就可以關閉當前項目。注意,如果我們直接單擊紅色按鈕會強制關閉程序,瀏覽器就無法打印關閉監聽信息,再次查看控制臺打印效果。

1684313011268.image

  將自定義的Servlet組件配置類ServletConfig全部注釋并重啟項目后,自定義的Servlet、Filter、Listener組件仍然生效。出現這種情況的主要原因是:嵌入式Servlet容器對Servlet、Filter、Listener組件進行了自動化識別和配置,而自定義的Servlet、Filter、Listener都繼承/實現了對應的類/接口,同時自定義的Servlet、Filter、Listener組件都使用了@Component注解,這些組件會被自動掃描為Spring組件。

  使用ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean組件組裝配置的根本目的是對一些請求路徑和參數進行初始化設置和組裝。假設沒有組件注冊類,那么自定義Servlet雖然生效,但無法確定是哪個訪問路徑生效。自定義的Filter會對所有的請求都進行過濾,不會出現選擇性過濾的情況。而自定義的Listener則沒有太大影響,因為定制該組件基本不需要設置什么參數。

  五. 路徑掃描整合Servlet三大組件

  在Spring Boot中,使用路徑掃描的方式整合內嵌式Servlet 容器的Seviet Fiter 、Lste三大組件時,首先需要在自定義組件上分別添加WebSevle. @WebFiter和Weblistene注解進行聲明,并配置相關注解屬性,然后在項目主程序啟動類上使用@SerletComponentScan注解開啟組件掃描即可。

  1.使用路徑掃描方式整合Servlet、Filter、Listener。

  為了簡化操作,在上小節自定義組件的基礎上,我們使用路徑掃描的方式來實現Servlet容器的Servlet、Filter、Listener三大組件的整合。

  為了避免與之前編寫的使用組件注冊的方式相互干擾,先將之前自定義的Servlet組件配置類ServletConfig全部注釋掉,同時注釋掉自定義Servlet、Filter、Listener三大組件類上的@Component注解。

  注釋掉自定義MyServlet組件類上的@Component注解,在MyServlet組件中使用@WebServlet注解聲明并配置相關屬性。 

/** 自定義Servlet類 /
//@Component
@WebServlet("/annotationServlet")
public class MyServlet extends HttpServlet {
// ...
}
然后注釋掉自定義MyFilter組件類上的@Component注解,在MyFilter組件中使用@WebFilter注解聲明并配置相關屬性。
/* 自定義Filter類 /
//@Component
@WebFilter(value = {"/annotationLogin", "/annotationMyFilter"})
public class MyFilter implements Filter {
// ...
}
注釋掉自定義MyListener組件類上的@Component注解,在MyListener組件中使用@WebListener注解聲明并配置相關屬性。
/* 自定義Listener類 */
//@Component
@WebListener
public class MyListener implements ServletContextListener {
// ...
}

  使用相關注解配置好自定義三大組件后,需在項目主程序啟動類上添加@ServletComponentScan注解,開啟基于注解方式的Servlet組件掃描支持。  

package com.cy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@ServletComponentScan // 開啟基于注解方式的Servlet組件掃描支持
@SpringBootApplication
public class Chapter05Application {
public static void main(String[] args) {
SpringApplication.run(Chapter05Application.class, args);
}
}

  2.效果測試

  啟動項目,項目啟動成功后查看控制臺打印效果。

1684313030633.image

  然后我們在瀏覽器上進行測試。

1684313047724.image

  接著在瀏覽器上查看控制臺打印效果。

1684313058518.image

  單擊IDEA工具控制臺左側的[Exit]按鈕關閉當前項目,再次查看控制臺打印效果。

1684313071128.image

  六. 回顧總結

  關于Spring Boot整合Servlet三大組件,小編就給大家分享完了。首先,小編給大家介紹了SpringBoot框架整合Servlet、Filter和Listener三大核心組件;然后介紹了通過SpringBoot路徑掃描整合Servlet三大組件的實現方式;最后我們通過功能測試驗證是否整合成功。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
久久久久国色AV∨免费看| 久久精品国产亚洲AV瑜伽| 久久精品国产亚洲AV日韩| 蜜桃传媒一区二区亚洲AV | 亚洲另类无码一区二区三区| 中文成人久久久久影院免费观看| 把腿张开我要cao死你在线观看 | ぱらだいす天堂中文网.WWW| 国产精品久久久久久AV| 久久久国产精品消防器材| 人妻少妇-嫩草影院| 亚洲AV成人网站在线播放| 在线中文天堂最新版WWW| 大学生酒店呻吟在线观看| 狠狠躁天天躁男人| 欧美黑人巨大VIDEOS极品| 无码专区一ⅤA亚洲V专区在线| 亚洲综合小说另类图片五月天 | 大量潮喷潮喷极限高H| 果冻传媒MV免费播放在线观看| 男女高潮免费观看无遮挡| 为老公升职我主动奉献的句子说说 | 欧美黑人性爱视频 | 韩国免费A级作爱片视频| 女的用嘴巴吃鸡会得HPV| 无码中文字幕VA精品影院| 中文字幕人妻被公上司喝醉在线| 隔着衣服吃你的小尖尖作文| 久久精品国产亚洲AV麻豆软件| 人妻熟女一区二区AⅤ| 亚洲国产成人无码精品| 草草浮力院禁止18进入| 精品一区二区三区国产在线观看| 日本XXXX色视频在线观看免费,| 亚洲AV无码一区二区三区鸳鸯影 | 51精产国品一二三产区区| 国产精品女上位好爽在线| 免费观看的AV毛片的网站| 无码网站天天爽免费看视频| 69国产成人精品午夜福中文| 国产又大又硬又粗| 青草青草视频2免费观看| 亚洲精品AAA揭晓| 粗大挺进尤物人妻中文字幕| 久久水蜜桃亚洲AV无码精品| 我趁老师喝醉后玩弄她的身体| 中文人妻无码一区二区三区| 国产精品爽爽VA在线观看无码| 男女作爱全部免费观爱| 亚洲AV永久无码国产精品久久| 爱情岛论坛线路一官方网站 | 97在线视频人妻无码| 国内精品久久久久精品| 日韩久久无码免费毛片软件| 一本色道久久HEZYO无码| 国产精品美女久久久免费| 欧洲无人区卡一卡二卡三| 亚洲欧美一区二区成人片牛牛 | CHINESE裸体男野外GAY| 精品无码AV一区二区三区不卡 | 野花韩国在线观看免费版5| 国产精品久久久久9999| 翘臀后进呻吟喷水的少妇| 一本久久综合亚洲鲁鲁五月天| 国产欧美一区二区精品性色 | 免费 成 人 黄 色 网站69| 亚洲AV无码一区二区三区在线播| 成人免费无码H黄网站WWW| 妺妺窝人体色www聚色窝图| 亚洲国产五月综合网| 国产福利无码一区在线| 人妻精品久久无码区| 玉蒲团之玉女心经| 好男人无码内射AV| 无码国内精品人妻少妇| 被下春药爽翻天按摩的人妻| 蜜乳AV一区二区三区四区| 亚洲欧美成人综合久久久| 国产精品99久久久久久宅男| 人人妻人人澡人人爽人人| 中文亚洲爆乳AV无码专区 | 亚洲色欲久久久久综合网| 国产群交视频一区二区三区铁牛| 色婷婷五月综合激情中文字幕| A狠狠久久蜜臀婷色中文网 | 国产无套中出学生姝| 手机免费AV片在线播放| 成 人 网 站 在线 看 免费| 欧美ZC0O人与善交的最新章节| 一二三四免费中文在线| 精品少妇av无码美人妻| 亚洲AV无码男人的天堂| 国产精品一国产精品| 少妇精品久久久一区二区三区 | 国内精品国产三级国产AV| 无码播放一区二区三区| 丰满熟妇大号BBWBBWBBW| 强制高潮18XXXXHD日韩| 97国产精华最好的产品亚洲 | 少妇粉嫩小泬喷水视频在线观看| X姓女RAPPER的首次亮相| 欧美成人VA免费看视频| 97SE亚洲国产综合自在线不卡| 老司机亚洲精品影院| 英语老师没戴套让我C了一节课| 精品无码人妻夜人多侵犯18| 亚洲国产成人精品无码一区二区| 国产又大又粗又黄又爽白丝| 亚洲AⅤ无码日韩AV无码网站| 国产精品人成在线播放新网站| 无码AV大香线蕉| 国产精品久久久爽爽爽麻豆色哟哟 | 免费AV一区二区三区无码| 中国熟妇色XXXX欧美老妇多毛| 久久亚洲AV永久无码精品| 又粗又大又硬毛片免费看| 狂猛欧美激情性XXXX大豆行情| 一本到高清视频在线观看丶| 久久久一本精品99久久精品66| 艳妇乳肉豪妇荡乳| 久青草国产97香蕉在线视频 | 免费国产成人高清在线视频 | 欧洲成人午夜精品无码区久久 | 52色擼99热99RE超碰| 欧美成人精品高清视频在线观看| 99热成人精品热久久6| 欧美在线一区二区三区| 成年女人免费碰碰视频| 少妇丰满大乳被男人揉捏视频| 国产AV一区二区三区天堂综合网| 少妇无码一区二区二三区| 国产成人亚洲精品青草| 性AV盈盈无码天堂| 好男人影视官网在线WWW| 亚洲熟妇色自偷自拍另类| 老熟妇毛茸茸BBW视频| 18成禁人视频免费网站| 破外女第一次出血毛片免费| 大陆极品少妇内射AAAAA| 无码少妇丰满熟妇一区二区| 激情五月综合 香亚洲| 一本一道波多野结衣一区| 免费无遮挡很爽很污很黄的网站| AV无码久久久久久不卡网站 | 成人无码H免费动漫在线观看| 日韩无码视频二区| 国产乱理伦片在线观看夜| 亚洲国产丝袜精品一区| 老头老太太GMBGMBGM| JAPANESE人妻少妇HD| 熟女性饥渴一区二区三区| 国产亚洲日韩AV在线播放不卡| 亚洲日本中文字幕乱码在线电影| 麻豆AV一区二区天美传媒| 八戒福利WWW资源在线观看| 双飞两个丰满少妇11P| 韩漫画免费网站在线观看| 伊伊人成亚洲综合人网香| 全棵女性艺术写真| 国产精品国产三级国产AV浪潮| 亚洲精品午睡沙发系列| 女被啪到深处喷水GIF动态视频| 大豆期货交易价格| 亚洲XXX午休国产熟女屁| 蜜桃av秘 无码一区二区三区| 博士用模型查出医院多收10万| 无码中文字幕加勒比一本二本| 久久精品亚洲精品无码白云TV| A一区二区三区乱码在线 | 欧| 四虎库影必出精品8848| 精品熟人妻一区二区三区四区不卡| 中文字幕亚洲无线码| 少女のトゲ在线观看动漫| 精品久久国产综合婷婷五月| 99久久国语露脸精品国产| 婷婷色婷婷深深爱播五月| 久久久久精品电影一区二区三区| JK女自慰下面爆浆喷水| 五月天国产亚洲AV麻豆| 麻豆视传媒官网免费观看| 高清毛茸茸的中国少妇| 亚洲色成人网站www观看入口| 青青草视频 成人| 国产真实强被迫伦姧女在线观看| 中国凸偷窥XXXX自由视频| 十八禁动漫露内裤扒开腿视频风险 | 高潮娇喘抽搐喷水潮喷视频网站| 亚洲AV日韩AV高潮喷潮无码天| 男人放进女人里面叫什么| 国产精品无码一区二区三区| 中文亚洲AV片在线观看不卡| 天天爽天天狠久久久综合麻豆| 久久九九久精品国产免费直播| 成人精品动漫一区二区| 亚洲色偷偷综合亚洲AV色欲| 日本熟妇裸交ⅩXX视频全过程| 精品国产AⅤ无码一区二区| 超碰97久久国产精品牛牛| 亚洲色大18成人网站WWW在线| 日韩国产成人无码AV毛片|