整合Servlet
方式1
1.在cn.nshima.springboot.servlet包下创建ServletDemo类,继承HttpServlet
。
@WebServlet(name = "servletDemo", urlPatterns = "/sd")
public class ServletDemo extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response){
System.out.println("ServletDemo...");
try {
super.doGet(request,response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.在主启动类上添加@ServletComponentScan
注解,让容器扫描到ServletDemo。
现在,浏览器发来/sd
请求就会被ServletDemo处理。
方式2
1.在cn.nshima.springboot.servlet包下创建ServletDemo类,继承HttpServlet
。
public class ServletDemo extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response){
System.out.println("ServletDemo...");
try {
super.doGet(request,response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.在cn.nshima.springboot.config包下创建MyConfig配置类
@Configuration
public class MyConfig {
@Bean
public ServletRegistrationBean<ServletDemo> getServletRegistrationBean(){
ServletRegistrationBean<ServletDemo> bean = new ServletRegistrationBean<>(new ServletDemo(),"/abc");
return bean;
}
}
达到了与方式1一样的效果
整合Filter
与整合Servlet相似,整合Filter也有两种方式
方式1
1.创建一个类,继承javax.servlet.Filter
类,并设置要过滤的url。
@WebFilter(filterName = "filterDemo", urlPatterns = "/*")
public class FilterDemo implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("init...");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("doFilter...");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
System.out.println("destroy...");
}
}
2.在主启动类上加上@ServletComponentScan
注解,让容器扫描到FilterDemo.
方式2
在配置类中注入FilterRegistrationBean
,与整合Servlet的方式2相似
@Configuration
public class MyConfig {
@Bean
public FilterRegistrationBean<FilterDemo> getFilterRegistrationBean(){
FilterRegistrationBean<FilterDemo> bean = new FilterRegistrationBean<>(new FilterDemo());
return bean;
}
}
整合Listener
方式1
1.创建ListenerDemo ,继承了ServletContextListener
,可以监听容器的创建与销毁
@WebListener
public class ListenerDemo implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("servlet context initialized");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("servlet context destroyed");
}
}
2.在主启动类上加上@ServletComponentScan
注解
方式2
在配置类中注入ServletListenerRegistrationBean
bean
@Configuration
public class MyConfig {
@Bean
public ServletListenerRegistrationBean<ListenerDemo> getServletListenerRegistrationBean(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean();
bean.setListener(new ListenerDemo());
return bean;
}
}
总结
整合Servlet、Filter、Listener其实就是将它们加入到容器中,与注入普通Bean的方式相似。
版权声明:本文为ZdragonW原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。