스프링/스프링부트+JPA - 블로그
-
스프링부트+JPA 블로그 프로젝트 11 댓글스프링/스프링부트+JPA - 블로그 2021. 9. 2. 21:24
유투버 '데어프로그래밍'님 강의 참조 ▲ 댓글/댓글 리스트 디자인 detail.js -> w3schools 의 card를 참고 했음 댓글 리스트 댓글 내용 작성자:asdadasds 삭제 ▲ 댓글 목록 뿌리기 ReplyRepository public interface ReplyRepository extends JpaRepository{} 이미 Board 모델에 reply를 mappedby로 들고오기때문에 jsp에서 찾아서 뿌리기만 하면 된다. 하지만 지금 무한참조 오류가 있다. 무한참조 오류가 나는 이유는 reply 모델 객체가 board 객체를 받음으로써 board객체를 부를때 board객체 안의 모든 변수 + reply/user까지 잘불러지고 user또한 잘 불러지는데 reply에 와서 reply가 가..
-
스프링부트+JPA 블로그 프로젝트 10 카카오 로그인(OAuth2.0)스프링/스프링부트+JPA - 블로그 2021. 9. 2. 12:25
유투버 '데어프로그래밍'님 강의 참조 ▲ 카카오 기본 세팅 카카오 API 받기 카카오개발자센터 → 로그인 → 내 애플리케이션 → 애플리케이션 추가 → REST API 키 저장 → 플랫폼 설정하기 → Web플랫폼 → 현재 포트번호 + 주소 → 메뉴에 카카오 로그인 → 활성화 ON → Redirect URI 설정(http://localhost8000/auth/kaka/callback) → 메뉴에 동의항목 → 닉네임/프로필/카카오계정 필수동의 → Redirect URI = 카카오 로그인시 정상적으로 되면 응답받을 주소 (카카오에서 정보를 전달받아서 돌려 줌) ▲ OAuth 개념 최근 인터넷의 빠른발전으로 인해 수억개의 웹사이트가 생겨나고 개인이 여러사이트를 가입하고 사용하다보니 개인정보노출의 위험 또한 늘어나..
-
스프링부트+JPA 블로그 프로젝트 09 회원정보 수정(시큐리티)스프링/스프링부트+JPA - 블로그 2021. 9. 1. 19:16
유투버 '데어프로그래밍'님 강의 참조 ▲ 회원정보 수정 하기 Controller 추가 //회원수정화면으로 이동 @GetMapping("/user/updateForm") public String updateForm() { return "user/updateForm"; } header.jsp에 나와있는데로 updateForm 생성 Username: Password: Email: 회원 수정 완료 수정 완료 버튼 용 user.js 추가 let index = { ... init:function(){ $("#btn-update").on("click",()=>{ //function(){} 대신 ()=>{}를 써서 전역변수 this를 바인딩 this.update(); }); }, update:function(){ le..
-
스프링부트+JPA 블로그 프로젝트 08 스프링 작동 원리 복습스프링/스프링부트+JPA - 블로그 2021. 9. 1. 15:32
유투버 '데어프로그래밍'님 강의 참조 ▲ 전체 흐름 1. 톰켓 시작2. 모든 필터가 메모리에 올라감 → 권한/인증/인코딩 등 걸러야할 것들이 여기서 걸러 짐3. 디스패처가 메모리에 올라감 → 사용자가 요청하는 URL주소를 디스패처가 확인하여 컨트롤러로 뿌림4. 컨트롤러→서비스→JPA레파지토리→영속성 컨텍스트가 차례대로 메모리에 뜸 (요청에 따라 새로운 C/S/R/C가 뜨게 됨, 하지만 요청(REQUEST)이 와야 메모리에 뜸. 요청없이는 일단 대기 상태) 5. DataSource하나는 메모리에 뜸 (DS는 DB와 연결되어있음)6. ViewResolver/Intercepter도 메모리에 뜸 ☞ 로그인 요청시를 예로 보자 1. 사용자가 로그인 요청(REQUEST) 'http://localhost:8000/l..
-
스프링부트+JPA 블로그 프로젝트 07 게시판스프링/스프링부트+JPA - 블로그 2021. 8. 31. 19:43
유투버 '데어프로그래밍'님 강의 참조 ▲ 글쓰기 컨트롤러 세팅 @Controller public class BoardController { @GetMapping("/board/saveForm") public String saveForm() { return "board/saveForm"; } header.jsp에 주소 세팅 글쓰기 회원정보 로그아웃 board를 위한 jsp 폴더 및 saveForm 세팅 Title: Content: 글쓰기 완료 디자인은 섬머노트! 헤더에 링크와 스크립트 삽입 글쓰기 완료 버튼작동을 위한 board.js 와 ajax 세팅 let index = { init:function(){ $("#btn-save").on("click",()=>{ //function(){} 대신 ()=>{}..
-
스프링부트+JPA 블로그 프로젝트 06 로그인(트랜잭션/시큐리티)스프링/스프링부트+JPA - 블로그 2021. 8. 30. 20:29
유투버 '데어프로그래밍'님 강의 참조 ▲ DB 격리 수준 ☞ READ COMMIT - 오라클용 * 사전 지식 Transaction --> 일이 처리되기 위한 가장 작은 단위 이러한 작은 트랜잭션들이 모여 하나의 트랜잭션을 만들고 이 하나의 트랜잭션을 처리하는게 스프링의 Service 그렇다면 트랜잭션에서의 DB격리 수준이란 무슨 말일까? 오라클에서는 COMMIT전의 데이터는 바뀌지 않는다(격리 된다)라고 생각하면 쉬울 것 같다. 예를 들어 보자 EMPNO NAME 10 홍길동 11 임꺽정 위의 테이블에서 A라는 사람이 13:00 PM에 번호 11번의 이름을 '장보고'라고 UPDATE문을 날렸다. EMPNO NAME 10 홍길동 11 장보고(13:00PM) 이때 B라는 사람도 동시에 13:00PM에 오라클..
-
스프링부트+JPA 블로그 프로젝트 05 회원가입 개념(DTO/Ajax)스프링/스프링부트+JPA - 블로그 2021. 8. 30. 13:11
유투버 '데어프로그래밍'님 강의 참조 간단 디자인은 모두 w3school을 이용 한다! 1) 메뉴/푸터/글목록 - 메뉴 디자인은 w3school의 NavBar에 'Collapsing The Navigation Bar' 를 참조 src에 직접 하위폴더들을 세팅하고 yml에 prefix/suffix를 세팅하여 연결 w3school의 디자인을 좀 바꾼 후 컨트롤러 만들어서 테스트! * Home을 누르면 메인으로 오기 위한 세팅 @Controller public class BoardController { @GetMapping({"","/"}) public String index() { return "index"; } } *index.jsp HOME 이제부터 이 URL를 잘 이해해야 이동이 쉬워 진다! - 푸터 ..
-
스프링부트+JPA 블로그 프로젝트 04 부트와 JPA의 필수 개념 (JSON/영속성/어노테이션 그리고 CRUD 테스트)스프링/스프링부트+JPA - 블로그 2021. 8. 28. 20:56
유투버 '데어프로그래밍'님 강의 참조 1) JSON 사용자들이 웹/어플리케이션을 사용할때 서로간에 주고 받는 데이터가 있는데 이 데이터를 표준화 없이 주고받는다면 각자가 가지각색의 데이터 형식을 들고 있을 것이다. 이 가지각색의 데이터를 각자가 또 번역을 해야하는 번거로움도 생긴다. 이를 해결하기위해서 나온것이 XML/JSON형태인데 데이터송수신을위한 '공용어'이다. 현재는 XML이 많이 사장되고 JSON을 거의 쓰는 추세이다 JSON은 정말 간단하게 타입에상관없이 키와 밸류로 구성 된다. {'김':'만두'} 예로 자바와 파이썬간에 데이터를 교환한다고 보자. 자바 Object -> JSON 으로 바꿔서 파이썬으로 가고 파이썬은 이 JSON을 파이썬 Object로 바꾸기만 하면 되는 것! 자기 데이터 ->..