Spring boot
-
파일업로드 처리(MultipartResolver, MultipartFile)Spring boot 2021. 10. 14. 17:08
인코딩 타입이 Multipart인 경우 파라미터나 업로드한 파일을 구하려면 전송 데이터를 알맞게 처리해 주어야 한다. 스프링은 Multipart 지원 기능을 제공하고 있기 때문에, 이 기능을 이용하면 추가적인 처리없이 Multipart 형식으로 전송된 파라미터와 파일 정보를 쉽게 구할 수 있다. 1. MultipartResolver 설정 Multipart 지원 기능을 이용하려면 먼저 MultipartResolver를 스프링 설정 파일에 등록해 주어야 한다. MultipartResolver는 Multipart 형식으로 데이터가 전송된 경우, 해당 데이터를 스프링 MVC에서 사용할 수 있도록 변환해준다. 스프링이 기본으로 제공하는 MultipartResolver는 CommmnosMultipartResolve..
-
ModelAndView를 사용한 모델/뷰 처리, 파라미터 전송받기Spring boot 2020. 12. 30. 15:47
# login 페이지 만들기 1. RequestMapping에 로그인 추가 WEB-INF/view/login/login.jsp 를 찾는다. 2. login 폴더 안에 login.jsp 만들기 # 데이터 보내기 1. ArticleController 클래스 만들기 ModelAndView : 데이터를 전송시킬 수 있는 리턴 타입 (cf. String 타입은 단순하게 페이지만 열어주는 역할을 함) setViewName : 어떤 페이지를 보여줄 것인지 addObject : key와 value를 담아 보낼 수 있는 메서드 setAttribute를 여러개 썼던 것 처럼, addObject를 여러개 쓸 수 있다. 2. list.jsp 만들기 3. applicationContext.xml에 내용 추가하기 4. url로 ..
-
Tomcat 7.x : POST 전송 - maxPostSize 속성값 minor 버전에 따른 설정 차이Spring boot 2020. 8. 18. 13:50
이미지 파일 업로드가 아닌, 이미지 파일의 data string 변환 값을 (data:image/) tomcat 환경에서 전송하는 개발 중에, 문자열 값이 대~빵 늘어날 것을 우려하여 POST 전송 파라미터 사이즈에 max값을 무한으로 설정할 방법을 찾아보았다. tomcat server.xml 요 connector 설정 속성중에 마지막에 "maxPostSize" 라는 속성명을 추가하여 "0" 값을 주면 post 전송 데이터 무한 설정이 가능하다고 하길래 .. 적용 후에 테스트를 해보았으나.. 전송값 size 와 관계 없이.. 그냥 모든 POST 요청의 파라미터 값이 서버에서 null 으로 받아지는 사태가 발생!! 브라우저 콘솔 request 정보에는 분명히 모든 전송 파라미터 값이 로깅되고 서버 사이드는..
-
Spring에서 JPA / Hibernate 초기화 전략Spring boot 2020. 3. 24. 16:11
Spring-data-JPA와 DBMS를 연결해서 사용할 때 간편히 개발환경의 변경사항을 적용하여 테스트 할 수 있다. 특히 테스트를 위한 in-memory Database인 H2 Database를 염두에 둔 DB 초기화 전략에서 신경쓸 점을 간략히 정리해보았다. DDL generation Spring은 EntityScan을 통해 @Entity 애노테이션이 명시한 클래스를 찾는다. spring.jpa.generate-ddl=true 옵션을 true로 설정하면 해당 데이터를 근거로 서버 시작 시점에 DDL문을 생성하여 DB에 적용한다. jpa.generate 설정은 JPA 구현체 DDL생성 옵션의 링크이고, true / false 밖에 선택할 수 없다. 대부분 구현체로 Hibernate를 사용하기 때문에 ..
-
JPA 패턴Spring boot 2020. 3. 24. 09:38
컬럼 에노테이션 사용 1 2 3 4 5 6 7 8 9 10 @Entity @Table(name = "member") data class Member( @Column(name = "username", nullable = false) var username: String, @Column(name = "age", nullable = false) var age: Int = 0, @Column(name = "email", nullable = false, unique = true, updatable = false) var email: String ) 칼럼 에노테이션과 멤버 필명이 동일한 경우 칼럼에노테이션을 생략하는 경우도 있다. 그래서 일치하지 않은 것들만 작성하는 방법도 있지만 나는 모든 멤버 필드에 칼럼 에노..
-
Spring boot JPA CASCADESpring boot 2020. 3. 13. 15:18
# JPA CascadeType 종류 ## 1. 배경 - JPA 개인 프로젝트를 진행하던 중, 게시판과 파일, 댓글에서 @OneToMany - @ManyToOne의 관계에서 영속성 관리에서 문제가 발생되었으며, 영속성에서 참조된 객체를 지워주지 않았기 때문에 발생하였다. 더 정확한 내용은 알아볼 예정이다. ## 2. 내용 CascadeType.PERSIST 엔티티를 영속화 할 때이 필드에 보유 된 엔티티도 유지합니다. EntityManager가 flush 중에 새로운 엔티티를 참조하는 필드를 찾고이 필드가 CascadeType.PERSIST를 사용하지 않으면 오류이므로이 Cascade 규칙의 자유로운 적용을 제안합니다. CascadeType.MERGE 엔티티 상태를 병합 할 때, 이 필드에 보유 된 엔티..
-
Spring JpaRepositoySpring boot 2020. 3. 13. 12:50
Spring Data JPA는 "JpaRepository"라는 기능을 사용하면 매우 간단히 데이터를 검색 할 수 있도록 된다. 그 기본적인 사용법을 설명한다. JpaRepository 인터페이스 생성 이전에 기본적인 데이터베이스 액세스 대해 대충 설명을 했었다. 이 때, 데이터의 검색에 대해서는 "JPQL"라는 쿼리 문을 사용 할 수 있다는 것을 설명했었는데 기억하는가? 이 설명을 읽고 본인도 모르게 한숨을 쉰 사람도 분명 많았을 것이다. SQL이라는 것을 보고 싶지 않아서 프레임워크를 사용하려고 했는데, 설마 SQL 같은 것이 있을 거라고는 생각하지 못했을 것이다. 그래도 아직 안심해도 된다. Spring Framework에는 더 똑똑하게 데이터 검색을 할 수 있는 구조가 제대로 준비되어 있다. 그것이..
-
Spring boot JWTSpring boot 2020. 3. 10. 13:49
이 글은 OAuth와 JSON Web Token과 같은 토큰 기반의 인증을 처음 접하는 자바 개발자를 위한 가이드입니다. 우선 JSON Web Token (줄여서 JWT라고 하고 “jot”이라고 읽습니다.)을 살펴 보겠습니다. JWT는 권한claim라고 하는 정보를 디지털 서명을 하고 나중에 비밀 서명 키로 검증하는 도구 입니다. 토큰 인증이란? 애플리케이션이 사용자가 누구인지 확인하는 과정을 인증authentication이라고 합니다. 전통적으로 애플리케이션은 세션 아이디를 기반으로하는 세션 쿠키를 통해서 서버측에 사용자의 식별자identity를 저장하고 값을 유지합니다. 이러한 구조에서는 개발자가 서버 고유의 방식으로 세션 저장소를 구성하거나 완전히 독립적인 세션 저장소 계층을 구현해야 합니다. 토큰..