[Spring] ExceptionHandler, 파일 업로드

*@ExceptionHandler

 - Controller method에서 예외가 발생되고, throws로 예외가 던져지면 DispatcherServlet

   예외를 잡아서 처리한다.

사용자에게 예외메시지가 제공 => 개발자가 만든 예외처리페이지를 사용자에게

                                                제공해야한다.

 

-Controller안에서 다른 methodthrows한 예외를 처리할 수 있는 method 만드는것.

  -같은 종류의 예외를 여러 method가 발생하더라도 하나의 @ExceptionHandler로 통합되어

    처리된다.

 

사용법)

  1.예외를 throws 하는 요청처리method 정의

    @GetMapping( .. )

    public String method( ,, ) throws 예외처리클래스,,{

  2.@ExceptionHandler annotationmethod위 선언

    @ExceptionHandler( {예외처리클래스.class,,, })

    method는 반환형 ModelAndView 로 설정하고 매개변수는 선언된 예외처리클래스로 정의

    public ModelAndView method( 예외처리클래스 객체명,,, ){

      3.ModelAndView를 생성

      ModelAndView mav=new ModelAndView();

     4.뷰명 설정

     mav.setViewName(“뷰명”);

     

*파일 업로드

 - tomcat9을 사용하는 Boot 버전에서는 cos.jar( MultipartRequest)를 사용하여 업로드를 구현.

 - tomcat10을 사용하는 Boot버전(2.6.x)에서는 Spring에서 제공하는 MultipartFile 사용.

*MultipartFile

 -org.springframework.web.mvc패키지에서 interface로 제공.

 -중복파일명에 대한 처리가 되지 않는다.

 -properties 파일을 설정하여 사용.

 

설정에 관한 method를 제공하지 않으므로

properties 파일에서 업로드관련 설정을 수행.

 - MultipartFile 사용여부

   spring.servlet.multipart.enabled=true

 - 파일하나의 최대 사이즈

   spring.servlet.multipart.max-file-size=10MB

 - 업로드 파일의 총 크기 설정

   spring.servlet.multipart.max-request-size=100MB

 

*입력 폼 생성 (RFC-1867 코딩)

 <form action=“” method=“POST” enctype=“multipart/form-data”>

   <input type=“file” name=“upload”>

   <input type=“text” name=“이름”>

   <input type=“text” name=“이름”>

   <input type=“submit” vale=“ 업로드”>

 </form>

 

*Controller 설정

1. Instance 변수로 업로드 디렉토리 설정.

 private String uploadDir=“C:/dev/workspace/spring_mvc/src/main/resources/static/upload”;

2.요청 처리 method

@PostMapping(“..”)

 public String uploadProcess( @RequestParam(“fileContorl”)MultipartFile mf,

    @RequestParam(“form control”)String name,

    @ModelAttribute DTO dto){

 

*List<MultipartFile>로 설정하면

여러 개의 파일을 동시에 업로드 가능