window → Preference → html검색 → HTML files 밑에 Editor → (a, b, br, em, font, i, img, label, li, s, select, small, span, strike, strong, sub, sup, td, th
Lombok 이란 Java 라이브러리로 반복되는 getter, setter, toString .. 등의 반복 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리 Lombok은 여러가지 @어노테이션을 제공하고 이를 기반으로 반복 소스코드를 컴파일 과정에서 생성해주는 방
@Autowired를 생성자에 적용 객체의 생성자는, 객체 생성 시 1회만 호출된다는 게 보장되는 특징이 있다.이 특징 덕분에 주입받은 객체가 불변 객체여야 되거나, 반드시 해당 객체의 주입이 필요한 경우에 사용한다.즉, 생성자로 한번 의존 관계를 주입하면, 생성자는
ArticleRepository.xml기존에는 Mapper 인터페이스에 어노테이션을 이용해 SQL문을 작성하였으나 XML파일로 이전Mapper 인터페이스 : Mapper 설정 파일(xml)에 있는 SQL 쿼리문을 호출하기 위한 인터페이스XML파일로 작성시 namespa
1.MemberControllermemberService에게 회원 insert를 요청, 회원이 DB에 저장되면memberService로부터 마지막행의 id값을 얻고 id를 토대로 DB에서 회원정보를 얻어온다.2.MemberServicememberSerivce.doJoi
ResultData로 결과를 반환 , 앞에 했던 ResultData적용과 동일한 방식doDelete에도 동일하게 ResultData를 적용 (ResultData)joinRd; : joinRd의 타입은 ResultData<Integer> 이기때문에 형변환 필요m
1) UsrArticleController로그인 여부, 게시물 존재여부는 delete와 동일하다게시물의 수정 권한을 controller가 아닌 service에서 체크수정하기전 게시물에 대한 권한을 actorCanModifyRd로 결과를 받음, isFail()시 권한 없
jsp파일에서 공통된 상단,하단 부분의 코드를 head.jspf와 foot.jspf로 작성하여 include(include할 jspf파일의 위치는 현재 jsp파일위치 기준으로 작성<%@ include file="../common/head.jspf" %>)공통 상단
1) ArticleRepository.xmlINNER JOIN을 사용해 게시물에 저장되있는 회원번호로 회원에대한 정보중 nickname를 가져옴2) list.jsp${article.extra\_\_writer} : 작성자의 nickname을 보여줌1) ArticleRe
1) 뒤로가기 메서드삭제 실패시 history.back();를 이용해 뒤로가기 구현 메소드2) 경로 재설정 메서드삭제 후 location.replace()를 통해 uri 경로로 이동 메서드1) Rq 클래스로그인에 관한 중복 로직을 제거하기 위해 Rq클래스를 구현Http
1) NeedLoginInterceptor 구현 2) MyWebMvcConfigurer의 registry 등록addPathPatterns의 uri에 해당하는 요청이 올때 NeedLoginInterceptor 인터셉터 실행1) Rq클래스의 메소드(printHistor
head.jspfLOGIN, LOGOUT 버튼은 head.jspf에 코드가 작성되있음인터셉터를 통해 rq객체(로그인에 관한 정보를 담은 객체)를 만들어서 requset.setAttribute() 하고 있기 때문에rq객체를 통해 로그인상태 와 로그아웃 상태에따른 버튼 노
1) 데이지 UI 추가2) 수정 버튼 노출 제한삭제버튼 노출과 동일한 방식으로 게시물에 대한 권한을 체크하여 article.setExtra\_\_actorCanModify(actorCanModify.isSuccess()) : 게시물에 대한 권한 여부데이터를 추가1) R
1) head.jspfboardId로 게시판을 분리( 게시글에 boardId가 저장되있음 )2) board 객체DB의 board 테이블의 데이터를 board객체로 받음board객체를 model.addAttribute("board", board)하여 jsp파일에서 boa
1) Rq 객체Rq객체를 빈으로 등록하기위해 @Component 어노테이션을 사용@ComponentScan을 통해 @Component어노테이션이 붙은 클래스를 빈으로 등록기존에는 BeforeActionInterceptor 인터셉터에서 new연산자를 통해 Rq객체를 생
${param.page == i ? 'btn-active' : '' } : 삼항연산자를 사용하여 현재 페이지버튼에 'btn-active' 부여1) ArticleController showList()pagesCount는 총 게시물갯수 / 페이지당 보여줄 게시물 갯수에 반
1) 검색어에 따라서 게시물 노출쿼리문에 searchKeywordType, searchKeyword 을 추가하여 게시물을 가져오기위해 파라미터 추가2) 페이지 이동 시 검색어 유지(list.jsp)기존의 버튼 클릭시 이동하는 uri는 boardId와 page만 있기 때
jQuery에서 Ajax를 이용하여 GET 방식의 HTTP 요청을 구현한 $.get() 메소드사용../article/doIncreaseHitCountRd해당 uri는 이동시 조회수 증가를 시킴$('.article-detail\_\_hit-count').empty().h
reactionPoint 추천(좋아요,싫어요) 관련 테이블 생성게시물에 좋아요,싫어요 컬럼을 추가하지 않고 테이블로 생성 하는 이유 : 다른 곳에서 비슷한 기능을 추가하고 싶을때마다 해당 테이블의 컬럼을 추가해야 하기 때문에 reactionPoint테이블을 만들어 관련
상세페이지 쿼리문 변경(JOIN)서브쿼리 대신 조인을 이용해 3개의 테이블을 합침1\. 게시물에 좋아요/싫어요 선택했는지 찾는 쿼리문 회원번호(memberId)와 게시물번호(relId)를 통해 데이터를 조회해당 쿼리문의 결과가 0 이라면 좋아요/싫어요를 선택하지 않음좋
article테이블에 goodReactioPoint(좋아요)와 badReactionPoint(좋아요)의 컬럼을 추가 하였으므로 해당하는 데이터를 업데이트 해야한다.update join을 활용하여 reationPoint 테이블의 정보를 article테이블에 업데이트1)
기존 Controller , Service , Repository에서는 실행후 각각 반환타입이 다르다.브라우저, 컨트롤러 ,서비스에서 응답하는 표준 보고서 양식을 만들고자 한다.성공, 실패 쉽게판단이 가능하고, 메세지와 성공여부, 그에따른 데이터를 나타내는 보고서를 만
좋아요 싫어요 기능이 비슷하므로 좋아요 기능만 설명1) reactionController좋아요 버튼이 클릭이되면 /usr/reactionPoint/doGoodReaction로 이동이 된다.actorCanMakeReaction()를 통해 좋아요/싫어요 했는지 여부를 파악
1) articleController에서 actorCanMakeReaction 사용 reactionPointService.actorCanMakeReaction : 좋아요/싫어요 할수있는지 여부를 ResultData로 반환actorCanMakeReactionRd.getR
댓글 작성 폼 git hub댓글 내용 미작성시 체크jsp게시판에서 했던 내용폼 o작성 x폼 체크( 댓글내용 미입력시 submit 제한) o중복 submit 방지 o댓글 Controller, Service, Repository 구현 x 댓글 리스팅리스팅시 ajax를 이용
댓글도 마찬가지로 ReplyController, ReplyService, ReplyRepository 먼저 만들고 기능을 추가1) ReplyController댓글 작성 폼으로 댓글을 작성을 시도한다면 onsubmit="ReplyWrite\_\_submitForm(thi
1) 댓글 리스트에 수정/삭제 권한 데이터 업데이트게시물의 수정/삭제 권한 데이터를 게시물 객체에 직접 업데이트 했던 것처럼DB로부터 댓글을 List로 가져온 후댓글에 대한 수정/삭제 권한을 updateForPrintData(actor, reply)를 통해 댓글 객체에
1) ReplyController이전 작성했던 수정 폼에서 데이터를 전송받아 댓글 삭제와 동일하게 권한 체크 후 댓글 수정2) ReplyRepository댓글을 DB에 업데이트 하는 쿼리문myPage.jsp../member/myPage로 접근시 보여지는 뷰로 로그인된
1) 인터셉터 경로 추가로그인해야 가능한 경로이므로 로그인상태가 아니라면 해당 uri에 접근을 막음 위에 uri는 회원정보 변경 관련2) MemberController회원정보 수정 전 패스워드 체크후 /usr/member/modify 로 이동 한다.해당 uri로 요
회원정보 수정 전 패스워드 체크 절차를 통과하면 ../member/modify 로 이동이동 할때 쿼리스트링에 인증코드를 생성하여 추가1) 인증 코드 체크 uri로 접근시 인증코드가 없거나, 인증코드가 틀릴 경우 회원 정보수정 페이지로 이동하는것을 막는다.memberSe
<%@ include file="../common/toastUiEditorLib.jspf" %> : 토스트ui 관련코드를 jspf파일로 작성하여 include하여 사용토스트ui로 내용 작성 기존에는 textarea를 통해 내용을 작성하였으나 토스트ui를 적용토스트
1) NeedLoginInterceptor로그인이 필요한 요청이 오면 NeedLoginInterceptor에서 가로채고 있으로rq.printReplaceJs() 메소드(response)를 통해 로그인 페이지로 이동 2) printReplaceJsprintHistory
1) getAttr로 afterLoginUri가 없는 경우/usr/member/login 으로 요청시 파라미터 afterLoginUri의 값이 null이므로 로그인페이지의 상단 로그인버튼의 이동 경로(href="${rq.loginUri}") 를 지정할수 없는 문제발생$
1) 회원가입 urihead.jsp 즉, 페이지 상단에 회원가입 버튼 클릭시 이동하는 uri를 반환하는 메소드회원 가입후 로그인 페이지로 이동 시키고 로그인 후 이동될 페이지 정보를 유지하기 위해afterLoginUri = getAfterLoginUri()를 추가2)
1) UsrMemberController getLoginIdDup()로그인아이디 체크를 하는 메서드입력받은 로그인아이디가 DB에 중복되는지 확인하여 ResultData로 반환2) checkLoginIdDup()회원가입 뷰에서 Ajax사용하여 로그인 아이디 중복체크log
ajax통신시 인터셉터에서 html로 응답되고 있어 json형식으로 변경1) rq객체 요청이 오면 파라미터들을 paramMap에 키와 밸류로 저장하고 있다.Ajax요청시 파라미터로 ajaxMode : 'Y'를 함께 전송하고있다.paramMap에 ajaxMode키와 값