카테고리 없음

댓그

logloglog 2021. 1. 15. 12:50

RNO댓글번호

BNO본문글번호>>보드참조중 (FK) 종속삭제 본문ㄷ글지워지면 자동삭제

REPLYER멤버테이블의아이디>>멤버테이블의 아이디 (FK) 종속삭제 회원삭제되믄자동삭제

REPLYTEXT댓글!내용

REGDATE등록날짜

UPDATEDATE 수정날짜

 

댓글은페이징을 하지는 않음

페이징을 하긴 할건데 댓글은 순서대로 놔야한다.

최신글이 위로 올라오는게아니라 순서대로 해야함... (게시판글이랑 다름)

그럼 문제가 페이징을 하고 순서대로할경우

작성자가 댓글쓰면 맨 뒷페이지로 넘겨야한다.

 

댓글에 댓글을 쓰게하려면? 넘버링을 따로해야한다.

넘버링을 depts별로하는거임

 

R000   000    0000 이렇게 자릿수를 만들어서 넘버링을 해야한다.

본문 대댓글1 대댓글2

 

파일 각 패키지에 복붙하고 컨피그 고쳐주기 (항상 이런 순서로 하기)
ReplyVO.java
0.00MB
Reply-Mapper.xml
0.00MB

 

 

 

 

ReplyDAO.java
0.00MB
ReplyDAOImpl.java
0.00MB

 

 

 

게시글을 쓸때 첨부파일을 같이 등록해야하는데 첨부파일은 게시글의 bno 를 참조하기떄문에

insert에 떄려박지말고 bno를 getvalue로 따로 매서드 하고, insert로 게시글과 첨부파일에 각각 할당해줘야함

 

데이터베이스에는 데이터에대한 선점이라는 개념이있ㅇ므. (교착상태방지를 위한) 

 

셀렉트문 끝에다가 for update를 붙이면 셀렉트하는 순간 다른애들이 셀렉트를 못함 내가 ㅅ커밋한 당므에 사람들이 조회가 가능함.

 

은행가서 번호표뽑는것도 선점임

 

ReplyService.java
0.00MB
ReplyServiceImpl.java
0.00MB

 

 

 

 

 

리스트 나오게하는 화면 만들어볼거임

 

일단 핸들러필요

 

 

핸들러만들기전에 프로퍼티 반드시

 

이 세개가 소스폴더이기떄문에 배포폴더에서는 webinf의 클레시스에 다 모인다.
여기에 .java로 되어있따.

classpath << 톰캣이 클래스를 배포하고있는 부분부터! 라는 의미고 위의 그림이 그 위치임

 

 

필터는

아파치에서 발행하는 setdo 인코딩 필터가 있음

 

 

limeeyojung.tistory.com/24

 

[Java/JSP] tomcat post/get 방식 한글깨짐 UTF-8 Encoding 문제 해결방법

