SpringBoot使用原生Java三大件
配置类 @Configuration(proxyBeanMethods = true) public class RegisterConfig { /** * 注入 Servlet * @return ServletRegistrationBean */ @Bean public ServletRegistrationBean<Servlet_> servlet_() { Servlet_ servlet_ = new Servlet_(); return new ServletRegistrationBean<>(servlet_, "/servlet"); } /** * 注入 Filter * @return FilterRegistrationBean */ @Bean public FilterRegistrationBean<Filter_> filter_() { Filter_ filter_ = new Filter_(); FilterRegistrationBean<Filter_> filterRegistrationBean = new FilterRegistrationBean<>(); filterRegistrationBean.setFilter(filter_); filterRegistrationBean.setUrlPatterns(Arrays.asList("/zk/*", "/image/*")); return filterRegistrationBean; } /** * 注入 Listener * @return ServletListenerRegistrationBean */ @Bean public ServletListenerRegistrationBean<Listener_> listener_(){ Listener_ listener_ = new Listener_(); return new ServletListenerRegistrationBean<>(listener_); } } Servlet public class Servlet_ extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("hi, servlet!"); } } Listener public class Listener_ implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("contextInitialized---监听器初始化"); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("contextInitialized---监听器摧毁"); } } Filter public class Filter_ implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("filter_--init"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("filter_--doFilter"); // 方便观察 URI HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; System.out.println("uri = " + request.getRequestURI()); filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { System.out.println("filter_--destroy"); } } 代码解读 RegisterConfig 类使用 @Configuration 注解,表示这是一个配置类。 servlet_ 方法注册了一个 Servlet_ 实例到 /servlet 路径。 filter_ 方法注册了一个 Filter_ 实例,过滤器应用于 /zk/* 和 /image/* 路径。 listener_ 方法注册了一个 Listener_ 实例。 Servlet_ 类继承自 HttpServlet,重写了 doGet 方法,返回简单的文本响应。 Listener_ 类实现了 ServletContextListener 接口,提供了上下文初始化和销毁的处理逻辑。 Filter_ 类实现了 Filter 接口,提供了过滤器的初始化、过滤和销毁逻辑,并在 doFilter 方法中打印请求的 URI。
