文件上传:
- 需要的jar包:
①commons-fileupload.jar
②commons-io.jar - 实现MultpartResolver接口,具体如下:
配置:CommonsMultipartResolver用于实现文件上传
<!-- 实现文件上传 其中bean的id必须为multipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxUploadSize" value="102400"></property>
</bean>
处理方法:
//文件上传
@RequestMapping(value="testUpload")
public String testUpload(@RequestParam("uploadfile") MultipartFile file) throws IOException {
String fileName = file.getOriginalFilename();
InputStream input = file.getInputStream();
OutputStream out = new FileOutputStream("f://"+fileName);
byte[] bs = new byte[1024];
int len = -1;
while ((len = input.read(bs))!=-1) {
out.write(bs, 0, len);
}
out.close();
input.close();
System.out.println("上传成功");
return "success";
}
拦截器:拦截器的原理和过滤器相同。
a.SpringMVC:编写拦截器,必须实现一个接口HandlerInterceptor
public class MyInterceptor implements HandlerInterceptor{
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("视图渲染完毕");
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
System.out.println("拦截响应");
}
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
System.out.println("拦截请求");
return true;//true:拦截操作之后放行,false:拦截之后不放行,请求终止
}
}
b.配置:叫自己写的拦截器配置到springMVC中:
<!-- 配置拦截器,默认拦截所有请求 -->
<mvc:interceptors>
<!-- 配置具体的拦截路径 -->
<mvc:interceptor>
<!-- 指定拦截的路径 -->
<mvc:mapping path=""/>
<!-- 指定不拦截的路径 -->
<mvc:exclude-mapping path=""/>
<bean class="com.springmvc.Interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>