[web.xml 파일에 filter 추가] 1) 스프링 프레임워크인 경우 Set Character Encoding org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 Set Character Encoding /* 2) 스프링이 아닌경우 S..

limeeyojung.tistory.com

 

 

*필터는

로그인을 해야만 할수있는 기능일떄도 필터를 쓸수있따.

.do로 오는것만 로그인 체크하면 될듯

서블릿이 받는것처럼 .do를 받아서

 

암튼 한글인코딩은 무조건 해야하는거니까 

url 패턴을 /*로 한거임

 

로긴 거르는방법

이닛파람에 제외히켜야하는 키워드 담고..? 

 

 

핸들러만들자

 

 

서비스에 넘겨줄 해당파라미터를 만들어야함 입력은 보드번호랑 페이지가 올거임 bno는 본문글번호,page는 댓글페이지번호임 

저거가지고 크리테리아 만들거임

 

 

 

package com.jquery.handler;

import java.sql.SQLException;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jquery.command.SearchCriteria;
import com.jquery.service.ReplyService;
import com.jquery.service.ReplyServiceImpl;
import com.jquery.utils.JsonResolver;

public class BoardReplyListHandler implements CommandHandler {

	//리스트 갖다줄 리플라이서비스
	private ReplyService replyService = new ReplyServiceImpl();
	public void setReplyService(ReplyService replyService) {
	      this.replyService = replyService;
	   }
	@Override
	public boolean isRedirect(HttpServletRequest request) {
		return false;
	}

	/**
	 * 요청한 내용을 실제 처리하는 메서드
	 */
	@Override
	public String process(HttpServletRequest request, HttpServletResponse response) throws Exception {

		//1입력처리
		//뭐들어와야 리스트던질수있음? bno랑 criteria를 줘야함 서치크리테리아는 만들어야하고, 
		int bno = Integer.parseInt(request.getParameter("bno"));
		int page = Integer.parseInt(request.getParameter("page"));
		
		SearchCriteria cri = new SearchCriteria();
		cri.setPage(page);
		cri.setPerPageNum(10);
	
		//2처리
		try {
			Map<String,Object> dataMap = replyService.getReplyList(bno,cri);
			//3결과 / 출력
			JsonResolver.view(response, dataMap);
		}catch(SQLException e) {
			response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
			e.printStackTrace();
			throw e;
		}
		
		
		return null;
	}

}

 

제대로 나오는가 확인해보자

 

리스트에 댓글 개수를 표현할수있음

리플라이 디에이오가 생겼으니 주석풀자 (밑에도)
우리가만든 서블릿이

 

여기서부터 시작이라 여기서 web-inf~~이렇게 경로줘야함

 

댓글이니까 테이블을 쓸 필요가 없음

 

detail.html

 

 

첫번째 스크립트는 템플릿이고 두번째 스크립트칸에 스크립트쓸거임 (이거 잘못쓴거임) 밑에꺼 참조

 

rno가 고유하니까 replytext더해도 고유함 

데이터 넣어서 뿌려야하므로 ajax

 

 

 

펑션 다 만들어놨으니 일반화해서 잘 넣어주기만 하면 됨 단지 보여줄 화면의 템플ㅇ릿이 다르니까 템플릿만 바꿔주면 되는거임 서치리스트 고는 없으니까 페이지 이동은 안될거임

겟페이지라는 펑션인데

커먼스에 프린트 데이터(어디에다가 붙일지 주면됨. 어펜드림)랑 프린트페이징 있음

그럼 데이터만 확실히 나오게하면되고 어디에붙일지만 확실하게하면됨

여기부터 어펜드할거임

 

페이지번호 유지를 위해서 replyPage는 임의로 만든거임

리플라이도 페이징을 햇으니 화면유지를 해야함. 쿠키를 만들긴할건데 임시로 1번줌

 

 detail.html

});
</script>

