본문 바로가기

분류 전체보기

(129)
AWS EC2 프리티어로 인스턴스 생성 및 ssh 접속 지난 번에는 AWS EC2에 대해서 알아봤습니다. 이번에는 AWS에서 프리티어로 ec2 인스턴스 생성하고, ssh로 접속해보겠습니다. 목차 EC2 프리티어로 인스턴스 생성 AWS 사이트에서 로그인하면 'AWS 관리 콘솔'이 나오는데 ec2를 클릭하거나 검색합니다. ec2 관리 페이지에서 '인스턴스 시작' 버튼을 클릭해 인스턴스 시작 페이지에 입장합니다. 서버의 이름을 식별하기 쉽게 입력합니다. 그다음으로 AWS에서 기본적으로 제공하는 AMI를 선택합니다. AWS에서 기본적으로 제공하는 AMI는 여러 운영체제를 가지고 있는데 저희는 Amazon Linux를 선택합니다. Amazon Linux가 아니더라도 '프리 티어 사용 가능'한 다른 이미지를 선택하면 됩니다. 현재 프리티어가 사용 가능한 인스턴스 유형으..
스프링으로 파일 업로드 구현하기 - MultipartFile 인터페이스 스프링은 MultipartFile이라는 인터페이스로 멀티파트 파일을 매우 편리하게 지원합니다. SpringUploadController @Slf4j @Controller @RequestMapping("/spring") public class SpringUploadController { @Value("${file.dir}") private String fileDir; @GetMapping("/upload") public String newFile() { return "upload-form"; } @PostMapping("/upload") public String saveFile(@RequestParam String itemName, @RequestParam MultipartFile file, HttpSer..
서블릿의 파일 업로드 - 서블릿이 제공하는 Part 파일 업로드 소개 HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 다음 두 가지 방식의 차이를 이해해야 합니다. HTML 폼 전송 방식 application/x-www-form-urlencoded multipart/form-data application/x-www-form-urlencoded 방식 웹 브라우저가 생성한 요청 HTTP 메시지 POST /save HTTP/1.1 Host: Iocalhost:8080 Content-Type: application/x-www-form-urlencoded name=as&age=20 application/x-www-form-urlencoded 방식은 HTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법입니다. Form 태그에 별도의 enct..
스프링이 제공하는 기본 포맷터 - @NumberFormat, @DateTimeFormat 스프링은 자바에서 기본으로 제공하는 타입들에 대해 수많은 포맷터를 기본으로 제공합니다. IDE에서 Formatter 인터페이스의 구현 클래스를 찾아보면 수 많은 날짜나 시간 관련 포맷터가 제공되는 것을 확인할 수 있습니다. 그런데 포맷터는 기본 형식이 지정되어 있기 때문에, 객체의 각 필드마다 다른 형식으로 포맷을 지정하기는 어렵습니다. 스프링은 이런 문제를 해결하기 위해 애노테이션 기반으로 원하는 형식을 지정해서 사용할 수 있는 매우 유용한 포맷터 두 가지를 기본으로 제공합니다. @NumberFormat : 숫자 관련 형식 지정 포맷터 사용, NumberFormatAnnotationFormatterFactory @DateTimeFormat : 날짜 관련 형식 지정 포맷터 사용, Jsr310DateTim..
스프링 포맷터(Formatter), 포맷터를 지원하는 ConversionService 스프링 포맷터란(Formatter)?? 웹 애플리케이션에서 객체를 문자로, 문자를 객체로 변환하는 예 화면에 숫자를 출력해야 하는데, Integer => String 출력 시점에 숫자 1000 문자 "1,000" 이렇게 1000 단위에 쉼표를 넣어서 출력하거나, 또는 "1,000"라는 문자를 1000이라는 숫자로 변경해야 합니다. 날짜 객체를 문자인 "2021-01-01 10:50:11" 와 같이 출력하거나 또는 그 반대의 상황 Locale 여기에 추가로 날짜 숫자의 표현 방법은 Locale 현지화 정보가 사용될 수 있습니다. 이렇게 객체를 특정한 포멧에 맞추어 문자로 출력하거나 또는 그 반대의 역할을 하는 것에 특화된 기능이 바로 포맷터(Formatter)입니다. 포맷터는 컨버터의 특별한 버전으로 이해..
컨버전 서비스 사용하기 - ConversionService (타임리프, 폼) 컨버전 서비스란? 타입 컨버터를 하나하나 직접 찾아서 타입 변환에 사용하는 것은 매우 불편합니다. 개별 컨버터를 모아 두고 그것들을 묶어서 편리하게 사용할 수 있는 기능을 제공하는데, 이것이 바로 컨버전 서비스( ConversionService )입니다. ConversionService 인터페이스 컨버전 서비스 인터페이스는 단순히 컨버팅이 가능한가? 확인하는 기능과, 컨버팅 기능을 제공합니다. package org.springframework.core.convert; import org.springframework.lang.Nullable; public interface ConversionService { boolean canConvert(@Nullable Class sourceType, Class ta..
스프링 타입 컨버터 - Converter 스프링 타입 컨버터란? 스프링을 사용해 애플리케이션을 개발할 때 문자를 숫자로 변환하거나, 반대로 숫자를 문자로 변환해야 하는 것처럼 타입을 변환할 때 사용하는 도구입니다. 스프링 MVC가 제공하는 @RequestParam을 사용해 타입을 변환해보겠습니다. @GetMapping("/hello-v2") public String helloV2(@RequestParam Integer data) { System.out.println("data = " + data); return "ok"; } 요청 http://localhost:8080/hello-v2?data=10 HTTP 쿼리 스트링으로 전달하는 data=10 부분에서 10은 숫자 10이 아니라 문자 10입니다. 스프링이 제공하는 @RequestParam을 ..
[API 예외 처리하기] @ExceptionHandler, @ControllerAdvice를 사용한 예외 처리 HTML 화면 오류 vs API 오류 웹 브라우저에 HTML 화면을 제공할 때는 오류가 발생하면 BasicErrorController 를 사용하는게 편합니다. 이때는 단순히 5xx, 4xx 관련된 오류 화면을 보여주면 됩니다. BasicErrorController 는 이런 메커니즘을 모두 구현해두었습니다. BasicErrorController 를 사용하거나 HandlerExceptionResolver 를 직접 구현하는 방식으로 API 예외를 다루기는 쉽지 않습니다. API 예외처리의 어려운 점 HandlerExceptionResolver는 ModelAndView를 반환해야 합니다. 이것은 API 응답에는 필요하지 않습니다. API 응답을 위해서 HttpServletResponse에 직접 응답 데이터를 넣..