Web原生组件(Servlet、Filter、Listener)的注入
1、使用Servlet API(原生注解方式注入)
1.1、拦截器:@WebServlet
@ServletComponentScan(basePackages = “com.study.admin”) :指定原生Servlet组件都放在那里
@WebServlet(urlPatterns = “/my”):效果:直接响应,没有经过Spring的拦截器?
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;
@WebServlet(urlPatterns = "/my")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("666666");
}
}
1.2、过滤器:@WebFilter(urlPatterns={"/css/","/images/"})
1.3、监听器:@WebListener
2、spring方式注入原生组件
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Arrays;
@Configuration
public class MyRegisterConfig {
//拦截器
@Bean
public ServletRegistrationBean myServlet(){
MyServlet myServlet = new MyServlet();
return new ServletRegistrationBean(myServlet,"/my","/my02");
}
//过滤器
@Bean
public FilterRegistrationBean myFilter(){
MyFilter myFilter = new MyFilter();
FilterRegistrationBean<MyFilter> myFilterFilterRegistrationBean =
new FilterRegistrationBean<>(myFilter);
myFilterFilterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*"));
return myFilterFilterRegistrationBean;
}
//监听器
@Bean
public ServletListenerRegistrationBean myListener(){
MyServletContextListener myServletContextListener = new MyServletContextListener();
return new ServletListenerRegistrationBean(myServletContextListener);
}