SpringMVC文件上传_拦截器_异常处理

本文介绍了使用Spring MVC实现文件上传的功能,包括配置文件大小限制、上传路径等,并提供了具体的控制器代码与JSP页面示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.文件上传

所需jar包

commons-fileupload-1.3.3.jar

(1)配置spring-mvc.xml

<!-- 上传文件的设置 ,maxUploadSize=-1,表示无穷大。uploadTempDir为上传的临时目录 -->

<bean id="multipartResolver"

class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<property name="maxUploadSize" value="1048576000000"></property>

<property name="defaultEncoding" value="UTF-8"></property>

<property name="maxInMemorySize" value="40960"></property>

</bean>

(2)测试

@Controller

@RequestMapping("/file/")

public class FileAction

{

@RequestMapping(value="upload")

public String upload(String desc,MultipartFile upload)

{

System.out.println(desc);

//保存文件

String fileName = (UUID.randomUUID()+"").replaceAll("-", "");

//得到原文件名

String oname = upload.getOriginalFilename();

File file = new File("d:\\upload\\"+fileName+oname.substring(oname.lastIndexOf(".")));

try

{

upload.transferTo(file);

}

catch (IllegalStateException e)

{

e.printStackTrace();

}

catch (IOException e)

{

e.printStackTrace();

}

return "success";

}

}

(3)jsp页面

<body>

<form action="../file/upload" method="post" enctype="multipart/form-data">

文件:<input type="file" name="upload"/><br />

描述:<input type="text" name="desc" /><br />

<input type="submit" value="提交 " />

</form>

</body>

2.文件下载

参考java的文件下载

注:因为如果文件过大,会导致内存出现问题

 

 

3.拦截器

(1)配置spring-mvc.xml

<!--拦截器 -->

<mvc:interceptors>

<!-- 多个拦截器,顺序执行 -->

<mvc:interceptor>

<mvc:mapping path="/**" />

<bean class="net.study.interceptor.MyInterceptor"></bean>

</mvc:interceptor>

</mvc:interceptors>

(2)测试(与struts类似)

package net.study.interceptor;

 

public class MyInterceptor implements HandlerInterceptor {

 

@Override

//最终

public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)

throws Exception {

System.out.println("afterCompletion");

}

 

@Override

//后置

public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)

throws Exception {

System.out.println("postHandle");

}

 

@Override

//前置

public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {

System.out.println("preHandle");

return true;

}

 

}

 

 

4.异常处理

(1)配置spring-mvc.xml

<!-- 异常处理 -->

<bean id="handlerExceptionResolver" class="net.study.exception.MyExceptionResolver"/>

(2)测试

package net.study.exception;

 

public class MyExceptionResolver implements HandlerExceptionResolver {

@Override

public ModelAndView resolveException(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,

Exception ex) {

ModelAndView mv = new ModelAndView();

mv.setViewName("error");

mv.addObject("ex", ex);

return mv;

}

 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值