SpringMVC实现文件上传、拦截器

文件上传:

  1. 需要的jar包:
    ①commons-fileupload.jar
    ②commons-io.jar
  2. 实现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>

猜你喜欢

转载自blog.csdn.net/weixin_43217065/article/details/88915552