목록프로그래밍/spring (153)
쌓고 쌓다
먼저 아래의 테스트 코드를 보자.@SpringBootTestclass ItemRepositoryTest { @Autowired ItemRepository itemRepository; @Autowired PlatformTransactionManager transactionManager; TransactionStatus status; @BeforeEach void beforeEach() { // 트랜잭션 시작 status = transactionManager.getTransaction(new DefaultTransactionDefinition()); } @AfterEach void afterEach() { //..
테스트 코드를 실행하는데 잘 되던 테스트 코드가 갑자기 안된다...!단건 검색 쿼리에 결과가 2개가 나온다고한다. 문제가 발생한 코드 라인이다.태그의 name을 검색하여 태그를 찾는 코드인데여기서 2개의 태그가 반환된다는 것이다. @BeforeEachpublic void setup() { Tag tag = new Tag(); tag.setName("여행"); tagRepository.save(tag);}테스트 코드의 @BeforeEach문에서 태그의 name이 "여행"인 엔티티를 저장한다. 그런데 이미 로컬 환경에서 태그의 name이 "여행"이 이미 존재하는 상황이다.그래서 단건 조회의 쿼리가 여러개의 결과를 반환하는 에러가 발생한 것이다. DB 테이블 생성시 제약조건에 name의..
게시글 검색 기능에 "img" 키워드로 검색을하자성공적으로 게시글 조회가 잘 되지만. 해당 게시글의 내용이나 제목에는 "img" 키워드를 포함하지 않는다. 문제 원인은 웹 에디터의 게시글의 내용을 태그와 함께 모든 정보를 DB에 저장하는데이것을 LIKE 연산자로 키워드 검색을 했기 때문이다. DB에 저장된 해당 게시글의 내용에는 태그를 포함하고 있기 때문에 검색이 된것이다. 위와 같이 순수 텍스트 내용만 담을 pure_content 컬럼을 추가해서태그 내용은 제외하고 저장하자. 웹 에디터 내용을 어떻게 파싱해서 순수 텍스트만 저장할까싶은데라이브러리를 사용하자. 자바에서 사용하는 Jsoup 라이브러리를 이용해 html을 파싱할 수 있다.https://jsoup.org/download Download a..
이전에 잘만 서버에서 처리하던 업로드 요청이...도메인을 구입하여 서버와 연결한 이후에파일 업로드 기능을 수행했더니 ... 다음과 같은 상황이 발생했다.빨간색으로 에러가 팡팡~ 서버에서 처리하지 못하는 에러는 아니다.CORS error, preflight 그게 뭔데~~! OPTIONS 메서드는 뭔데~~! 출처에 따른 리소스 공유브라우저는 SOP(Standard Operating Procedures) 정책을 따른다.그 정책중에 "같은 출처에서만 리소스를 공유할 수 있다"가 있다. 출처에 따른 리소스 공유가 무엇일까? 내가 만든 웹이 a.com이라고하자.a.com에서 업로드된 이미지 파일을 가져오기위해서 a.com에 이미지 파일을 요청할 수 있다.이때 a.com에서 a.com으로 요청을 했다. 이것이 같은..
외부 서버에서 구글 OAuth2 로그인을 위해서redirect-uri를 localhost뿐만아니라 외부 서버 주소를 등록하려고 했더니..구글의 리디렉션 URI는 도메인 형식으로만 가능하다고 한다...localhost는 도메인 형식이 아니라도 허용해둔 것 같다...그래서~~ 도메인을 연결해보기로 한다. 가비아에서 도메인을 구매했는데 구매 후 즉시 구매한 도메인 관리가 탭은 안뜨고 5~10분 후에 뜬다.왜 결제했는데 바로 안뜨나 했다. DNS 설정에 위와 같이 호스트에 www, @를 넣고 값/위치는 서버 IP 주소를 넣어주자.여기에 계속 123.456:8080과 같이 포트도 넣으려 했는데 포트는 들어가지 않기에 나중에 포트 포워딩도 해주어야한다.그러니 서버 IP 주소만 넣어주자.호스트에 @는 www.test..
현재 CKEditor5를 사용해서 게시글의 텍스트 중간중간에 이미지 파일을 출력하고 있다. 이러한 방식의 게시글을 위해서는 사용자가 이미지 파일 업로드시에서버에서 업로드한 이미지파일을 저장하고 그 URL 경로를 통해서 게시글의 중간에 이미지 파일을 출력할 수 있다. 그런데 바로 이미지 파일을 바로 업로드 해버리면 다음과 같은 문제가 발생한다. 문제게시글 작성(수정)중에 나가버리는 경우 업로드한 파일은 쓰레기가 된다. 그래서 다음과 같은 구현 방법을 고민해야한다.게시글 작성(수정)중에 나가버리는 경우 업로드된 파일은 어떻게 관리할 것인가?게시글 수정하여 지워버린 이미지 파일은 어떻게 관리할 것인가? 해결 방법이미지 파일 업로드시에 게시글과의 연관관계는 우선 NULL로 맺어놓는다.이미지 파일의 저장 정보는..
SpringBoot와 javascript를 이용해 이미지 파일 업로드를 구현해보자.공식 레퍼런스는 https://ckeditor.com/docs/ckeditor5/latest/framework/deep-dive/upload-adapter.html 이다. 우선 CKEditor를 통해 서버로 파일을 전송 받는 과정까지만 코드를 작성했다. 에디터를 통해 업로드 요청온 파일을 처리하는 Controller 코드는 다음과 같다.@PostMapping("/test")@ResponseBodypublic Map test(@RequestPart(name = "posterImages", required = false) MultipartFile uploadPosterImages) { String originalFilen..
프로젝트에 위지윅 에디터를 사용하기위해 CKEditor 오픈소스를 적용했다. 사용자가 굵은 글씨, 기울임 등 에디터를 통해 작성한 내용을 서버에서 저장하기위해서는태그를 함께 저장해야한다. 태그를 함께 저장해야할텐데 XSS 공격은 어떻게 대응할까? 동작 예시를 통해 대응 방법을 이해해보자. 사용자가 의도적으로 굵은 글씨를 표현하는 태그인 태그를 다음과 같이 삽입했다고 하자. 에디터를 통해 서버로 넘어와 저장되는 값은 다음과 같다. ' html에서 , & 는 같은 특수한 기능을하는 문자들이므로서버에서는 안전한 문자로 저장할 필요가 있기에 변환하여 저장한 것이다. 그러면 의도적으로 태그를 삽입하는것이 아닌에디터를 통해서 굵은 글씨를 작성해보자. 서버에는 어떻게 저장이 될까? DB에는 '그렇다. 라이브러리에..