반응형
목록
분류 전체보기 (292)
[꼼꼼한 개발자] 꼼코더
✅ Controller의 Exception 처리 Controller를 작성할 때 예외 상황까지 고려한다면 처리해야 하는 작업량은 엄청나게 늘어난다. 스프링 MVC에서는 이러한 작업을 다음과 같은 방식으로 처리할 수 있다. @Exception와 @ControllerAdvice를 이용한 처리 @ResponseEntity를 이용한 예외 메세지 구성 ✍🏻 @ControllerAdvice @ControllerAdvice는 뒤에서 배우게 될 AOP를 이용한 방식이다. AOP에 대해 간단히 언급하자면 AOP는 ‘핵심적인 로직은 아니지만 프로그램에서 필요한 공통적인 관심사는 분리’하자는 개념이다. Controller를 작성할 때 메서드의 모든 예외사황을 전부 핸들링해야 한다면 중복적이고 많은 양의 코드를 작성해야 하지..
🗳 파일 업로드 처리 Controller의 많은 작업을 스프링 MVC가 처리하기 때문에 개발자는 해야 하는 역할에만 집중할 수 있지만. 조금 신경써야 하는 부분이 파일 업로드 처리이다. 파일 업로드를 위해서는 전달되는 파일 데이터를 분석해야 한다 Servlet 3.0 이후(Tomcat 7.0)에는 별도에 추가 라이브러리가 필요하지 않는다 하지만 ‘Spring Legacy Project’로 생성되는 프로젝트는 Servlet 2.5를 기준으로 생성되므로 일반적으로 많이 사용하는 commons-fileupload 라이브러리를 추가하여 예제를 작성하겠다. 👨🏻💻 파일 업로드 실습( commons-fileupload 라이브러리 사용) 👨🏻💻 pom.xml 추가 이후 파일이 임시로 업로드될 폴더를 upload/..
👨🏻✈️ Controller의 리턴 타입 스프링 MVC 구조가 (기존) 상속, 인터페이스 → (변경) 어노테이션을 사용하는 방식으로 변경된 이후 가장 큰 변화중 하나는 리턴타입이 자유로워졌다는 점이다. Controller의 메서드가 사용할 수 있는 리턴 타입은 아래와 같다. String : jsp를 이용하는 경우 jsp 파일의 경로와 파일이름을 나타내기 위해서 사용. void : 호출하는 URL과 동일한 이름의 jsp를 의미. VO, DTO 타입 : 주로 JSON 타입의 데이터를 만들어서 반환하는 용도로 사용. ResponseEntity 타입 : response 할 때 Http 헤더 정보와 내용을 가공하는 용도로 사용. Model, ModelAndView : Model로 데이터를 반환하거나 화면까지 같..
✍🏻 @ModelAttribute 어노테이션 웹 페이지 구조는 Request에 전달된 데이터를 가지고 필요시 추가적인 데이터를 생성하여 화면에 전달하는 방식으로 동작한다. Model의 경우는 파라미터로 전달된 데이터를 가지고 존재하지 않지만 화면에서는 필요한 데이터를 전달하기 위해 사용. 게시판의 페이지 번호는 파라미터로 전달되지만, 결과 데이터를 반환하려면 Model에 담아서 전달해야 함 스프링 MVC의 Controller는 기본적으로 Java Beans 규칙에 맞는 객체는 다시 화면으로 객체를 전달한다. 다시 말해 Java Beans의 규칙은 단순히 생성자가 없거나 빈 생성자를 가져야 하며 getter/setter를 가진 클래스의 객체들을 의미한다. 앞의 예제는 파라미터로 사용된 SampleDTO의 ..
👨🏻💻 리스트, 배열 처리 동일한 이름의 파라미터가 여러 개 전달되는 경우에 ArrayList 등을 이용해서 처리가 가능하다. 코드와 같이 List 와 같은 인터페이스 타입이 아닌 실제적인 클래스 타입으로 지정해줘야 한다. 예제 코드는 ‘ids’ 이름의 파라미터가 여러 개 전달되어도 ArrayList 이 생성되어 자동으로 수집된다. ‘/sample/ex02List?ids=111&ids=222&ids=333’을 호출 시 아래와 같은 로그가 출력된다. 배열의 경우도 동일하게 처리된다. 👨🏻💻 객체 리스트 (SampleDTO 클래스 작성) 만일 전달하는 데이터가 SampleDTO와 같이 ‘객체 타입’이고 여러 개를 처리해야 한다면 리스트를 포함하는 클래스를 설계해야 한다. 👨🏻💻 SampleDTOList..
👨🏻💻 Controller의 파라미터 수집(SampleDTO 클래스 작성) Controller를 작성할 때 가장 편리한 기능은 파라미터가 자동으로 수집되는 기능이다. 따라서 매번 request.getParameter()를 이용하는 불편함을 없앨 수 있다. org.zerock.domain 패키지 생성 → SampleDTO 클래스 작성 SampleDTO 클래스는 Lombok의 @Data 어노테이션을 이용해서 처리하는 걸 볼 수 있다.. @Data는 getter/setter, equals(), toString() 등의 메서드를 자동으로 생성해주기 때문에 편리하다. SampleController의 메서드가 SampleDTO를 파라미터로 사용하게 되면 자동으로 setter 메서드가 동작하면서 파라미터를 수집하게..
👀 스프링 MVC의 Controller 스프링 MVC를 이용하는 경우 작성되는 Controller는 다음과 같은 특징이 있습니다. HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능 GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 처리 가능 상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능 다른 프레임워크들과 달리 스프링 MVC는 어노테이션을 중심으로 구성되기 때문에 예제들을 작성할 때에도 각 어노테이션의 의미에 대해서 주의해가며 학습해야 한다. 👨🏻💻 @Controller, @RequestMapping(SampleController 클래..
🕹 스프링 MVC의 기본 사상 Java를 이용하는 웹 애플리케이션을 제작해 본 적이 있다면 Servlet/JSP 기술을 활용해서 제작하는 방식을 먼저 배우게 된다. 이후 모델 2라는 방식에 대해서 학습하게 되는데 스프링 MVC의 경우 이러한 부분은 개발자들에게 보여주지 않고 개발자들은 자신이 필요한 부분만 집중해서 개발할 수 있는 구조로 만들어져 있다. 웹 프로그래밍에서 가장 익숙한 단어들 중 하나는 Request/Response일 것이다. Servlet/JSP에서는 HttpServletRequest/HttpServletResponse라는 타입의 객체를 이용해 브라우저에서 전송한 정보를 처리하는 방식이다. (Servlet/JSP의 API사용) 스프링 MVC의 경우 이 위에 하나의 계층을 더한 형태가 된다..