SPRING/IceWater Community

    [스프링] 댓글 좋아요/싫어요 구현 - (Ajax)

    [스프링] 댓글 좋아요/싫어요 구현 - (Ajax)

    [스프링] 추천기능 구현 (OKKY사이트 추천기능 참고) :: 간편 웹프로그래밍 (tistory.com) [스프링] 추천기능 구현 (OKKY사이트 추천기능 참고) 이번엔 추천기능을 구현해보았다. OKKY사이트처럼 추천을 하면 게시글에 추천수가 오르고, 게시글을 올린 회원의 추천 수가 올라가게 구현했다. ajax도 사용해봤는데, 추천수를 카운트하는 부분 kimfk567.tistory.com 저번 글에서 게시글 추천 기능을 구현했었다. 이번엔 댓글에 비동기 방식으로 추천기능을 구현해보려고 한다. 댓글에 좋아요/싫어요를 누르면 OKKY사이트 처럼 해당 회원의 포인트에 영향을 미치고, 좋아요와 싫어요를 따로 구분한다. 좋아요/싫어요가 반영되는 memberPoint 라는 컬럼 외에, 네이버 지식in의 내공시스템처..

    [스프링] 게시판 이전글 다음글 읽은 글 표시

    [스프링] 게시판 이전글 다음글 읽은 글 표시

    기능 설명 사진 이전글 다음글 기능 이전글을 눌러서 이전글로 이동 , 이미 읽은 글인 다음글이 읽음 표시됨 해당 기능은 이미 구현한 기능들에 덧붙인 기능이기 때문에, 이 전글들을 참고하길 바랍니다. [스프링]게시판 이전글 다음글 구현 :: 간편 웹프로그래밍 (tistory.com)

    [스프링]게시판 읽은 글 표시

    [스프링]게시판 읽은 글 표시

    이번엔 게시판에서, 회원마다 읽은 글을 목록에 표시해주는 기능 을 구현했다. join을 이용해서 구현했는데, 마침 조인쿼리는 경험이 적어서 많이 헤맸다. 특히, 익숙하지 않은 조인쿼리를 mybatis에서, 그것도 페이징 , 검색 , 조건부 정렬, 카테고리구분 의 기능이 적용되어있는 복잡한(내 기준 ㅜ) 게시글 목록 select문에 적용시키느라 쉽지 않았다. 적용시키려고 뷰,컨트롤러,VO,Mapper 등등 여기저기 다 건드리고, 디벨로퍼에서 수십번씩 쿼리를 써보고, 수많은 시행착오 끝에 결과적으로 조인쿼리에 대해 많이 알게됐다. 역시 직접 구르는게 최ㄱ.. Join은 실제로 많이 사용하는 쿼리라고 하니 참 좋은 경험이였던 것 같다. 코드설명에 앞서, 먼저 로직을 간단하게 설명해보면 회원의 읽은 목록을 저장..

    [스프링] 공지사항 구현

    [스프링] 공지사항 구현

    설명에 앞서, 이번 게시판 프로젝트는 여러 개의 테이블로 카테고리를 나누지 않고, 한 개의 테이블에 bgno라는 number 컬럼으로 카테고리를 나누었다, 게시글목록 쿼리에 where bgno = #{bgno} 를 추가해서 게시글을 카테고리 별로 나눠 출력하고, bgno가 0일때는 해당 where문을 없애서 ( if문) ALL 카테고리를 만들었다. [스프링] 다중 게시판 구현 (CRUD) :: 간편 웹프로그래밍 (tistory.com) [스프링] 다중 게시판 구현 (CRUD) 이번엔 다중 게시판을 구현해보려고 한다. 순서는 먼저 게시판테이블에 BGNO 라는 게시판 구분용 속성을 추가한다. 게시판 테이블은 여러개 만들지 않고, 하나의 테이블을 사용하는 방식으로 구 kimfk567.tistory.com 현재..

    [스프링] 추천기능 구현 (OKKY사이트 추천기능 참고)

    [스프링] 추천기능 구현 (OKKY사이트 추천기능 참고)

    이번엔 추천기능을 구현해보았다. OKKY사이트처럼 추천을 하면 게시글에 추천수가 오르고, 게시글을 올린 회원의 추천 수가 올라가게 구현했다. ajax도 사용해봤는데, 추천수를 카운트하는 부분을 따로 비동기방식으로 구현하기에는 이미 동기방식으로 구현해놓아서 필요성을 느끼지 못했다. 코드도 복잡해질테고.. 그래서 중복방지기능만에 비동기방식을 사용하고, reload로 페이지를 새로고침해서 추천수를 갱신되게 구현했다. 현재 만들고 있는 게시판 프로젝트는 추천수를 기준으로 여러 혜택을 줄 수 있는 기능을 생각하고 있기 때문에, 추천수를 기준으로 정렬는 기준은 물론, 추천을 받은 기간을 나누기 위해서 date 타입의 컬럼도 넣어줬다. 구현한 기능은 추천버튼을 누르면 추천, 다시 누르면 추천취소 회원마다 게시글별 1..

    [스프링] 회원정보수정 - 회원탈퇴 (ajax)

    [스프링] 회원정보수정 - 회원탈퇴 (ajax)

    이번엔 회원탈퇴이다. [스프링] 회원정보수정 - 비밀번호 (ajax) :: 간편 웹프로그래밍 (tistory.com) [스프링] 회원정보수정 - 비밀번호 (ajax) 저번 글에서 회원 정보 수정 아이디와 이메일을 구현했다. 비밀번호도 세션값의 계정ID를 통해 ajax로 유효성검사를 한다. 회원가입시 비밀번호는 암호화되서 DB에 저장되기 때문에, 암호화 된 비 kimfk567.tistory.com 이전에 작성한 로직과 아주 비슷하다. 전글에서 만들어놓은 비밀번호 유효성검사를 그대로 사용하며, update와 delete 쿼리의 차이, 프론트에서 약간의 차이만 있을뿐 동일한 로직을 사용해서 설명은 간단하게 생략하도록 하겠다. Mapper.xml delete from MP_MEMBER WHERE MEMBER_I..

    [스프링] 회원정보수정 - 비밀번호 (ajax)

    [스프링] 회원정보수정 - 비밀번호 (ajax)

    저번 글에서 회원 정보 수정 아이디와 이메일을 구현했다. 비밀번호도 세션값의 계정ID를 통해 ajax로 유효성검사를 한다. 회원가입시 비밀번호는 암호화되서 DB에 저장되기 때문에, 암호화 된 비밀번호를 새로 입력한 아이디와 비교한다. 그 후 입력한 비밀번호를 암호화해서 DB에 넣어주도록 구현했다. 이번 글에선 ajax를 좀 더 간단하게 작성해 사용해봤다. Mapper.xml select MEMBER_PW from mp_member where member_id = #{memberId} update MP_MEMBER set MEMBER_PW = #{memberPw} where MEMBER_ID = #{memberId} 유효성검사와 비밀번호변경 둘다 세션의 ID값을 사용한다. DAO,DAOImpl public..

    [스프링] 회원정보수정  - 닉네임,이메일  (ajax)

    [스프링] 회원정보수정 - 닉네임,이메일 (ajax)

    오늘은 회원 정보 수정을 구현해보려고 한다. 이메일에는 아직 횟수제한을 걸어놓지 않았기 때문에, 따로 유효성 검사는 하지않고 이메일 양식만 체크하고, 닉네임은 ajax를 사용해서 비동기방식으로 유효성 검사를 했다. 간단하게 count 후 , if문 -> alert창으로 유효성 검사를 할 수도 있겠지만.. ajax가 아직 어렵게 느껴져서 익숙해지기 위해 일부로 사용해봤다. 회원정보 수정페이지에서, 아이디와 닉네임 이메일이 있는데, 아이디는 수정불가로 구현했다. 닉네임 수정 기능을 추가하기전에, 글 , 댓글작성 시에 제목,작성자명,내용으로 insert되는 로직을 제목 , 작성자명(닉네임) , 내용 , ID (input type="hidden") 로 바꾸어줬다. 글수정,삭제 등의 권한을 작성자명이 아닌, ID..

    [스프링]비밀번호 찾기 구현

    [스프링]비밀번호 찾기 구현

    이번엔 아이디/비밀번호 찾기를 구현했다. 아이디는 간단하게 이메일로만 찾을 수 있도록 구현했고, 비밀번호는 전에 작성한 회원가입 글에서 만들어놓은 메일 , 난수 클래스를 이용해서 간단하게 구현했다. 아이디와 메일을 입력하면 임시비밀번호가 발급되도록 구현했다. (암호화 적용) mapper.xml update MP_MEMBER set MEMBER_PW = #{memberPw} where MEMBER_EMAIL = #{memberEmail} and MEMBER_ID = #{memberId} select count(*) from MP_MEMBER where MEMBER_EMAIL = #{memberEmail} and MEMBER_ID = #{memberId} 일단 저번 글의 아이디찾기 유효성 검사는 동일하다. ..

    [스프링] 아이디찾기 구현

    [스프링] 아이디찾기 구현

    이번엔 아이디/비밀번호 찾기를 구현했다. 아이디는 간단하게 이메일로만 찾을 수 있도록 구현했고, 비밀번호는 전 게시글에서 만들어놓은 메일 , 난수 클래스를 이용해서 간단하게 구현했다. 아이디와 메일을 입력하면 임시비밀번호가 발급되도록 구현했다. (암호화 적용) Mapper.xml select * from MP_MEMBER where MEMBER_EMAIL = #{memberEmail} select count(*) from MP_MEMBER where MEMBER_Email = #{memberEmail} 간단하다. IdCheck는 유효성 검사를 위해 작성한 쿼리인데, 입력한 이메일의 수를 카운트해서 0이 나오면 팝업창을 출력하게 로직을 짯다. findId는 select Id만해도 되지만 다른 쓸데가 있을까..