随笔记
自定义DispatcherServlet配置
定义一个类 ,继承 AbstractAnnotationConfigDispatcherServletInitializer
开始重写 里面的一些方法:
重写 customizeRegistration
方法:
AbstractAnnotationConfigDispatcherServletInitializer
将DispatcherServlet
注册到 Servlet 容器中之后,就会- 调用
customizeRegistration()
方法,并将 Servlet 注册后得到的ServletRegistration.Dynamic
传递 进来。 - 通过重写此方法,可以对 DispatcherServlet 进行
额外配置
。
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
// 对 multipart 的支持
registration.setMultipartConfig(
new MultipartConfigElement("/tmp/test/uploads")
);
}
registration.setLoadOnStartup()
:设置 load-on-startup 优先级。registration.setInitParameter()
:设置初始化参数。
添加 Filter 和 其他 Servlet
想往 Web 容器中注册其他组件,需要创建一个新的初始化器,最简单的方式就是 实现 Spring 的WebApplicationInitializer
接口
public class MyServletInit implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
// 注册 自己的 Servlet
ServletRegistration.Dynamic myServlet = servletContext.addServlet("myServlet", MyServlet.class);
// 为 servlet 添加 映射
myServlet.addMapping("/custom/***");
// 注册 自己的 Filter
FilterRegistration.Dynamic myFilter = servletContext.addFilter("myFilter", MyFilter.class);
// 为 Filter 添加路径映射
myFilter.addMappingForUrlPatterns(null,false,