Spring MVC 文件上传+拦截器

1.      引入jar包


2. 配置视图解析器


	<!-- id="multipartResolver"必须是multipartResolver -->
		<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
			<!-- maxUploadSize:文件上传的最大值以byte为单位 -->
			<property name="maxUploadSize" value="1024000"></property>
		</bean>
		

3. 写上传逻辑

/* <form action="test/toPerson8.do" method="post" enctype="multipart/form-data">
 	name:<input name="name" type="text"><br>
 	age:<input name="age" type="text"><br>
 	address:<input name="address" type="text"><br>
 	birthday:<input name="birthday" type="text"><br>
 	pic:<input type="file" name="pic"><br>
 	<input type="submit" value="submit"><br>
 </form>*/
	@RequestMapping(value="/toPerson8.do")
	public String toPerson8(Person person,HttpServletRequest request) throws Exception{
		//第一步转化request
		MultipartHttpServletRequest rm = (MultipartHttpServletRequest) request;
		//获得文件
		CommonsMultipartFile cfile = (CommonsMultipartFile) rm.getFile("pic");
		//获得文件的字节数组
		
		
		byte[] bfile = cfile.getBytes();
		String fileName = "";
		//获得当前时间的最小精度
		SimpleDateFormat format =  new SimpleDateFormat("yyyyMMddHHmmssSSS");
		fileName = format.format(new Date());
		//获得三位随机数
		Random random = new Random();
		for(int i = 0; i < 3; i++){
			fileName = fileName + random.nextInt(9);
		}
		//获得原始文件名
		String origFileName = cfile.getOriginalFilename();
		//XXX.jpg
		String suffix = origFileName.substring(origFileName.lastIndexOf("."));
		//拿到项目的部署路径
		String path = request.getSession().getServletContext().getRealPath("/");
		//定义文件的输出流
		OutputStream out = new FileOutputStream(new File(path+"/upload/"+fileName+suffix));
		out.write(bfile);
		out.flush();
		out.close();
		
		return "jsp1/index";
	}







<mvc:interceptors>
			<mvc:interceptor>
				<!-- 某一模块的拦截:/myPath/**, 拦截所有的请求/**-->
				<mvc:mapping path="/**"/>
				<bean class="cn.itcast.springmvc.interceptor.MyIntercepor"></bean>
			</mvc:interceptor>
		</mvc:interceptors>



public class MyIntercepor implements HandlerInterceptor {

	/**
	 * 执行时机:视图已经被解析完毕,类似try catch 后的finally
	 */
	@Override
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception ex)
			throws Exception {
		System.out.println("afterCompletion...");
		ex.printStackTrace();
		System.out.println("================");
	}

	/**
	 * 执行时机:controller执行完,视图解析器没有把视图解析成页面,
	 * 对视图做统一的修改,主要体现在Model上
	 */
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView mv) throws Exception {
		System.out.println("postHandler...");
		Map<String, Object> map = mv.getModel();
		map.put("test", "append something");
	}

	/**
	 * 执行时机:在执行controller之前来执行
	 * 返回值类型:boolean:true代表放行可以访问controller,false不可以访问controller
	 */
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2) throws Exception {
		System.out.println("preHander...");
		return true;
	}

}




1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值