SpringBoot整合Servlet和Filter和Listener組件詳解
整合Servlet、Filter和Listener
一般情況 下,使用Spring、Spring MVC這些框架之后,基本上就告別Servlet、Filter以及Listener了。
但是有時在整合一些第三方框架時,可能還是不得不使用Servlet, 比如在整合某報表插件時就需要使用Servlet。
Spring Boot中對于整合這些基本的Web組件也提供了很好的支持。
在一個Spring Boot Web項目中添加如下三個組件: (import javax.servlet.*; 下的類)
@WebServlet("/my")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("name>>>" + req.getParameter("name"));
}
}
@WebFilter("/*")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("MyFilter>>>init");
}
@Override
public void destroy() {
System.out.println("MyFilter>>>doFilter");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("MyFilter>> >destroy");
}
}
@WebListener
public class MyListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("MyListener>>> requestDestroyed");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("MyListener>> > requestInitialized");
}
}
代碼解釋:
- 這里定義了 三個基本的組件,分別使用@WebServlet、@WebFilter 和@WebListener三個注解進行標記。
- 這里以 ServletRequestListener為例,但是對于其他的Listener, 例如HttpSessionI istener、ServletContextListener等也是支持的。
在項目入口類上添加@ServletComponentScan注解,實現(xiàn)對Servlet、Filter以及Listener的掃描,代碼如下:
@SpringBootApplication
@ServletComponentScan
public class TestspringbootApplication {
public static void main(String[] args) {
SpringApplication.run(TestspringbootApplication.class, args);
}
}
最后,啟動項目,在瀏覽器中輸入"//localhost:8080/my?name=Michael",可以看到相關(guān)日志。
MyListener>> > requestInitialized
MyFilter>> >destroy
MyListener>>> requestDestroyed
MyListener>> > requestInitialized
MyFilter>> >destroy
MyListener>>> requestDestroyed
到此這篇關(guān)于SpringBoot整合Servlet和Filter和Listener組件詳解的文章就介紹到這了,更多相關(guān)SpringBoot整合Web組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新)
這篇文章主要介紹了IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新),小編測試這種激活工具也適用idea2022以下所有版本,本篇教程整理的比較詳細,匯總了idea各個版本的激活工具,激活方法多種多樣,大家選擇一種即可,感興趣的朋友跟隨小編一起看看吧2022-09-09
IDEA2022創(chuàng)建Maven Web項目教程(圖文)
本文主要介紹了IDEA2022創(chuàng)建Maven Web項目教程,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07
MyBatis-Plus 與Druid 數(shù)據(jù)源操作
SpringBoot框架集成MyBatis-Plus和Druid數(shù)據(jù)源,簡化了數(shù)據(jù)操作與監(jiān)控,MyBatis-Plus作為MyBatis的增強工具,自動實現(xiàn)CRUD操作,減少手寫SQL,提供分頁、邏輯刪除等功能,本文介紹MyBatis-Plus & Druid 數(shù)據(jù)源總結(jié),感興趣的朋友一起看看吧2024-09-09
Spring Cloud負載均衡LoadBalance及實際應用
負載均衡是一種將流量合理分配到多個服務器的技術(shù),可以提高系統(tǒng)的可用性和性能,本文通過一個示例展示了如何使用SpringCloudLoadBalancer實現(xiàn)負載均衡,負載均衡的概念、實現(xiàn)方式以及在SpringCloud中的應用,感興趣的朋友跟隨小編一起看看吧2026-01-01
spring NamedContextFactory實現(xiàn)服務隔離的示例詳解
假設(shè)我們有個場景,我們需要實現(xiàn)服務之間的數(shù)據(jù)隔離、配置隔離、依賴的spring bean之間隔離,大家會有什么實現(xiàn)思路?今天給大家介紹spring-cloud-context里面有個NamedContextFactory可以達到上面的效果,需要的朋友可以參考下2024-05-05

