chapter07_SpringMVC的高级技术_1_SpringMVC配置的替代方案

  • (1) "../第五章 构建Spring Web应用程序/Spring MVC起步.md"中写过,配置DispatcherServlet只需要扩展 AnnotationConfigDispatcherServletInitializer这个类,并重写3个方法

    (2) 重载 customizeRegistration(Dynamic registration)方法,可以对DispatcherServlet进行额外的配置。

    示例

      public class SpitterWebInitializer
      extends AbstractAnnotationConfigDispatcherServletInitializer {
    
          ...
    
          @Override
          protected void customizeRegistration(Dynamic registration) {
    
              registration.setMultipartConfig(new MultipartConfigElement("/", 2097152, 4194304, 0));
          }
      }
    

    这个例子配置了 multipart的支持;在customizeRegistration()方法里面还可以setInitParameter设置初始化参数;setLoadOnStartup()设置启动优先级

  • 在JavaConfig中添加其他的Servlet和Filter

    实现 WebApplicationInitializer接口,即能实现自动添加其他 Servlet和Filter

    示例

      public class MyServletInitializer implements WebApplicationInitializer {
    
          private void registerServletOnStartup(ServletContext servletContext) {
    
              Dynamic tryServlet = servletContext.addServlet("try", TryServletWithJavaConfig.class);
       
              tryServlet.addMapping("/try/*");
         }
    
         private void registerFilterOnStartup(ServletContext servletContext) {
    
              FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encodingFilter", EncodingFilter.class);
      
              encodingFilter.addMappingForUrlPatterns(null, false,
              "/*");
         }
    
         
         public void onStartup(ServletContext servletContext) throws ServletException {
    
             registerServletOnStartup(servletContext);
    
             registerFilterOnStartup(servletContext);
         }
      }
    

    具体的作用类似于在 web.xml中添加 <servlet>,<servlet-mapping>,<filter>等元素

  • 在web.xml中添加各种元素

    示例

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
               version="2.5">
    
          <listener>
              <listener-class>listener.ContextListener</listener-class>
          </listener>
    
          <servlet>
              <servlet-name>tryXml</servlet-name>
              <servlet-class>spittr.servlet.TryServletWithWebXml</servlet-class>
          </servlet>
    
          <servlet-mapping>
              <servlet-name>tryXml</servlet-name>
              <url-pattern>/tryXml</url-pattern>
          </servlet-mapping>
      </web-app>
    

    和不使用Spring时的web.xml内容相同

  • web.xml添加DispatcherServlet:P205

  • 总结

    (1) 在有条件时,尽可能使用扩展AnnotationConfigDispatcherServletInitializer的方法来配置DispatcherServlet

    (2) 添加额外的servlet和filter尽量使用实现WebApplicationInitializer接口的方法

    (3) 实在需要写web.xml,写法和普通的JavaEE相同

    (4) 如果一定要在web.xml中配置DispatcherServlet,写法见P205

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值