SpringMVC文件上傳_攔截器_異常處理

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;

}

 

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章