일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링
- Proxy
- springdatajpa
- jpa
- 백준
- JDBC
- Exception
- Android
- transaction
- pointcut
- java
- 자바
- Servlet
- 스프링 핵심 원리
- JPQL
- Thymeleaf
- Spring Boot
- AOP
- kotlin
- QueryDSL
- http
- 스프링 핵심 기능
- 그리디
- 인프런
- 알고리즘
- Greedy
- spring
- SpringBoot
- db
- 김영한
- Today
- Total
목록Project (101)
개발자되기 프로젝트
1. 요구사항 본인이 작성한 글만 수정, 삭제가 가능해야 한다. 본인이 작성한 댓글만 삭제가 가능해야 한다. 2. 로직 컨셉. 버튼을 통해 접속하는 경우 차단 해당 글에 대한 수정/삭제 권한이 없는 경우 => post.member.id가 member.id 와 다른 경우 memberDto.authority에 "nonAuthorized"추가. 각 뷰에서 권한 판단이 필요할 경우 ${member.authority}를 사용하여 수정/삭제 버튼을 비활성화 시킴. url을 통한 직접 접속 Session에서 로그인 정보를 가져왔을 때 session에 로그인 유저의 정보가 없거나, 유저의 authority가 nonAuthorized인 경우 목록으로 redirect시켜버림. 3. PostController loginMe..
1. 로그인 한 사용자만 글 작성 가능. 현재 로그인 없이 글 작성 화면으로 접속을 시도하면 에러가 발생한다. Session에서 로그인 정보를 가져와서 접속 정보를 보여주는데, 이 때 세션이 없으니, memberId가 없어서 발생하는 문제이다. 이 말은 단순 조회도 안된다는 얘기다.. ㅋㅋㅋㅋ 실제로도 안된다. aused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "member.userId" (template: "post/addform" - line 18, col 26) 2. PostController 비 로그인 Guest가 접속하는 경우 Guest계정을 만들어서 return 해주자. @GetMapping pu..
보통 회원 가입시 id, email등에 조건이 있다. 공백을 포함하지 않음. id, 이름,email에 특수문자 포함하지 않음(email의 @제외) 비밀번호는 1개 이상의 특수문자 사용. 위의 조건을 검증하는 로직을 추가해보자. 1.MemberController 공백 허용 없음. id, 이름, email 특수문자 허용 없음. email에는 반드시 @ 포함. 검증 순서는 필수값 입력 여부 공백 특수문자 검증 id 중복여부 @Controller @RequiredArgsConstructor @Slf4j @RequestMapping("/members") public class MemberController { private final MemberService memberService; Map errors = ne..
1. 요구사항 로그인 Id 필수 다른 유저와 중복할 수 없음. 비밀번호 필수 이름 필수 문자 말고 다른 타입 허용 안함. Email 필수 다른 유저의 id와 중복될 수 없음. 2. MemberController 필수값 입력, id중복여부를 검증한다. error가 있는 경우 errors에 error가 발생한 필드 명과 message를 넣어준다. errors는 model에 담아 view로 넘겨준다. view에서 에러가 있는 경우 해당 메시지를 보여 줄 예정. 만약 이전 페이지에서 필드 에러가 발생하여 수정후 다시 요청을 보냈을 경우를 대비하여 error.clear()를 먼저 해준다. Map errors = new HashMap(); @PostMapping("/new/form") public String sa..
1. 글 수정기능 추가 현재 글을 수정할 수 있는 기능이 없다.. 다음과 같이 수정 버튼을 클릭하면 글 수정 페이지로 이동하여 수정하도록 하자. 2. post.html HTML하단에 다음과 같이 추가해 주자. 버튼을 나란히 두고 싶어서 을 사용함. 글을 삭제하는 form tag안에 수정 페이지로 이동하는 버튼을 추가했다. 수정 페이지로 이동은 GET방식으로 button의 type을 button으로 지정하면 submit button과 별도로 움직일 수 있음. 수정 삭제 3. editform.html 기존 글 등록 form과 유사. th:field를 사용하면 model로 넘어온 파라미터의 값을 input 에 보여줌. 즉 기존에 작성된 내용을 input창에 보여준다. Title Content Submit 4...
1. 댓글 삭제버튼 추가 간단하게 table 안에 을 추가해줬다. 이 때 PathVariable로는 comment의 id, QueryParameter로 현재 Post의 id를 넘겨준다. 작성자 내용 작성일 삭제 작성자 댓글 내용 2. Controller view에서 넘어오는 PathVariable, QueryParameter를 받아서 처리함. comment 삭제 후 현재 게시물로 redirect @PostMapping("/{commentId}/delete") public String deleteComment(@PathVariable("commentId") Long id, @RequestParam("postId") Long postId, RedirectAttributes redirectAttributes)..
1. 회원 탈퇴하기 현재 연관관계는 아래와 같다. Post : Member -> 다대일 Comment : Member -> 다대일 Member는 삭제하면 Post, Comment는 고아객체가 된다. 그렇다고 예외를 피하기 위해 CASCADE, OrphanRemoval을 사용하여 Member 삭제시 그 회원이 작성한 글, 댓글을 삭제하는건 안된다. 회원 탈퇴 요청이 들어오면 해당 회원이 작성한 글은 "탈퇴회원"으로 변경해주자. 2. MemberController 회원 탈퇴 요청이 들어오면 해당 회원이 작성한 모든 글, 댓글을 탈퇴한 회원 개체로 변경. 회원 data 삭제 후 홈으로 redirect @PostMapping("/{memberId}/delete") public String deleteMember..
1. 현상 댓글이 있는 글을 삭제하려고 시도하면 에러가 발생한다. Referential integrity constraint violation 예외가 발생한다. Referential integrity constraint violations는 참조 무결성 제약조건 위반을 말한다. Comment(N)와 Post(1)의 연관관계는 Comment가 연관관계의 주인이다. 따라서 COMMENT에서 POST의 PK를 FK로 가지고 있다. log를 보면 FK에서 문제가 발생했고, 해당 예외는 FK를 참조할 수가 없어서 발생한 문제이다. 현제 Post 삭제 로직은 post(1)만 삭제하지 연관관계에 있는 coment(N)를 삭제하지 않는다. 따라서 comment입장에서는 post가 삭제되면 가지고 있는 FK로 참조할 데..