4.10 整合Servlet、Filter和Listener
- 1. 启动类
- 1. 整合Servlet
- 2. Filter过滤器
- 3. Listener监听器
- 4. 总结
- 5. JavaWeb三大组件
- ****************************************************
一般情况下,使用Spring、Spring MVC这些框架之后,基本上就告别Servlet、Filter以及Listener 了,但是有时在整合一些第三方框架时,可能还是不得不使用Servlet,比如在整合某报表插件时就需要使用Servlet。Spring Boot中对于整合这些基本的Web组件也提供了很好的支持。
1. 启动类
启动类上添加@ServletComponentScan描述
@ServletComponentScan
public class RuoYiApplication {
public static void main(String[] args) {
...
}
}
1. 整合Servlet
import org.springframework.stereotype.Component;
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;
/**
* 整合Servlet测试
* 接口url:/my
*/
//@Component
@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 {
//打印name参数
System.out.println("MyServlet>>" + req.getParameter("name"));
}
}
2. Filter过滤器
package com.ruoyi.web.servlet.config;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/**
* 过滤器
* WebFilter指定过滤请求
*/
@WebFilter("/*")
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//每次有请求时执行
System.out.println("MyFilter>>doFilter");
//请求放行
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//项目启动时执行
System.out.println("MyFilter>>init");
}
@Override
public void destroy() {
System.out.println("MyFilter>>destroy");
}
}
3. Listener监听器
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
/**
* 自定义监听器
*/
@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");
}
}
4. 总结
- 这里定义了三个基本的组件,分别使用@WebServlet、@WebFilter和@WebListener三个注解
进行标记。 - 这里以ServletRequestListener为例,但是对于其他的Listener,例如HttpSessionListener、
ServletContextListener等也是支持的。
5. JavaWeb三大组件
JavaWeb三大组件