相关jar包:
导入文件上传下载组件的jar包
commons-fileupload-1.3.jar
commons-io-2.4.jar
Spring MVC中使用JstlView时需要添加的包
jstl-1.1.2.jar
standard-1.1.2.jar
1.整体架构
2.web.xml文件配置DispatcherServlet拦截所有的请求
02 | < servlet-name >chapter2</ servlet-name > |
03 | < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class > |
05 | < param-name >contextConfigLocation</ param-name > |
06 | < param-value >/WEB-INF/conf/chapter2-servlet.xml</ param-value > |
08 | < load-on-startup >1</ load-on-startup > |
12 | < servlet-name >chapter2</ servlet-name > |
13 | < url-pattern >/</ url-pattern > |
DispatcherServlet默认会加载WEB-INF/[DispatcherServlet的servlet-name]-servlet.xml配置文件。
这里的[servlet-name]为chapter2,就一定要添加一个chapter2-servlet.xml文件
这里该文件不是在默认位置WEB-INF下,而是在WEB-INF/conf/下,就需要通过<init-param>指定其配置路径
contextConfigLocation
2 | < param-name >contextConfigLocation</ param-name > |
3 | < param-value >/WEB-INF/conf/chapter2-servlet.xml</ param-value > |
<load-on-startup>指定服务器启动时DispatcherServlet初始化的优先级,数字越小越优先初始化。
3.xxx-servlet.xml文件的配置
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
02 | < beans xmlns = "http://www.springframework.org/schema/beans" |
03 | xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" |
04 | xmlns:context = "http://www.springframework.org/schema/context" |
05 | xmlns:mvc = "http://www.springframework.org/schema/mvc" |
07 | http://www.springframework.org/schema/beans |
08 | http://www.springframework.org/schema/beans/spring-beans.xsd |
09 | http://www.springframework.org/schema/context |
10 | http://www.springframework.org/schema/context/spring-context.xsd |
11 | http://www.springframework.org/schema/mvc |
12 | http://www.springframework.org/schema/mvc/spring-mvc.xsd"> |
18 | < mvc:annotation-driven /> |
19 | < mvc:default-servlet-handler /> |
21 | < mvc:resources mapping = "/resources/**" location = "/resources/" /> |
23 | < context:component-scan base-package = "cn.javass.chapter2.web.controller" /> |
30 | < bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" > |
31 | < property name = "viewClass" value = "org.springframework.web.servlet.view.JstlView" /> |
32 | < property name = "prefix" value = "/WEB-INF/jsp/" /> |
33 | < property name = "suffix" value = ".jsp" /> |
36 | < bean name = "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" > |
37 | < property name = "defaultEncoding" value = "utf-8" ></ property > |
38 | < property name = "maxUploadSize" value = "10485760000" ></ property > |
39 | < property name = "maxInMemorySize" value = "40960" ></ property > |
4.Controller控制器
01 | package cn.javass.chapter2.web.controller; |
04 | import java.io.IOException; |
05 | import java.util.Calendar; |
08 | import javax.servlet.http.HttpServletRequest; |
10 | import org.springframework.stereotype.Controller; |
11 | import org.springframework.web.bind.annotation.RequestMapping; |
12 | import org.springframework.web.bind.annotation.RequestParam; |
13 | import org.springframework.web.multipart.commons.CommonsMultipartFile; |
16 | @RequestMapping ( "/file" ) |
17 | public class UploadController { |
19 | @RequestMapping ( "/upload" ) |
20 | public String upload( @RequestParam CommonsMultipartFile file, |
21 | HttpServletRequest request) throws IllegalStateException, |
25 | String fileName = file.getOriginalFilename(); |
26 | fileName = new Date().getTime() + fileName; |
27 | System.out.println( "文件名----------->" + fileName); |
28 | String extension = fileName |
29 | .substring(fileName.lastIndexOf( "." ) + 1 ); |
31 | && (extension.equalsIgnoreCase( "xls" ) || extension |
32 | .equalsIgnoreCase( "xlsx" ))) { |
33 | final String TEMP_FILE_PATH = request.getServletContext() |
34 | .getRealPath( "/WEB-INF/upload" ); |
35 | final String FILE_SEPARATOR = System.getProperties() |
36 | .getProperty( "file.separator" ); |
37 | String filePath = TEMP_FILE_PATH + FILE_SEPARATOR + fileName; |
38 | File f = new File(filePath); |
44 | deleteTempFile( 2 , TEMP_FILE_PATH); |
48 | System.out.println( "文件格式不对,请上传xls或xlsx格式" ); |
56 | @RequestMapping ( "/toupload" ) |
57 | public String toUpload() { |
62 | * 删除指定目录path下,文件存在时间超过指定day天数的文件 |
70 | private void deleteTempFile( int day, String path) { |
73 | Calendar cal = Calendar.getInstance(); |
74 | Calendar calNow = Calendar.getInstance(); |
75 | File filepath = new File(path); |
77 | if (filepath.exists()) { |
78 | if (filepath.isDirectory()) { |
79 | files = filepath.listFiles(); |
80 | for ( int i = 0 ; i < files.length; i++) { |
81 | date = new Date(files[i].lastModified()); |
84 | calNow.setTime(dateNow); |
85 | int dec = calNow.get(Calendar.DAY_OF_YEAR) |
86 | - cal.get(Calendar.DAY_OF_YEAR); |
@Controller 指定该类为控制器,可以拦截url请求,也可以直接使用HttpServletRequest/Response
@RequestMapping 的value指定请求映射的url
@RequestParam 可以取出请求时传输的参数