【尚硅谷】SpringBoot2零基础入门教程-讲师:雷丰阳
笔记
路还在继续,梦还在期许
1、使用原生Servlet API
推荐使用原生Servlet API 这种方式
1.1、Servlet
使用 Servlet 3.0 版本以上提供的原生注解。
@WebServlet(urlPatterns = “/my”)
效果:不需要在web.xml写配置,直接响应,没有经过Spring的拦截器,urlPatterns :访问路径。
在主配置类中指定扫描原生Servlet组件的包:@ServletComponentScan(basePackages = “com.atguigu.admin.servlet”),不写得话,就默认扫描组配置类下所有的包。
@WebServlet(urlPatterns = "/my")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("6666");
}
}
1.2、Filter
使用 Servlet 3.0 版本以上提供的原生注解。
@WebFilter(urlPatterns={“/css/“,”/images/”})
效果:不需要在web.xml写配置,urlPatterns:拦截路径,可以拦截多个路径。
@WebFilter(urlPatterns={"/my"})
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("MyFilter初始化完成");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("MyFilter工作");
chain.doFilter(request, response);
}
@Override
public void destroy() {
System.out.println("MyFilter销毁");
}
}
1.3、Listener
使用 Servlet 3.0 版本以上提供的原生注解。
@WebListener
@WebListener
public class MyServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("监听项目初始化完成");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("监听项目销毁");
}
}
1.4、原生servlet没有被拦截器拦截得原因
系统内有两个 Servlet (spring boot:DispatcherServlet–>/ 和 MyServlet -->/my )
1.5、扩展:DispatchServlet 如何注册进来
● 容器中自动配置了 DispatcherServlet 属性绑定到 WebMvcProperties;对应的配置文件配置项是 spring.mvc。
● 通过 ServletRegistrationBean 把 DispatcherServlet 配置进来。
● 默认映射的是 / 路径。
在之前使用Tomcat-Servlet做开发,多个servlet路径相互重叠,多个Servlet都能处理到同一层路径,使用精确优选原则。
举例:
两个路径
A: /my/
B: /my/1
如果发送的是 /my/1 ,那就会使用B路径,如果发送的是 /my/2 使用A路径。文章来源:https://www.toymoban.com/news/detail-419198.html
2、使用RegistrationBean
还可以使用 ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean 来组件注册。文章来源地址https://www.toymoban.com/news/detail-419198.html
@Configuration
public class MyRegistConfig {
// servlet
@Bean
public ServletRegistrationBean myServlet() {
MyServlet servlet = new MyServlet();
return new ServletRegistrationBean<MyServlet>(servlet, "/my");
}
// filter
@Bean
public FilterRegistrationBean myFilter() {
MyFilter myFilter = new MyFilter();
FilterRegistrationBean filter = new FilterRegistrationBean(new MyFilter());
filter.setUrlPatterns(Arrays.asList("/my"));
return filter;
}
// listener
@Bean
public ServletListenerRegistrationBean myListener() {
MyServletContextListener listener = new MyServletContextListener();
return new ServletListenerRegistrationBean(listener);
}
}
到了这里,关于16、Web原生组件注入(Servlet、Filter、Listener)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!