第一步:编写三大组件的类
Servlet
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 {
resp.getWriter().write("hello Servlet!");
}
}
Filter
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void destroy() {}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("filter execute");
filterChain.doFilter(servletRequest,servletResponse);
}
}
Listener
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized...web应用启动");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("contextInitialized...web应用销毁");
}
}
第二步:编写配置类,注册三大组件的配置
@Configuration
public class MyServerConfig {
//注册三大组件
@Bean
public ServletRegistrationBean myServlet(){
ServletRegistrationBean<Servlet> servletServletRegistrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");
return servletServletRegistrationBean;
}
@Bean
FilterRegistrationBean myFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new MyFilter());
filterRegistrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
return filterRegistrationBean;
}
@Bean
public ServletListenerRegistrationBean servletListenerRegistrationBean(){
ServletListenerRegistrationBean<MyListener> servletListenerRegistrationBean = new ServletListenerRegistrationBean<MyListener>(new MyListener()) ;
return servletListenerRegistrationBean;
}
}
在SpringBoot中也有类似的例子,就是DispatcherServletAutoConfigurationr里面有dispatcherServletRegistration方法就是配置了SpringMVC的前端控制器,Ctrl点击getPath()可以看到配置前端控制器拦截的路径为“/”,
1.代表拦截所有的请求包括静态资源,但是不包括jsp请求
2.也从这个方法可以知道SpringBoot2.0可以在通过配置WebMvcProperties这个属性类来配置SpringMVC