Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
-
[김영한 스프링] 57. 파일 업로드 - 예제로 구현하는 파일 업로드, 다운로드Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 10. 16. 23:21
예제로 구현하는 파일 업로드, 다운로드 실제 파일이나 이미지를 업로드, 다운로드할 때는 몇가지 고려할 점이 있는데, 구체적인 예제로 알아보자. 요구사항 상품을 관리 상품 이름 첨부파일 하나 이미지 파일 여러개 첨부파일을 업로드 다운로드 할 수 있다. 업로드한 이미지를 웹 브라우저에서 확인할 수 있다 Item - 상품 도메인 package hello.upload.domain; import lombok.Data; import java.util.List; @Data public class Item { private Long id; private String itemName; private UploadFile attachFile; private List imageFiles; } main/java/hello/up..
-
[김영한 스프링] 56. 파일 업로드 - 서블릿과 파일 업로드 & 스프링과 파일 업로드Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 10. 12. 23:07
서블릿과 파일 업로드1 ServletUploadControllerV1 package hello.upload.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.ServletException; import javax.servlet...
-
[김영한 스프링] 55. 파일 업로드 - 소개 & 프로젝트 생성 & 세팅Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 10. 12. 01:35
파일 업로드 소개 일반적으로 사용하는 HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 다음 두 가지 방식의 차이를 이해해야 한다. HTML 폼 전송 방식 application/x-www-form-urlencoded multipart/form-data application/x-www-form-urlencoded 방식 application/x-www-form-urlencoded 방식은 HTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법이다. Form 태그에 별도의 enctype 옵션이 없으면 웹 브라우저는 요청 HTTP 메시지의 헤더에 다음 내용을 추가한다. Content-Type: application/x-www-form-urlencoded 그리고 폼에 입력한 전송할 항목을 HT..
-
[김영한 스프링] 54. 스프링 타입 컨버터 - 포맷터 적용하기 & 스프링이 제공하는 기본 포맷터Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 10. 11. 23:44
포맷터 적용하기 포맷터를 웹 애플리케이션에 적용해 보자. WebConfig - 수정 package hello.typeconverter; import hello.typeconverter.converter.IntegerToStringConverter; import hello.typeconverter.converter.IpPortStringConverter; import hello.typeconverter.converter.StringToIntegerConverter; import hello.typeconverter.converter.StringToIpPortConverter; import hello.typeconverter.formatter.MyNumberFormatter; import org.springf..
-
[김영한 스프링] 53. 스프링 타입 컨버터 - 포맷터(Formatter) & 포맷터를 지원하는 컨버전 서비스Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 10. 11. 02:26
포맷터 - Formatter Converter는 입력과 출력 타입에 제한이 없는, 범용 타입 변환 기능을 제공한다. 이번에는 일반적인 웹 애플리케이션 환경을 생각해 보자. 불린 타입을 숫자로 바꾸는 것 같은 범용 기능보다는 개발자 입장에서는 문자를 다른 타입으로 변환하거나, 다른 타입을 문자로 변환하는 상황이 대부분이다. 앞서 살펴본 예제들을 떠올려 보면 문자를 다른 객체로 변환하거나 객체를 문자로 변환하는 일이 대부분이다. 웹 애플리케이션에서 객체를 문자로, 문자를 객체로 변환하는 예 화면에 숫자를 출력해야 하는데, Integer -> String 출력 시점에 숫자 1000 -> 문자 "1,000" 이렇게 1000 단위에 쉼표를 넣어서 출력하거나, 또는 "1,000"라는 문자를 1000이라는 숫자로 변..
-
[김영한 스프링] 52. 스프링 타입 컨버터 - 스프링에 Converter 적용하기 & 뷰 템플릿에 컨버터 적용하기Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 10. 11. 01:34
스프링에 Converter 적용하기 WebConfig - 컨버터 등록 package hello.typeconverter; import hello.typeconverter.converter.IntegerToStringConverter; import hello.typeconverter.converter.IpPortStringConverter; import hello.typeconverter.converter.StringToIntegerConverter; import hello.typeconverter.converter.StringToIpPortConverter; import org.springframework.context.annotation.Configuration; import org.springfram..
-
[김영한 스프링] 51. 스프링 타입 컨버터 - 타입 컨버터(Converter) & 컨버전 서비스(ConversionService)Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 10. 10. 23:02
타입 컨버터 - Converter 타입 컨버터를 사용하려면 org.springframework.core.convert.converter.Converter 인터페이스를 구현하면 된다. 주의 Converter라는 이름의 인터페이스가 많으니 조심해야 한다. org.springframework.core.convert.converter.Converter를 사용해야 한다. 컨버터 인터페이스 package org.springframework.core.convert.converter; public interface Converter { T convert(S source); } StringToIntegerConverter - 문자를 숫자로 변환하는 타입 컨버터 package hello.typeconverter.conve..
-
[김영한 스프링] 50. 스프링 타입 컨버터 - 소개Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 10. 5. 02:48
스프링 타입 컨버터 소개 문자를 숫자로 변환하거나, 반대로 숫자를 문자로 변환해야 하는 것처럼 애플리케이션을 개발하다 보면 타입을 변환해야 하는 경우가 상당히 많다. HelloController - 문자 타입을 숫자 타입으로 변경 package hello.typeconverter.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; @RestController public class HelloController { @GetMapping("/..