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>。