Spring MVCファイルアップロードのMaxUploadSizeExceedException異常処理
4193 ワード
spring MVCアップロードファイルは、common.fileupledコンポーネントを使用しています.このコンポーネントはファイルをアップロードする時にファイルサイズの制限があります.この制限を超えた後、MaxUploadSizeExceedExceptionの異常を投げます.
この異常はspringでアップロードファイルの情報をチェックする時に投げましたが、まだコントローラ内でファイルを解析する方法に入っていません.
インターネットで調べた方法は:
1 org.springframe ebook.web.servlet.handle.SimpleMappingException Resoloverを使用して、例えば:
[html view plin copy
<プロ key=「org.springframe ebook.web.multiiPad.MaxUploadSizeExceedException」error/maxUploadExceded<prop> 個人はこのような方式に賛成しています.multiiprtResolaverは通常グローバルで使用されています.指定されたmaxUploadSizeは通常グローバルでもあります.ここでグローバル異常処理を配置して応答します.
2
自己実現.Handler Exception Resolover類、例えば
[java] view plin copy
public クラス MyHandler Exception Resolaver implements Handler Exception Resolaver { prvate ログ ロゴ = Log Factory.get Log(get Class); public ModelAndView reolveException(HttpServletRequest) request HttpServlet Resonse レスポンス Object ハンドルさん、 Exception ex) { log.warn("Handle" exception: " + ex.get Class().get Name(); Map モデル = new HashMap(); model.put(「ex」) ex.get Class().get SimpleName(); model.put(「error」、 ex.getMessage(); return new ModelAndView(「error」、 モデル } 別の定義
この2つの方法の侵入性は本当に大きすぎます.ソースコードorg.springframe ebook.web.multiipot.com mmons.MultiputResover 127行を確認してください.
[java] view plin copy
if (this.resovelazly) { return new Default MultiiPad Http Servlet Request(request) { @オーバーライド protected void initialize MultiiPad() { MultiiprtParsingResoult パーニングResoult = parseRequest; set MultiiprtFiles(parsingResult.get MultiiprtFiles); set MultipartParameeters(parsingResult.get MultipartParameeters(); } }; } この属性を定義することができます.ファイルを解析する時に異常を投げてください.そして、コントローラに異常処理を定義する方法があります.
[html view plin copy
class=「org.springframe ewek.web.multiiprt.com mmons.MultiiplectResover」 p:default Enccoding="utf-8" > 異常処理を定義する方法
@Exception Handler(Exception.class) public String handleException(Exception) ex,HttpServlet Request request { if(ex) instance of org.springframe ework.web.multipart.MaxUploadSizeException){ request.set Attribute(「error」、 "ファイルの長さが超過しました. } return 向きを変えるページは、自由に定義できます.または元のページです. }
この異常はspringでアップロードファイルの情報をチェックする時に投げましたが、まだコントローラ内でファイルを解析する方法に入っていません.
インターネットで調べた方法は:
1 org.springframe ebook.web.servlet.handle.SimpleMappingException Resoloverを使用して、例えば:
[html view plin copy
2
自己実現.Handler Exception Resolover類、例えば
[java] view plin copy
public クラス MyHandler Exception Resolaver implements Handler Exception Resolaver { prvate ログ ロゴ = Log Factory.get Log(get Class); public ModelAndView reolveException(HttpServletRequest) request HttpServlet Resonse レスポンス Object ハンドルさん、 Exception ex) { log.warn("Handle" exception: " + ex.get Class().get Name(); Map モデル = new HashMap(); model.put(「ex」) ex.get Class().get SimpleName(); model.put(「error」、 ex.getMessage(); return new ModelAndView(「error」、 モデル } 別の定義
この2つの方法の侵入性は本当に大きすぎます.ソースコードorg.springframe ebook.web.multiipot.com mmons.MultiputResover 127行を確認してください.
[java] view plin copy
if (this.resovelazly) { return new Default MultiiPad Http Servlet Request(request) { @オーバーライド protected void initialize MultiiPad() { MultiiprtParsingResoult パーニングResoult = parseRequest; set MultiiprtFiles(parsingResult.get MultiiprtFiles); set MultipartParameeters(parsingResult.get MultipartParameeters(); } }; } この属性を定義することができます.ファイルを解析する時に異常を投げてください.そして、コントローラに異常処理を定義する方法があります.
[html view plin copy
/**
*
* @param ex
* @param request
* @Description:
*/
@ExceptionHandler(Exception.class)
public void handleException(Exception ex,HttpServletRequest request,HttpServletResponse response){
StringBuffer sb = new StringBuffer();
sb.append("<script language='javascript'>history.go(-1);alert('");
if (ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){
sb.append(" "+((MaxUploadSizeExceededException)ex).getMaxUploadSize()/1000+"kb");
} else{
sb.append(" !");
}
sb.append("!');</script>");
try {
System.out.println(sb.toString());
response.setContentType("text/html; charset=utf-8");
response.getWriter().println(sb.toString());
response.getWriter().flush();
} catch (IOException e) {
e.printStackTrace();
}
return;
}
[java] view plin copy@Exception Handler(Exception.class) public String handleException(Exception) ex,HttpServlet Request request { if(ex) instance of org.springframe ework.web.multipart.MaxUploadSizeException){ request.set Attribute(「error」、 "ファイルの長さが超過しました. } return 向きを変えるページは、自由に定義できます.または元のページです. }