본문 바로가기

Spring boot49

Springboot [썸네일업로드 기능 추가] CarWrite.vue를 통하여 글을 쓸때 지금까지는 상세페이지에 글의 정보 + 이미지만 보여주도록 하였는데 썸네일 업로드를 추가하여 글을 쓸때 썸네일 등록시 Car.vue에서 등록한 썸네일이 데이터 테이블에 바로 보여지도록 만들었다. 원래는 Car테이블의 썸네일 컬럼에 이미지url을 넣어서 보여주어서 사용자는 썸네일에 대한 접근이 불가능 하였지만 기능 추가로 인해 사용자가 글을 쓸때 직접 원하는 썸네일을 등록할 수 있게 된다. 우선 CarController부터 수정을 하였다. ReauestParam에 "thumb"추가. 그리고 썸네일을 저장하는 carService를 만들어준다. (해당하는 carId를 넘겨주면서) saveThumb메서드는 지난번 파일업로드를 할때 만들었던 saveFile메서드와 구조적으.. 2022. 8. 1.
Springboot 파일업로드 로직 추가 및 vue 구현 지난 게시글에서 파일업로드를 하면 db에 파일 이름이 저장되고 assets하위 폴더에 이미지 파일을 저장시키는 것 까지 하였고 이후 글쓰기를 통하여 파일업로드를 하고 CarDetail.vue에 이미지 파일을 보여주는것 까지 구현을 하였다. 이미지를 보여주기 위하여 back단에서 해당하는 carId(게시글)의 fileName을 읽어주는 로직을 추가하였다. carId를 이용하여 fileName을 읽어야 하기 때문에 PathVariable에는 carId가 들어간다. 서비스에서 carId를 이용한 File을 찾도록 하는 로직 구현 Mapper에서 file 테이블의 해당 carId의 컬럼 추출하는 쿼리 작성 이제 vue에서 상세페이지에 글의 정보 및 이미지를 띄워서 보여주기만 하면 된다. 우선 앞서 만든 car/.. 2022. 7. 22.
Spring boot [파일 업로드] 게시글을 작성할때 이미지파일을 업로드 하기 위하여 글쓰기 기능을 수정하였다. 파일업로드를 통하여 File 테이블을 db에 우선 추가하여 주고, 컬럼으로는 게시글의 id를 받기 위하여 carId, fileName, fid를 넣었다. 만약 똑같은 이미지를 업로드 할 상황이 있다면 db의 저장된 fileName이 똑같기 떄문에 충돌이 일어날 상황을 방지하기 위하여 fileUpload기능중 carId + fileName으로 저장되도록 만들었다. 수정한 controller // 글 및 파일 등록 @SneakyThrows @PostMapping("/img") public String uploadFile(@RequestParam("author")String author, @RequestParam("carName")S.. 2022. 7. 13.
Spring boot [조회수 증가 기능] 게시판의 해당하는 id의 글을 읽을때 조회수(readCount)가 증가하는 기능을 만들었다. 해당 기능은 원하는 게시글 읽기와 조회수 증가를 같은 service단에 오도록 글읽기 service를 수정하였다. 즉 하나의 service안에서 글 불러오기(select)와 조회수 증가(update)가 한번에 진행된다. GetMapping을 사용하여 id값을 이용해 글을 불러오는 기존의 controller 앞서 말하였듯 같은 service에 updateReadCount 로직을 추가 DAO 예전에 만들었던 글 삭제 기능 (삭제시 isDel값을 Y로 바꿈) 을 참고하여 updateReadCount로 update쿼리를 사용하여 readCount컬럼의 값이 하나씩 증가하도록 mapper작성. POSTMAN에서조회수가 0.. 2022. 6. 27.
Spring boot (.war파일로 배포) 우선 아파치톰캣8 다운받는다. https://tomcat.apache.org/download-80.cgi Apache Tomcat® - Apache Tomcat 8 Software Downloads Welcome to the Apache Tomcat® 8.x software download page. This page provides download links for obtaining the latest versions of Tomcat 8.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versions tomcat.apache.org 64-bit Window.. 2021. 11. 3.
spring boot (.jar파일로 배포) 응답이 올수 있는것은 local pc이다. 이때까지의 방법은 intellij에서 play버튼을 통해 서버 구동시켰다. .jar파일로 SpringbootApi서버를 구동해 보았다. 우선 maven compile을 하고 .jar파일을 생성시켜야 한다. jar파일을 생성시키기 위해 우측의 Maven창에서 pakage를 더블클릭하여 컴파일시키고 다운을 받아야 한다. 하지만 처음에는 오류가 발생하게 되는데 intellij 설정에서 maven home path를 Bundled (Maven 3)로 바꿔주고 다시 pakage를 실행한다. 그러면 정상적으로 compile이 되면서 target 패키지 밑에 .jar파일이 생성된것을 확인 할 수 있다! .jar파일의 경로를 확인한 후 cmd 관리자 권한으로 실행. 그리고 ... 2021. 11. 2.
Springboot (다중 Transactional 처리로직 추가) Transactional처리로 Comment테이블에 Post, board의 row중 commentcount +1을 동시에 처리하도록 구현을 해 보았다.(comment를 포스트하는 api 호출) 댓글이란 글이 하나 이상이 존재해야 작성이 가능하다. 글이란 것은 board라는 테이블에 컬럼중 (commentCount) 댓글갯수가 나타나야 하고, comment데이터 추가하면 어떤글의 comment인지를 나타내는 id존재하여야 한다. 결국 코멘트의 아이디는 Board의 어딘가의 id가 되고, Comment에 포스트 할때는 Board 호출할때 한번의 sql호출이 필요하고 , CommentCount호출이 또 한번 필요하다 따라서 insert(댓글 post시),update(댓글수 +1) 두개를 호출을 해야하며 실패했.. 2021. 10. 27.
Springboot (Jpa를 사용하여 Crud기능 구현) 기존의 mybatis로 쿼리를 작성하여 테이블을 불러오는 방식을 Jpa로 바꾸어 Board를 불러와 보았다. 우선 boardjpa 만들고 마찬가지로 controller,model,service 디렉토리 또한 만든다. 사실 loginByToken을 구현할때 member에서도 jpa를 사용하기도 하였다. (member객체 : db테이블에서 선언하는 데이터타입) BoardJpaController.java에서 경로를 boardjpa로 바꾸어 준다. package kr.ac.daegu.springbootapi.boardjpa.controller; import kr.ac.daegu.springbootapi.board.model.BoardDTO; import kr.ac.daegu.springbootapi.boardj.. 2021. 10. 26.
Spring boot (test호출시 sequence diagram) [3] http://localhost:8080/test/를 호출하였을 때 sequence diagram 그리기 유효한 Token을 입력할때 앞서 Token값이 유효기간을 5초로 바꾸었는데 다시 처음의 값으로 5시간으로 바꾼다. test를 호출하여 하나 하나씩 디버깅.. 모든 클래스의 메소드를 거쳐 ApiResponse가 반환된다. 유효한 Token을 입력할때 sequence diagram JwtRequestFilter -> JwtTokenUtil -> JwtUserDetailsService -> MemberRepository -> TestController -> TestService -> ApiResponse -> END 2021. 10. 20.