springboard2-注入Web原生组件(Servlet,Filter,Listene)
1.使用Servlet 原生API
@WebServlet
import javax.servlet.annotation.WebServlet;
@WebServlet("/my")//直接响应,拦截器不会进行拦截
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("6666");
}
}
为了使请求能够生效,需要在启动类添加注解:@ServletComponentScan(basePackages = "com.tguigu.admin"):扫描这个文件下的里面的@WebServlet注解
@WebFilter(urlPatterns={"/css/*","/images/*"}):拦截器
package com.tguigu.admin.servlet; import lombok.extern.slf4j.Slf4j; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; @Slf4j @WebFilter(urlPatterns = {"/css/*","/images"})//拦截器拦截 public class MyFilter implements Filter { /** * 初始化 * @param filterConfig * @throws ServletException */ @Override public void init(FilterConfig filterConfig) throws ServletException { log.info("Myfilter初始化..."); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { log.info("Myfilter工作..."); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { log.info("Myfilter销毁..."); } }
@WebListener:监听器
package com.tguigu.admin.servlet; import lombok.extern.slf4j.Slf4j; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; @Slf4j @WebListener//说明这是一个监听器 public class MyServletContextListener implements ServletContextListener { // 监听当前项目初始化 @Override public void contextInitialized(ServletContextEvent sce) { log.info("监听项目初始化能完成"); } // 监听当前项目销毁 @Override public void contextDestroyed(ServletContextEvent sce) { log.info("监听项目销毁"); } }
2、使用RegistrationBean
不使用@WebListener,@WebFilter,@WebServlet,使用ServletRegistrationBean,、FilterRegistrationBean, 、ServletListenerRegistrationBean,通过配置类完成,上面那几个类还是要写
package com.tguigu.admin.servlet; 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 MyRegisiConfig { @Bean public ServletRegistrationBean myservlet(){ MyServlet myServlet = new MyServlet(); return new ServletRegistrationBean(myServlet,"/my","/my02"); } @Bean public FilterRegistrationBean myFilter(){ MyFilter myFilter = new MyFilter(); //return new FilterRegistrationBean(myFilter,myservlet());//拦截myservlet()的路径(第一种方式) //第二种方式 FilterRegistrationBean bean = new FilterRegistrationBean(myFilter); bean.setUrlPatterns(Arrays.asList("/my","/my02"));//拦截路径 return bean; } @Bean public ServletListenerRegistrationBean myListener(){ MyServletContextListener myServletContextListener = new MyServletContextListener(); return new ServletListenerRegistrationBean(myServletContextListener);//监听器 } }

浙公网安备 33010602011771号