Spring-Boot注册web三大组件Servlet、Filter和 Listener
Spirng-Boot 注册servlet
创建一个config.java文件
package com.xlh.config;
import com.xlh.servelet.MyServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyConfig {
@Bean
public ServletRegistrationBean servletBean(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
servletRegistrationBean.setServlet(new MyServlet());
servletRegistrationBean.setName("myServlet");
servletRegistrationBean.addUrlMappings("/my");
return servletRegistrationBean;
}
}
创建一个servlet.java测试我们的前面写的config文件是否管用
package com.xlh.servelet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get被调用了");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service被调用了");
}
}
最后通过controller层来访问路径查看Servlet的doGet和doPost方法是否被调用
Spirng-Boot 注册Filter
创建一个Filter config文件
@Bean
public FilterRegistrationBean filterBean(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setName("myFilter");
filterRegistrationBean.setFilter(new MyFilter());
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
创建一个MyFilter.java文件
package com.xlh.servelet;
import javax.servlet.*;
import java.io.IOException;
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("经过过滤器");
filterChain.doFilter(servletRequest,servletResponse);
}
}
Spirng-Boot 注册Listener
创建一个Listener config文件
@Bean
public ServletListenerRegistrationBean configContextListener() {
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean();
bean.setListener(new ConfigContextListener());
return bean;
}
创建一个Listener.java文件
package com.xlh.servelet;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ConfigContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("config context 监听开启");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("java context 销毁");
}
}