《Spring实战》摘录 - 12

111

问题: #6.3.1-1 | 配TilesConfigurer来解析定义 回答:

@Bean
public TilesConfigureer tilesConfigurer(){
        TilesConfigurer tiles = new TilesConfigurer();
        tiles.setDefinitions(new String[] {
                “/WEB-INF/layout/titles.xml”
        });

        titles.setCheckRefresh(true);
        return tiles;
}

112

问题: #6.3.1-2 | Apache Tile中的DTD是什么 回答: Apache Tiles提供了一个文档类型定义(document type definition,DTD)

113

问题: #7.1.1-1 | 如果计划使用Servlet 3.0对multipart配置的支持,那么需要使用什么来开启multipart请求 回答: DispatcherServlet的registration,那么需要使用DispatcherServlet的registration来启用multipart请求

114

问题: #7.1.2-1 | 如何创建WebApplicationInitializer实现并注册一个Servlet 回答: 通过实现WebApplicationInitializer来注册Servlet

package com.myapp.config;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic;
import org.springframework.web.WebApplicationInitializer;
import com.myapp.MyServlet;

public class MyServletInitializer implements WebApplicationInitializer{
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException{
            Dynamic myServlet = servletContext.addServlet(“myServlet”, MyServlet.class);
                myServlet.addMapping(“/custom/**”);
        }
}

115

问题: #7.1.3-1 | 在web.xml中搭建Spring MVC 回答:

<?xml version="1.0" encoding="utf-8"?>
<web-app version="2.5"
    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">
        
        <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/spring/root-context.xml</param-value> //设置根上下文配置文件位置
        </context-param>
    
        <listener>
                <listener-class>
                        org.springframework.web.context.ContextLoaderListener //注册ContextLoader-Listener
                </listener-class>
        </listener>
    
        <servlet>
                <servlet-name>appServlet</servlet-name>
                <servlet-class>
                        org.springframework.web.servlet.DispatcherServlet //注册Dispatcher-Servlet
                </servlet-class>
                <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
                <servlet-name>appServlet</servlet-mapping> //将DispatcherServlet映射到"/"
                <url-pattern>/</url-pattern>
        </servlet-mapping>
</web-app>

116

问题: #7.1.3-1 | 要在Spring MVC中使用基于Java的配置,我们需要告诉DispatcherServlet和ContextLoaderListener使用AnnotationConfigWebApplicationContext,该类的作用? 回答: 这是一个WebApplicationContext的实现类,它会加载Java配置类,而不是使用XML。要实现这种配置,我们可以设置contextClass上下文参数以及DispatcherServlet的初始化参数。

117

问题: #7.1.3-4 | 设置web.xml使用基于Java的配置 回答:

<?xml version="1.0" encoding="utf-8"?>
<web-app version="2.5"
    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">
        
        <context-param>
                <param-name>contextClass</param-name> //使用Java配置
                <param-value>
                        org.springframework.web.context.support = AnnotationConfigApplicationContext
                </param-value>
        </context-param>    
    
        <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>
                        com.habuma.spitter.config.RootConfig   //指定配置类
                </param-value>
        </context-param>
    
        <listener>
                <listener-class>
                        org.springframework.web.context.ContextLoaderListener //注册ContextLoader-Listener
                </listener-class>
        </listener>
    
        <servlet>
                <servlet-name>appServlet</servlet-name>
                <servlet-class>
                        org.springframework.web.servlet.DispatcherServlet //注册Dispatcher-Servlet
                </servlet-class>
                <init-param>
                        <param-name>contextClass</param-name>  //使用Java配置
                        <param-value>
                                org.springframework.web.context.support.AnnotationConfigWebApplicationContext
                        </param-value>
                </init-param>
                <init-param>
                        <param-name>contextConfigLocation</param-name>  //指定DispatcherServlet配置类
                        <param-value>
                                com.habuma.spitter.config.WebConfigConfig
                        </param-value>
                </init-param>
                <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
                <servlet-name>appServlet</servlet-mapping> //将DispatcherServlet映射到"/"
                <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

118

问题: #7.2.1-1 | 从Spring 3.1开始,Spring内置了两个MultipartResolver的实现供我们选择,分别是 回答: CommonsMultipartResolver:使用Jakarta Commons FileUpload解析multipart请求; StandardServletMultipartResolver:依赖于Servlet 3.0对multipart请求的支持(始于Spring 3.1)。

119

问题: #7.2.1-2 | 我们还可以通过其他的构造器来限制上传文件的大小。除了临时路径的位置,其他的构造器所能接受的参数如下 回答: 上传文件的最大容量(以字节为单位)。默认是没有限制的。 整个multipart请求的最大容量(以字节为单位),不会关心有多少个part以及每个part的大小。默认是没有限制的。 在上传的过程中,如果文件大小达到了一个指定最大容量(以字节为单位),将会写入到临时文件路径中。默认值为0,也就是所有上传的文件都会写入到磁盘上。

120

问题: #7.2.1-3 | 假设我们想限制文件的大小不超过2MB,整个请求不超过4MB,而且所有的文件都要写到磁盘中。下面的代码使用MultipartConfigElement设置了这些临界值 回答:

@Override
protected void customizeRegistration(Dynamic registration) {
      registration.setMultipartConfig(
              new MultipartConfigElement("/tmp/spittr/uploads",
                                      2097152, 4194304, 0));
    }

    //如果我们使用更为传统的web.xml来配置MultipartConfigElement的话,那么可以使用<servlet>中的<multipart-config>元素,如下所示:

<servlet>
      <servlet-name>appServlet</servlet-name>
      <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <load-on-startup>1</load-on-startup>
      <multipart-config>
            <location>/tmp/spittr/uploads</location>
            <max-file-size>2097152</max-file-size>
            <max-request-size>4194304</max-request-size>
      </multipart-config>
</servlet>

//<multipart-config>的默认值与MultipartConfigElement相同。与MultipartConfigElement一样,必须要配置的是<location>。

原文发布于微信公众号 - 怀英的自我修炼(hydzwxl)

原文发表时间:2019-03-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券