<!-- reply꺼 -->
<script type="text/x-handlebars-template"  id="reply-list-template" >
{{#each .}}
<div class="replyLi" >
	<i class="fas fa-comments bg-yellow"></i>
 	<div class="timeline-item" >
  		<span class="time">
    		<i class="fa fa-clock"></i>{{prettifyDate regdate}}
	 		<a class="btn btn-primary btn-xs" id="modifyReplyBtn" data-rno={{rno}}
	    		data-replyer={{replyer}} data-toggle="modal" data-target="#modifyModal">Modify</a>
  		</span>
	
  		<h3 class="timeline-header"><strong style="display:none;">{{rno}}</strong>{{replyer}}</h3>
  		<div class="timeline-body" id="{{rno}}-replytext">{{replytext}} </div>
	</div>
</div>
{{/each}}	
</script>
<script>
var replyPage=1;

getPage("/board/replies/list.do?bno="+bno+"&page="+replyPage);

//replyList
function getPage(pageInfo){
	$.getJSON(pageInfo, function(data){
		printData(data.replyList,$('#repliesDiv'),$('#reply-list-template'),'.replyLi');
		printPaging(data.pageMaker,$('.pagination'));
	});
}
</script>
</body>

페이지 유지 전에 페이지 이동이 되어야할거임

 

 

페이지 이동 >searchgo임

 

댓글은 서치가없어서 페이지 번호를 세팅하면 그걸로 충분한데

페이지번호를 눌러서 이동하는거는 

a태그로 되어있기떄문에 

a태그의 기본 이벤트를 없애야하고

리플라이페이지번호로 할당을하고

겟페이지 요청함

 

셋페이지파람은 커먼스에 있음

 

일단 페이지유지말고 이동만 해보자

 

누른거에대한 페이지번호를 줘야함

페이지네이션할떄

이미 이렇게되어있기떄문에 파라미터로 page 받아ㅓㅅ

 

 

이부분 떄문에 페이지유지가 안되고 쿠키로 줘야함 

 

 

페이지 유지를 위한 쿠키를 발행하는거임

본문리스트를 만들댸, 본문리스트에 쿠키를 초기화하기위해 메뉴를 누를떄마다 초기화하기위해서 메뉴에 이닛파라미터를넣었었음

 

쿠키를 초기화하는건 커먼js안에

이 함수를 보드리스트를 뿌려주는 대상. 상위꼐층 즉 메뉴를 누를때 호출되도록 했었음

 

리플라이도 마찬가지임

이닛페이지파람을 하지않으면 3번페이지에서 보고있던 리플라이의 상태가 다른 디테일(다른 상세글)을 눌렀을떄도 똑같이 발행되는거임

 

그래서 그 리스트가 나오게 하는 상위계층에다가 이닛을 먹여야 함

카테고리를 바꾸거나 항목을 바꿀때 이닛페이지파람을 반드시 줘야함

리플라이가 나오는건 상세페이지고 , 상세페이지여는건 목록에 제목줄 누룰떄임

그니까 제목줄 누를때 이닛파라미터 실행하게 해둬야함

 

네목줄에 자바스크립트 a 태그에 

 

이것만 하면 안됨

이닛페이지파람을 동시에 해야한단 말임

저 리스트 뿌려주는 템플릿은 lsit.htm에 있으므로 열자

 

쿠키를 발행하기시작했으면 그 쿠키에 대한 초기화를 신경써줘야함

 

이걸 해줘야 다른 상세글 볼떄마다 초기화된댓글 페이지가 열림

 


변수는 생성-초기화-변경-삭제 가 되는데,

삭제가 없다면, 지우지 않을거라면, 꼭 생각해야할게,

다시 이걸 쓸때 초기화 후 변경를 생각해야함

그래야 변경-초기화-변경-초기화의 사이클을 돈다.

 

왜 이걸 해야함? 그래야 기준ㅇ이 잡히기떄문

그래야 내가 변경할때 어떻게 변경해야하는지에 대한 기준이 생긴다


 

 

ㄱ아까는 무조건 1번인데 이제는 아까봤던페이지로 바뀔것

 

 

근데 댓글 2번페이지 보다가 닫고 목록새고하면 목록의 2번페이지가 열림

어케ㅇ해야할까?

 

같은 쿠키를 써서 그렇다.

그래서 page쿠키 이름을 reply_page로 빠꿀거임

 

가져올때 바꾸고

 

넣을떄도 그렇게 넣어야함

이름을 조작해서 댓글 전용 페이지로 바꿔서 넣어준다.

 

그럼  문제가 , 이닛페이지파람스가 일반화되지않는거임

그래서 이름줄때 프리픽스를 더해줘야함

 

지울때도

프리픽스가 있으면  붙여서 지워주고

없으면 언디파인뜨니까 프리픽스 없이 지워야함

이렇게 해야 일반화가 됨

 

그러먼 list html 의ㅈ 제목줄의 탬플릿에