SpringMVC实现文件上传、拦截器

1.实现文件上传

和Servlet方式的本质一样,都是通过commons-fileupload.jar 和 commons-io.jar

SpringMVC可以简化文件上传的代码,但是必须满足要求:实现MultipartResolver接口,而该接口的实现类SpringMVC已经提供 CommonsMultipartResolver

具体步骤:(直接使用CommonsMultipartResolver实现上传)

  1. jar包
    commons-fileupload.jar
    commons-io.jar

  2. 配置CommonsMultipartResolver
    将其加入SpringIoC容器中
    在这里插入图片描述
    该类的bean的 id 必须是 multipartResolver ,因为spring容器在初始化时会自动寻找 id= multipartResolver 的bean,并将其将入容器

前端:

<form action="hh/testUpLoad" method="post" enctype="multipart/form-data">
	<input type="file" name="file" />
	描述:<input name="desc" type="text" />
	<input type="submit" value="上传" />		
</form>

controller:

@RequestMapping("testUpLoad")
public String testUpLoad(@RequestParam("desc") String desc,
@RequestParam("file") MultipartFile file) throws IOException{
	
	System.out.println(desc);
	InputStream inputStream = file.getInputStream();
	String str = file.getOriginalFilename();
	OutputStream outputStream=new FileOutputStream("G:\\"+str);
	
	byte[] bs=new byte[1024];
	int len=0;
	while((len=inputStream.read(bs))!=-1) {
		outputStream.write(bs, 0, len);
	}
	outputStream.flush();
	outputStream.close();
	inputStream.close();
	
	return "success";
}

2. 拦截器

拦截器的原理和过滤器相同
SpringMVC:要想实现拦截器,必须实现一个接口HandlerInterceptor

![在这里插入图片描述](https://img-blog.csdnimg.cn/2018122612471096.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmN
渲染就是:将jsp中的<% String name…%>、css、js等组装完毕,最终显示出来。

a.编写拦截器:类 implements HandlerInterceptor

public class MyInterceptor implements HandlerInterceptor {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println("拦截请求");
		return true;//true:拦截操作之后,放行   false:拦截之后不放行,请求终止
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println("拦截响应");
		
	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println("视图(jsp)被渲染完毕");
	}

b.配置: 将自己写的拦截器 配置到springmvc中(spring)

<!-- 将自己写的拦截器  配置到springmvc中(spring);不配置下面默认拦截所有请求 -->
<mvc:interceptors>
	<!-- 配置具体的拦截路径(请求) -->
	<mvc:interceptor>
		<!-- 指定拦截的路径(基于ant风格),与下面那个配置取交集 -->
		<mvc:mapping path="/**"/>
		<!-- 指定不拦截的路径 -->
		<mvc:exclude-mapping path="/hh/testUpLoad"/>
		<bean class="com.ph.interceptor.MyInterceptor"></bean>
	</mvc:interceptor>
	<!-- 在这里配置多个拦截器 -->
</mvc:interceptors>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值