前期回顾:
-
整合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 lombok.extern.slf4j.Slf4j;
@Slf4j
@WebServlet("/servlet")
public class CustomServlet 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 {
super.doPost(req, resp);
log.info("in CustomServlet");
}
}
Servlet是运行在服务器上的一个小程序。Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。这个过程为:客户端发送请求到服务器,服务器启动并调用对应的Servlet,Servlet根据客户端请求生成响应内容将其传给服务器,服务器将响应返回客户端。
- 整合Filter(过滤器)
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@WebFilter("/*")
public class CustomFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("==========in CustomFilter init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
log.info("in CustomFilter doFilter");
filterChain.doFilter(servletRequest,servletResponse );
}
@Override
public void destroy() {
log.info("in CustomFilter destroy");
}
}
Filter是客户和服务端中间的一道滤网,可通过其对请求的参数、响应等进行统一的处理,其中doFilter方法控制了请求是否继续执行,可以在这个方法中进行一些验证,如果验证通过可通过filterChain.doFilter方法来放行。@WebFilter("/*")可标注哪些路径会进入此过滤器。
- 整合Listener(监听器)
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
import com.lei.tang.demo.service.log.LogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@Slf4j
@WebListener
public class CustomListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
log.info("in CustomListner requestDestroyed");
}
@Override
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
log.info("in CustomListner requestInitialized");
}
}
监听器可用于监听Web应用中的某些对象的创建、销毁、增加、修改、删除等动作的发生。实现不同的接口监听不同的对象。
- 实现HttpSessionListener监听session状态:sessionCreated(创建);sessionDestroyed(销毁)
- 实现HttpSessionAttributeListener监听session属性:attributeAdded(增加);attributeRemoved(移除);attributeReplaced(修改)
- 实现ServletContextListener监听上下文状态
- 实现ServletContextAttributeListener监听上下文属性变化
- 实现ServletRequestListener监听请求request状态
- 实现ServletRequestAttributeListener监听请求request属性
在Spring Boot项目中如需要Servlet、Filter和Listener生效,需在启动类上添加@ServletComponentScan注解进行扫描到容器中。
如有不到之处,欢迎各位留言指正,不慎感激。 更多文章: 点击跳转CSDN博客 点击跳转简书博客 公众号:代码小搬运