javascript
Spring MVC-09循序渐进之文件上传(基于Servlet3.0+内置功能)
- 概述
- 測試
- 源碼
概述
Spring MVC-09循序漸進之文件上傳(基于Apache Commons FileUpload)
上篇博文我們說了基于Apache Commons FileUpload的文件上傳,這里我們了解下基于Servlet3.0及其以上版本內(nèi)置的上傳功能。
在Servlet3.0及其以上的版本容器中進行服務(wù)端文件上傳的編程,是圍繞著標(biāo)注類型MultipartConfig和javax.servlet.http.Part接口進行的。 處理已上傳文件的Servlet必須標(biāo)注@MultipartFile
屬性如下
- maxFileSize ,上傳文件的最大容量,默認-1,表示不限制
- maxRequestSize,HTTP請求允許的最大容量,默認-1,表示不限制
- location 表示Part調(diào)用write方法時,上傳的文件保存的位置
- fileSizeThreshold 上傳文件超出這個容量界限時,會被寫入磁盤
Spring MVC 的DispatcherServlet處理大部分或者部分請求,但是如果不修改源碼,將無法對Servle進行標(biāo)注,值得慶幸的是,Servlet3中有一種比較容易的方法,能夠使Servlet變成一個MultipartConfig Servlet,即給部署描述文件(web.xml)中的Servlet聲明賦值。
下面的代碼與用@MultipartConfig給DispatcherServlet進行標(biāo)注的效果是一樣的
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" 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_3_0.xsd"><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/config/springmvc-config.xml</param-value></init-param><load-on-startup>1</load-on-startup> <multipart-config><max-file-size>20848820</max-file-size><max-request-size>418018841</max-request-size><file-size-threshold>1048576</file-size-threshold></multipart-config> </servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- 避免中文亂碼 --><filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>此外,還需要再Spring MVC配置文件中使用一個不同的解析器
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 掃描控制層的注解,使其成為Spring管理的Bean --><context:component-scan base-package="com.artisan.controller" /><!-- 靜態(tài)資源文件 --><mvc:annotation-driven /><mvc:resources mapping="/css/**" location="/css/" /><mvc:resources mapping="/*.jsp" location="/" /><!-- 視圖解析器 --><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean><!--2 注冊上傳 StandardServletMultipartResolver 第二個不需要第三方 jar 包支持,它使用 servlet 內(nèi)置的上傳功能, 但是只能在 Servlet 3 以上的版本使用。 --><!-- SpringMVC上傳文件時,需要配置MultipartResolver處理器 --><bean id="multipartResolver"class="org.springframework.web.multipart.support.StandardServletMultipartResolver"></bean></beans>其余代碼同
Spring MVC-09循序漸進之文件上傳(基于Apache Commons FileUpload)
測試
源碼
代碼已提交到github
https://github.com/yangshangwei/SpringMvcTutorialArtisan
總結(jié)
以上是生活随笔為你收集整理的Spring MVC-09循序渐进之文件上传(基于Servlet3.0+内置功能)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring MVC-09循序渐进之文件
- 下一篇: Spring MVC-09循序渐进之文件