Knowledge/Spring
-
유저가 업로드 한 이미지 파일 로컬에서 가져와 사용하는 방법!Knowledge/Spring 2019. 9. 20. 09:33
보통 혼자 개발할 때나 공부할 때 이미지는 이렇게 사용할 것이다. 이렇게 소스 안에 img 폴더를 세팅해놓고 이미지들이 저장되어 있는 위치를 설정 파일에 명시해 준 다음 img 태그의 src 속성에 파일 이름을 적어주는 식으로! 그러나 실무에선 이렇게 사용하지 않는다고 한다. 보안 문제도 있고, 프로젝트 볼륨이 커지기 때문 ( 예를 들어 업로드가 많이 되는 사이트인데 파일을 전부 이렇게 프로젝트 내 폴더에 저장하게 세팅하면 용량이 상상을 초월할 것이다 ) 그럼 어떤 방법을 사용할까? 사실 가장 쉬운 선택지는 설정 파일에서 img 폴더 경로를 파일 저장 폴더로 잡아주는 것이다. 그러나 이 방법 역시 보안 이슈가 있어서 지양하고 실무에선 이 문제를 해결하기 위해 컨트롤러를 활용한다고 한다. 이를 이해하기 위..
-
스프링에서 파일다운로드 구현하는 방법Knowledge/Spring 2019. 9. 20. 08:13
일단 서버에 파일은 있고 데이터베이스에 파일 정보는 저장되어 있다고 가정한다 ( 참고 : 스프링에서 컨트롤러로 넘어온 파일 저장하는 방법 - https://takeknowledge.tistory.com/61 ) 사실 업로드를 잘 알고 있다면 다운로드도 쉽게 이해할 수 있다. outputStream과 inputStream의 역할만 바뀔 뿐 업로드와 크게 다르지 않기 때문이다. 넘어온 파일을 찾을 수 있는 파라미터로 파일 정보 찾고, 헤더에 정보 세팅하고, inputStream에서 outputStream으로 파일 정보 옮겨주면 끝! 바로 코드로 보자! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3..
-
스프링에서 컨트롤러로 넘어온 파일 저장하는 방법Knowledge/Spring 2019. 9. 18. 21:59
프론트 단에서 ajax로 파일을 서버로 넘기는 건 ( https://takeknowledge.tistory.com/60 ) 참고 파일이 컨트롤러 단으로 넘어오면 파일을 저장하고 나중에 사용할 수 있도록 파일 정보를 데이터베이스에 저장해야 한다. 이걸 하는 방법은 - 설정 먼저 파일 처리에 필요한 라이브러리를 메이븐에 등록해줘야 한다. 파일은 Multipart ( HTTP프로토콜의 바디 부분에 데이터를 여러 부분으로 나눠서 보낸 것 ) 로 넘어오는데 HttpServletRequest는 웹 클라이언트가 전달하는 Multipart데이터를 쉽게 처리하는 메소드를 제공하지 않기 때문이다. 대표적인 파일 처리 라이브러리는 아파치 재단의 commons-fileupload 가 있다. 추가를 위해선 1 2 3 4 5 6..
-
스프링에서 로그를 남겨보자! SLF4J와 LogbackKnowledge/Spring 2019. 9. 18. 07:04
- 로그 라이브러리 기록을 남기는 로깅은 여러모로 필수다. 그러나 자바를 배울 때부터 사용해 익숙할 System.out.println() 을 사용해 로깅을 하게 되면 웹의 속도가 상당히 느려진다. 이 때문에 다양한 로그 라이브러리들이 존재한다. 스프링에서 사용할 수 있는 로그 라이브러리의 종류는 아래와 같다. java.util.logging JDK 1.4부터 포함된 표준 로깅 API 별도 라이브러리 추가 불필요 기능이 많이 부족해 다른 로그 라이브러리를 더 많이 사용 Apache Commons logging 아파치 재단에 Commons 라이브러리 중에 로그 출력을 제공하는 라이브러리 Log4j 아파치 제단에서 제공하며 가장 많이 사용되는 로깅 라이브러리 Logback Log4j를 개발한 Ceki Gulc..
-
로그인 기능은 어떻게 구현할까? 세션에 대해 알아보자Knowledge/Spring 2019. 9. 4. 11:44
클라이언트 별로 다른 정보를 제공하는 기능은 중요하다. 그러나 중요도에 비해(?) 구현은 굉장히 쉽다 일단 Session에 대해 알아보자 - Session 클라이언트 별로 서버에 저장되는 정보를 말한다. - 사용법 (Spring 4.3.5 버전 기준으로 설명함) 일단 HttpSession을 생성해야 한다. 원래는 HttpRequest의 getSessiono()을 받아와서 세션에 저장하는 방식을 따라야 하는데 ( ex. HttpSession session = request.getSession(); ) 4.3.5 버전에서는 (아마 4이상이지 않을까 싶은데) 아래와같이 1 2 3 4 5 6 7 8 @Controller public class ReservationController { public String ..
-
스프링 controller에서 파라미터를 받는 다양한 방법 ( @RequestParam, @RequestBody, @PathVariable)Knowledge/Spring 2019. 9. 4. 11:15
컨트롤러에서 파라미터를 받을 수 있는 다양한 방법이 있다 1. @RequestParam 어노테이션 활용 GET방식으로 넘어온 URI의 queryString을 받기에 적절해 html부터 단계별(?)로 밟아온 사람이라면 가장 쉽게 이해할 수 있을 어노테이션이다. 예를 들어 http://localhost:8080/reservation/api/reservations?reservationEmail=test@naver.com 이런 URI가 있다고 치면 Controller 단에서 1 2 3 4 5 6 7 8 9 10 11 @RestController @RequestMapping(path = "/api") public class ReservationsApiController { // email로 예약 내역 조회 @Ge..
-
Spring에서 JSON을 편하게 리턴해보자! Jackson 라이브러리와 RestControllerKnowledge/Spring 2019. 8. 21. 21:29
- JSON 먼저 JSON에 대해 알아보자. JSON은 경량의 데이터 교환에 유용한 데이터 포맷이다. 주로 Ajax로 서버와 통신하며 데이터를 주고 받을 때 데이터 교환을 쉽게 하기 위해 사용한다. 그러나 Spring에서 클라이언트 단으로 JSON을 리턴하고 싶을 땐 이런 저런 조치가 필요하다. 이를 본격적으로 알아보기 전에 우선 MessageConvertor에 대해 알아보자 - MessageConvertor MessageConvertor는 스프링에서 자바 객체와 HTTP 요청 / 응답 바디를 변환하는 역할을 한다. 종류는 이처럼 다양한데 jackson라이브러리를 추가할 경우 객체를 JSON으로 변환하는 메시지 컨버터가 사용되도록 @EnableWebMvc에서 기본으로 설정되어 있다. 그렇기 때문에 Jac..