일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 썸머노트
- 오라클월별데이터
- 자바기초
- 자바왕기초
- CSS
- 오라클통계
- Spring Boot가 해결하려고 했던 문제
- HTML
- 오라클
- 자바왕초보
- 오라클클라우드에 젠킨스 설치하기
- maven
- 스프링 구글차트
- 오라클일별데이터
- java
- 세션
- 자바
- 오라클주별데이터
- 스프링 제어역전
- 스프링 구글차트로 기간별 현황 조회하기
- 스프링 Ioc Container
- 스프링
- 스프링 Ioc
- jsp
- 스프링 에러
- 자바 왕기초
- 자바 기초
- 스프링 부트가 해결하려고 했던 문제
- 제이쿼리
- 스프링과 스프링부트 차이점
- Today
- Total
Just Do it
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 15일차 개발 일지 본문
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 15일차 개발 일지
Seojoo21 2022. 3. 25. 23:512022.03.25.금요일 15일차
오늘은 어제 완성하지 못한 게시글 추천 기능을 완성하고 대략적인 홈 화면을 구성하였다.
1. 제작 과정
- 게시글 추천 기능 구현
* 로그인한 사용자만 게시글 추천 가능
* 로그인한 사용자는 게시물당 한 번만 추천할 수 있음
* 이미 추천한 게시글일 경우 기존의 '추천' 버튼이 '추천 1'로 변경됨
* 이미 추천한 게시글 재조회 시 '추천 1' 버튼을 누르면 추천이 취소되고 원래의 '추천' 버튼으로 변경됨
https://seojoo21.tistory.com/159
[SJBoard 프로젝트] 기존 게시판 기능 보완 2: 게시물 추천(좋아요) 기능 구현
맨 처음 스프링으로 게시판을 만들 때부터 생각해둔 게시물 추천 기능을 이제 구현해야겠다는 생각이 들었다. 사실 맨 처음 게시판에 추천 기능을 넣고 싶다는 생각을 했을 때는 게시물을 클릭
seojoo21.tistory.com
2. 발생 에러 및 해결 방법
- More than one fragment with the name [spring_web] was found
https://seojoo21.tistory.com/158
[스프링/STS] More than one fragment with the name [spring_web] was found
1. 에러 아침에 STS를 열고 서버를 실행하는데 만난 에러. 어제까지만 해도 이상 없이 돌아가던 프로젝트였는데 갑자기 이러는 것이 이해가 되지 않았다. 이름이 [spring-web]인, 둘 이상의 fragment들
seojoo21.tistory.com
3. 오늘 프로젝트 진행하면서 추가로 배운 내용
1) 홈 화면에 최신 게시글과 인기 게시글을 불러오도록 하기 위해 RANK() OVER 함수와 INDEX 를 이용하여 쿼리문을 작성해 보았고 성능을 위해 INDEX를 사용한 쿼리문으로 mapper.xml을 작성하였다.
https://seojoo21.tistory.com/160
[오라클] 상위 n개 데이터 가져오기 (RANK OVER() 함수 또는 INDEX 사용)
아래 쿼리문은 tbl_board에서 추천수와 조회수가 가장 많은 게시물을 기준으로 정렬한 테이블을 인라인 뷰로 하여 상위 5개 게시물만 가져오는 쿼리문이다. SELECT BNO, TITLE, WRITER, LIKEHIT FROM (SELECT BNO,
seojoo21.tistory.com
<!-- 11. 최신 게시물을 가져온다. -->
<select id="getRecentList" resultType="com.seojoo21.domain.BoardVO">
<![CDATA[
select /*+index_desc(tbl_board pk_board)*/ bno, title, writer, regdate from tbl_board where rownum <= #{amount }
]]>
</select>
<!-- 12. 인기 게시물을 가져온다. -->
<select id="getLikeHitList" resultType="com.seojoo21.domain.BoardVO">
<![CDATA[
select bno, title, writer, likehit, viewhit
from
(select /*+index_desc(tbl_board idx_board_like)*/
bno, title, writer, likehit, viewhit from tbl_board)
where rownum <= #{amount }
]]>
</select>
2) 회원 탈퇴 시 자동 로그아웃이 되지 않아 회원 정보가 그대로 세션에 남아있는지 로그인 한 회원에게만 보이는 상단의 메뉴가 그대로 유지된 채 로그인 전 초기 메뉴로 변하지 않았다.
처음 회원 탈퇴 메서드를 컨트롤러에 구현할 때 부터 세션을 비우기 위해 session.invalidate() 를 사용하고 있었고 STS 콘솔창에서 로그를 확인했을 때도 회원 탈퇴 시 세션이 만료되는 것을 확인했기 때문에, DB에서조차 탈퇴 처리가 되어 데이터가 완전히 사라진 사용자의 정보가 홈 화면으로 리다이렉트 또는 일반 이동되었을 때 계속 유지되는 것이 이해되지 않았다.
결국 문제는 회원 탈퇴 시 자동 로그아웃이 되지 않아서 발생하는 것이었는데, 이를 해결하기 위해 컨트롤러에서 회원 탈퇴 처리 메서드를 구현할 때 반드시 아래 코드 한 줄을 넣어야했다.
SecurityContextHolder.clearContext();
이 코드를 추가 후 다시 테스트한 결과 회원 탈퇴 시 로그아웃도 자동으로 처리되어 상단 메뉴가 로그인 전 초기 메뉴로 이상 없이 변하는 것을 확인할 수 있었다. 스프링 시큐리티 기본 아키텍쳐에 대한 이해가 한참 부족한 것 같다. 제대로 공부해야겠다.
'개인프로젝트 > [스프링] SJBoard 개발일지' 카테고리의 다른 글
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 17일차 개발 일지 (0) | 2022.03.29 |
---|---|
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 16일차 개발 일지 (0) | 2022.03.26 |
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 14일차 개발 일지 (0) | 2022.03.25 |
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 13일차 개발 일지 (0) | 2022.03.23 |
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 12일차 개발 일지 (0) | 2022.03.23 |