文件结构:
一、注解方式:
1) 添加TestServlet类(继承HttpservletServlet),TestFilter类(实现Filter接口),TestListener(实现ServletContextListener接 口)
并添加相应的注解 @WebServlet(urlPatterns = "/servlet"),@WebFilter(urlPatterns = "/*"),@WebListener
//servlet3.0的注解,在springboot中添加ServletRegistrationBean就可以了,不用该注解
@WebServlet(urlPatterns = "/servlet")
public class TestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("testservlet");
}
}
//servlet3.0的注解,在springboot中添加ServletRegistrationBean就可以了,不用该注解
@WebFilter(urlPatterns = "/*")
public class TestFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("testfilter");
//放行
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
//servlet3.0的注解,在springboot中添加ServletRegistrationBean就可以了,不用该注解
@WebListener
public class TestListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("启动了");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("关闭了");
}
}
2)在Config配置类中开启扫描Servlet注解 @ServletComponentScan
@SpringBootApplication
@ServletComponentScan
public class AppConfig {
public static void main(String[] args) {
SpringApplication.run(AppConfig.class, args);
}
}
打开服务器:访问localhost/servlet后控制台输出如下
二、在Config配置类中Bean方法实现(注意,这时不要在Serlvet,Filter,Listener类中添加Serlvet注解)
1)编写Serlvet,Filter,Listener类,与上面相同
2)Config配置类添加Bean方法
@SpringBootApplication
@ServletComponentScan
public class AppConfig {
public static void main(String[] args) {
SpringApplication.run(AppConfig.class, args);
}
//通过springboot方式把Filter等类添加到spring容器中,此时不需要在setvlet添加3.0注解
@Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean bean =new FilterRegistrationBean();
bean.setFilter(new TestFilter());
bean.addUrlPatterns("/*");
return bean;
}
//通过springboot方式把sevlet等类添加到spring容器中,此时不需要在setvlet添加3.0注解
@Bean
public ServletRegistrationBean servletRegistrationBean(){
ServletRegistrationBean bean= new ServletRegistrationBean();
bean.setServlet(new TestServlet());
bean.addUrlMappings("/servlet");
return bean;
}
//通过springboot方式把sevletListener等类添加到spring容器中,此时不需要在setvlet添加3.0注解
@Bean
public ServletListenerRegistrationBean<TestListener> servletListenerRegistrationBean(){
ServletListenerRegistrationBean<TestListener> bean=new ServletListenerRegistrationBean<>();
bean.setListener(new TestListener());
return bean;
}
}
3)访问方式与输出与方法一相同