Framework/Spring

Framework/Spring

Spring File Upload 구현 과정 / Controller에서 파일 데이터 받아오기

서버 관련 파일 업로드 구현 https://caileb.tistory.com/152 MultipartFile을 사용한 File 업로드 (multipart/form-data) MultipartFile을 사용한 File 업로드 (multipart/form-data) SpringFramework환경의 서버라면 SpringFramework에서 제공하고 있는 MultipartFile 클래스와 MultipartHttpServletRequest 클래스를 사용해서.. caileb.tistory.com 1) @RequestParam MultipartFile 사용 2) ServletRequest, MultipartHttpServletRequest 사용 3) 사용자 정의 Class 타입 클라이언트는 파일을 요청받을 때 "m..

Framework/Spring

[IBAS] S3 Upload 코드 리팩토링

uploadImageUrl을 String으로 단순히 반환하던 이 코드를, ServerFileService의 구조와 맞추기 위해 리팩토링을 진행해보기로 했다. private Optional convert(MultipartFile multipartFile) throws IOException{ // 디렉토리 경로 수정하기 File convertFile = new java.io.File(System.getProperty("user.dir") + "/" + multipartFile.getOriginalFilename()); if(convertFile.createNewFile()){ try (FileOutputStream fos = new FileOutputStream(convertFile)) { fos.write..

Framework/Spring

[IBAS] Spring MVC의 Front Controller Pattern 구현하기

막연하게 FrontController의 형태로 구현해 문제를 해결해보자고 생각했다. https://yeonyeon.tistory.com/103 [MVC] 프론트 컨트롤러 패턴 기존의 패턴을 설명하자면 아래 그림과 같다 각 클라이언트들은 Controller A, B, C에 대해 각각 호출한다. 공통 코드들은 별도로 처리되어 있지 않고 각 Controller에 포함되어 있다. 하지만 프론트 컨 yeonyeon.tistory.com 대충, 서브 컨트롤러들을 프론트 컨트롤러에 정의해놓은 Map에 URL과 함께 매핑한다. 그리고 Request의 URI를 데려와 Key값을 이용해 Controller을 데려와 process 함수를 호출시킨다. 여기서 문제들이 보인다. 1. 호출해야하는 함수는 process뿐만이 아니..

Framework/Spring

Spring 첨부파일 다운로드 구현하기

첨부파일이 이미지인 경우, 클릭했을 때 화면에 크게 원본 파일을 넘겨줘야 하고, 일반 첨부파일인 경우에는 다운로드를 기본으로 실행해야 한다. MIME 타입이란? https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types MIME 타입 - HTTP | MDN MIME 타입이란 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘입니다: 웹에서 파일의 확장자는 별 의미가 없습니다. 그러므로, 각 문서와 함께 올바른 MIME 타입을 전송하도 developer.mozilla.org 다운로드 시 MIME 타입은 고정되기 때문에 메서드는 아래와 같이 시작하게 된다. @GetMapping(value = "/download", produce..

Framework/Spring

Spring 첨부파일 업로드 구현하기

쓰던거 날려서 다시 쓰기 😊 Spring Gradle 환경에서 첨부파일 구현하는 작업을 해보겠다. 프론트 단에서는 Axios를 사용하고 있으므로 JSON 데이터로 반환하는 Response 방식을 따라갈 것이고, Controller에서 Upload를 처리할 수 있도록 테스트까지 진행하려 한다. 1. Configuration 설정 (1) WebConfig AbstaractDispatcherServletInitializer를 상속받아 WebConfig를 구현한다. customizeReegistration을 Override하여 내부에서 MultiPargConfigElement 객체를 만들어주고 파일이 저장될 location, maxFileSize, maxRequestSize, fileSIezThresHold를 ..

Framework/Spring

[IBAS] Spring MVC의 Handler Mapping 동작 원리 (2) Customizing 편

https://www.baeldung.com/spring-handler-mappings 이 문서를 참고해보면 다음과 같이 나와있다. In Spring MVC, the DispatcherServlet acts as front controller – receiving all incoming HTTP requests and processing them. Simply put, the processing occurs by passing the requests to the relevant component with the help of handler mappings. HandlerMapping is an interface that defines a mapping between requests and handler ..

Framework/Spring

[IBAS] Spring MVC의 Handler Mapping 동작 원리 (1) 이론 편

지난 포스팅에서 menuId에 대한 Controller 통합을 위해 BoardService Interface를 설계하고, 하나의 BoardController에서 menuId에 맞는 Service 객체를 반환하는 Mapper 클래스를 만들고 별 난리를 떨었다 결론은 실패였다. @RequestBody로 받을 수 있는 객체가 제너릭이 불가능한 점, java - Interfaces and @RequestBody - Stack Overflow Interfaces and @RequestBody I'm currently working on a project which allows users to book (via the web) the use of a chosen resource for a given period o..

Framework/Spring

[IBAS] Java 제네릭(Generic) 을 이용한 코드 리팩토링

이번 Spring 웹 개발을 진행하면서, NormalBoard를 상속받는 다양한 Type의 Board의 CRUD를 전부 설계하는 과정에서 코드 중복, URL mapping등에서 수정해야할 필요성을 느꼈다. 비슷한 맥락의 Board CRUD이지만, 엄연히 따로 존재하는 Entity이기에 Service로직을 따로 가져가야 한다는 점에서 괴리를 느꼈다. Controller에서 menuId를 기준으로 등록, 수정, 삭제를 해야했으나 다르게 Service 파일을 생성하였고 이에 따라 ContestBoard의 Controller를 따로 설계하는 바람에 menuId Parameter가 따로 존재하는 바람에 menuId의 필요성이 없어지는 상황이 생겼다. 그래서, BoardController로 통합을 하고 제네릭을 사..

Framework/Spring

MockMVC를 이용한 BoardService 단위 테스트 (JUnit5)

참고하는 자료마다 단위 테스트를 진행하는 방법이 조금씩 달랐다. 직접 테스트를 진행해보고, Mock 객체를 이용한 단위테스트를 하는 방법을 터득해보려 한다. https://itmore.tistory.com/entry/MockMvc-%EC%83%81%EC%84%B8%EC%84%A4%EB%AA%85 MockMvc 상세설명 스프링 MVC 테스트 스프링 MVC 컨트롤러의 테스트 컨트롤러의 주요역할은 다양 컨트롤러의 주요역할 요청 경로 처리내용의 매핑 입력값 검사 요청한 데이터의 취득 비즈니스 로직 호출 다음 이동 itmore.tistory.com MockMVC란? 실제 객체와 비슷하지만, 테스트에 필요한 기능만가지는 가짜 객체를 만들어서 애플리케이션 서버에 배포하지 않고도 스프링 MVC 동작을 재현할 수 있는 ..

MINGYUM
'Framework/Spring' 카테고리의 글 목록 (2 Page)