在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,
    如果找到的话就用它来配置Servlet容器。 Spring提供了这个接口的实现,名为 SpringServletContainerInitializer,这个类反过来又会查找实现WebApplicationInitializer的类并将配 置的任务交给它们来完成。Spring3.2引入了一个便利的WebApplicationInitializer基础实现,名为 AbstractAnnotationConfigDispatcherServletInitializer,当我们的类扩展了 AbstractAnnotationConfigDispatcherServletInitializer并将其部署到Servlet3.0容器的时候,容器会自 动发现它,并用它来配置Servlet上下文。

    1. package com.atguigu.mvc.config;
    2. import org.springframework.web.filter.CharacterEncodingFilter;
    3. import org.springframework.web.filter.HiddenHttpMethodFilter;
    4. import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
    5. import javax.servlet.Filter;
    6. /**
    7. * @author Dxkstart
    8. * @create 2021-11-15-15:19
    9. */
    10. //web工程的初始化类,用来代替web.xml
    11. public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    12. /**
    13. * 指定spring的配置类
    14. * @return
    15. */
    16. @Override
    17. protected Class<?>[] getRootConfigClasses() {
    18. return new Class[]{SpringConfig.class};
    19. }
    20. /**
    21. * 指定springMVC的配置类
    22. * @return
    23. */
    24. @Override
    25. protected Class<?>[] getServletConfigClasses() {
    26. return new Class[]{WebConfig.class};
    27. }
    28. /**
    29. * (springMVC的前端控制器DispatcherServlet)
    30. * 指定DispatcherServlet的映射规则,即url-pattern
    31. * @return
    32. */
    33. @Override
    34. protected String[] getServletMappings() {
    35. return new String[]{"/"};
    36. }
    37. /**
    38. * 注册过滤器
    39. * @return
    40. */
    41. @Override
    42. protected Filter[] getServletFilters() {
    43. //编码过滤器
    44. CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
    45. characterEncodingFilter.setEncoding("UTF-8");
    46. characterEncodingFilter.setForceRequestEncoding(true);
    47. //HiddenHttpMethodFilter过滤器
    48. HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();
    49. return new Filter[]{characterEncodingFilter,hiddenHttpMethodFilter};
    50. }
    51. }