一、历史回顾
(一)、Servlet上传方式
Servlet上传方式比较复杂
二、springMVC实现文件上传、拦截器
(一)、springMVC实现文件上传
1、简介
springMVC实现文件上传和Servlet方式的本质一样,都是通过commons-fileupload.jar和commons-io.jar。
springMVC可以简化文件上传的代码,但是必须满足条件:实现MultipartResolver接口。springMVC已经实现了该接口,直接使用springMVC的提供的实现类就可以了。这里使用CommonsMultipartResolver类。

CommonsMultipartResolver类:底层代码中,有很多实体类的属性是设置文件上传的
2、文件上传具体步骤:(直接使用CommonsMultipartResolver类实现上传)
a、支持的jar:
commons-fileupload.jar
commons-io.jar
b、配置:
将CommonsMultipartResolver类配置到spring的IOC容器中。

c、处理方法:

d、页面请求要求:
表单的method必须是post,里面还需要设置一个"enctype='multipart/form-data'"。

例:
请求页面(index.jsp):

Controller处理请求:

springmvc配置:

(二)、拦截器
1、原理
拦截器和过滤器原理一样。

2、操作步骤:
a、springMVC要想实现拦截器,必须实现一个HandlerInterceptor接口。接口中有三个方法,分别是preHandle()、postHandle()、afterCompletion()方法。具体作用如下图所示:

编写代码自定义拦截器代码。实现HandlerInterceptor接口。示例:

b、配置:将自己编写拦截器配置到springMVC(spring)中。示例配置:

上面示例是拦截所有的请求。下面配置指定拦截内容或者是不拦截那些内容,如下图所示:

它们取拦截取交集。
例:
请求页面(index.jsp):

自定义拦截器:

配置springmvc(配置拦截器):

Controller处理请求:

例:处理两个拦截器的情况,在上例的基础上再配置一个拦截器
拦截器2:

配置多个拦截器:

网友评论