아이프레임은 width는 %먹는데 height는 안먹음
우리가 할거는 자유게시판의 게시판목록을 할거임
리스트를 만드려면 어떤 데이터를 서버와 주고받아야하나?
이걸 만드려면
1. 몇개씩 보여줄건지 (한페이지당 리스트의 갯수) > perPageNum
한페이지에 전체 데이터를 다 표시할게 아니기 떄문에
시작 row에 대해서 몇개를 끊어낼건지의 기준이 된다.
2. 몇번째 페이지인가
page
3. 검색구분
제목으로 검색하는건지 내용으로 검색하는지, 작성자로 검색하는지 제목+내용으로 검색하는지
searchtype
4. 검색어
keyword
5. 맨첫페이지로 가는거<<, 이전페이지로 가는거prev< 맨첫페이지는 상수니까 변수아님.. 무조건 1
6.다음페이지 >next >>realEndPage
7. (페이지 갯수를 전체몇개로 할건지)
displayPagenum
페이징을 하기위한 데이터들과 리스트 데이터들이 구분이될거임(파란선)
main.html
json,의 키값으로 setmethod, 서치크리테리아를 만들어서넣어주는거임
제이ㅁ쿼리로 왓다갔다한것들은 새고하면 날라간다.
유지하기위해선??
json을 넘기긴 넘기는데, 보낼때 cookie를 사용함
expire가 없는.. 기간이없는 쿠키는 브라우저종료시 ㅂ지워진다
암튼 아이프레임의 상태유지는 javascript의 쿠키로 한다 근데 jquert의 쿠키로 할수도있는데,, 전자는 일일히 구현, 후자는 메서드로 끝난다. 대신 후자의 단점은 버전의 충돌이 잇을수있다(플러그인이기떄문에) 전자는 제이쿼리의 버전에 상관없다.
화면구성, 파라미터 구성, 서블릿 구성, ajax 구성.. 해야함..
일단 서버단부터 만들고
데이터베이스 토대로 데이터셋 결정 이걸로 VO 결정(지금은 boardVO)
Board- Mapper.xml > sqlconfig가 완벽하게 되면, sqlfactory 돌려보고 문제없어야함
dao가서 해당 매퍼에 접근해서 해당 보드매퍼에 있는 sql문을 핸들링할수잇는 boarddao형성 (dao는 1쿼리에 1메서드)
보통 sql문을 뚱뚱하게 만들고 서비스와 dao는 홀쭉하게 만든다.
sql문 간촐하게, 그것들에대한 프로세스는 서비스에서 만드는게 선생님의 방식임
보드서비스 > 보드서비스에대한 임플 >
*dao를 인터페이스로 만드는건 db 가 언제든지 바뀔수있다는 소모성때문에 갈아끼우기 쉽도록 만드는거고
service를 인터페이스로 만드는건 서비스의 기능자체가 바뀐다는것보다는 서비스에 대해서 우리가 부가적으로 해줘야 할게 많기떄문에 서비스를 프록시(플록시..?)에 올려놓고 서비스의 각 기능에 대해 부가적인 기능을 막 걸려고 하는거임
그 다음 서블릿이거나 (커맨드패턴으로 했따면 actioner가 될수도있음)
여기서 계산된 endpage를 실제로 존재하는 마지막 페이지랑 비교해서 계산된 endpage가 더 크면 실제 endpage랑 맞춰야함 (35번페이지까지밖에없는데 31~40으로 나오면 안되니까)
리스트 전체가 몇갠지를 알아야 실제 마지막 페이지가 계산됨
이걸 언제?
set total count 가 호출될때
totalcount잡히면 바로 calc호출하는거임
이떄는 무조건 totalcount가 있다는 소리임
그리고
startpage가 1 이 아니면 무조건 prev 발동
endpage가 realend와 같으면 next 필용벗다.
암튼 이걸로
이것들 다 세팅됨
서비스 임플에
이부분들 주석처리
~list.json까지만 쳣을떄
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String page = request.getParameter("page");
String perPageNum = request.getParameter("perPageNum");
String searchType = request.getParameter("searchType");
String keyword = request.getParameter("keyword");
SearchCriteria cri = new SearchCriteria(page,perPageNum,searchType,keyword);
try {
Map<String, Object> datamap = boardService.getBoardList(cri);
JsonResolver.view(response, datamap);
}catch(Exception e) {
e.printStackTrace();
}
}
핸들바를 이용해서 탬플릿을 만들거임
이것도 파일로받을거임
밑줄은 json데이터들이 들어가는거고 나머지는 자바스크립트
date 밀리세컨으로 나옴
list를 언제가져올거냐?
검색버튼 누르거나 페이지 누를때임
그 이벤트를 만들어야하는데
list요청하는 함수를 따로만들고, 검새눌렀을떄/페이지 눌렀을때 쿠키만들고 list요청하는 함수호출하면 될거임
search에 대한 이벤트핸들러만들자
json데이터를 쿠키에서 가져와서 넘겨야되는데
일단 list를 json으로 먼저넘길거임
이 제이슨데이터는 서치버튼 누를때도, 페이지 버튼 누를떄도 쓸거니까
이 json데이터를 바꿔주는 함수가 필요할거임
이걸 어디서 호출해야함?
화면에서
이 양식을 form 태그로 다 감싸야 하나? no
내가 서브밋할 form태그를 따로 만들면 된다.
입력창이 이렇게 산발해 있으면 form태그를 전체다묶어야함? 이렇게 안해도됨
<form>
<input name>
등록버튼으로
다 떙겨오는거임
검색버튼ㄴ눌렀을때 값에있는거 꺼내서 json데이터 변경해줘야하는데
확인하는 방법 중 이 두개의 차이?
pageParams.keyword 는 제이슨 데이터 안에 keyword라는 키값이 있따느소리 .은 이미 키값을 알고있을때쓰는것
for of > 하나씩 뺴줌
이떄는 pageParams.key 못씀
실제로 해당페이지를 가져오는 녀석을 만들거임
지금 json 파일 넘길꺼니까
제이슨은 무조건 포스트방식
json.stringify < ify :스럽게.. 스트링스럽게.. json이 아닌 String이 넘어가는데 그 스트링의 모양이 json스럽게...
근데 받을때 getParameter 못함..
무조건 제이슨ㅇ넘길떄 ify 하고 어플리케이션?주지않는다 왜? String이니까
근데 우리 boardlistservilet보면
이렇게 받으니까 안되는거임
JACKSON 필요하다! objectMapper로 받아야함
미리 만들어놓은 searchCreteria 클래스가 jsonSTring분해해서 넘어오는 것들을 받는다.
이제 json 스트링 던지면 된다.
저거 왜 function으로 받음?
처음화면열떄, 서치버튼누를떄, 페이지버튼 누를떄도 해야하니까.
printdata 어디에>>리소스
레지스터헬퍼가 함수를 등록하는걸 도와줌
여러개일때는 제이슨형태로..
하나일떄는 이름,function 이런형태
key,value 이런식.. 여러갠 위에처럼 json형태로
hasreplycnt 를 받아서 0보다 크면 비지블 아니면 none
timevalue는 밀리세컨으로 온 값은 자바스크립트의 date로 넣으면 실제날짜로 변환됨
거기서 년월일을 빼낸다.
날짜를 (04 이렇게) 두자리로 받고싶다면