SpringBoot定义三大组件Servlet,过滤器Filter,监听器Listener
1.定义组件的配置类:
com.example.mybatis2018.config.MyServletConfig
package com.example.mybatis2018.config;
import com.example.mybatis2018.filter.myFilter;
import com.example.mybatis2018.listener.myListener;
import com.example.mybatis2018.servlte.MyServlet;
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;
import java.util.Collections;
@Configuration
public class MyServletConfig {
//注册Servlet
@Bean
public ServletRegistrationBean MyServlet(){
ServletRegistrationBean<MyServlet> myServletServletRegistrationBean = new ServletRegistrationBean<MyServlet>(new MyServlet(), "/myServlet");
return myServletServletRegistrationBean;
}
//注册过滤器
@Bean
public FilterRegistrationBean myFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new myFilter());//添加过滤器
filterRegistrationBean.setUrlPatterns(Arrays.asList("/myServlet")); //设置过滤路径
return filterRegistrationBean;
}
//注册监听器
public ServletListenerRegistrationBean myListener(){
ServletListenerRegistrationBean servletListenerRegistrationBean = new ServletListenerRegistrationBean();
servletListenerRegistrationBean.setListener(new myListener());//添加过滤器
return servletListenerRegistrationBean;
}
}
2.创建servlet
com.example.mybatis2018.servlte.MyServlet
package com.example.mybatis2018.servlte;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class MyServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter witer = resp.getWriter();
witer.write("hello servler!");
}
}
3.过滤器Filter
com.example.mybatis2018.filter.myFilter
package com.example.mybatis2018.filter;
import javax.servlet.*;
import java.io.IOException;
import java.util.logging.LogRecord;
public class myFilter 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("过滤器执行并放行!");
filterChain.doFilter(servletRequest,servletResponse);//放行
}
@Override
public void destroy() {
}
}
4.监听器Listener
com.example.mybatis2018.listener.myListener
package com.example.mybatis2018.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class myListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("servletContext 对象创建。。。。");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("servletContext 对象销毁。。。。");
}
}