뉴렉처 JSP/서블릿 78강 

 

목록페이지에서 검색 기능 구현하기

 

컨트롤러의 역할 : 사용자가 전달하는 내용을 받을수있다.

 

request로 list.jsp에서 사용자가 전달할 값 타이틀인 f 와 쿼리(작성글) q 를 받아와 변수에 넣어준다.

null일 경우 기본값으로 기본페이지가 보여지게끔 if문으로 처리해준다.

제목/타이틀이 검색후에 남아있게하기위해서 삼항연사자로 조건이 맞는경우에 selected를 사용해 고정하게 해준다.

검색어 또한 value 값에 ${param.q}를 사용해 값을 받아 유지하도록한다.

 

검색화면 결과

 

 

 

목록 페이지에서 페이징 구현하기

페이지 번호를 누르면 번호에 해당하는 값이 나오게 수정하기

현재 페이지를 이동하면 (2페이지) 타이틀값과 쿼리값이 이동이 안된다 (상태값이 유지가안된다)

페이징을 구현하기위해선 페이지 번호 와 상태값이 같이 이동되야 한다

페이지 값을 받아올수있는 변수를 String 타입으로 준비해준다

int는 null값을 받을수없는 자료형이기때문에 String 타입으로 지정해준다.

 

page도 마찬가지로 기본값을 1로준뒤 받아온 page_값이 null이 아니거나 빈값이 아니라면

page_를 int타입으로 바꾸어서 page변수에 저장해주고 서비스 함수를이용해 페이지를 구현한다.

list.jsp에서는 타이틀과 쿼리값을 이동해주기위해 EL문으로 param값을 입력해준다.

*의문점 : param.p값은 어디서 오는것인지 생각해보았는데 li 태그안에 p=${startNum+i} 값을 가져오는것 같다.

 

Pager에서 현재 페이지 번호 처리

전부 활성화 표시되어있는 번호를 수정하고 페이지 표시 표현을 제대로나오도록 수정해본다.

현재 보여지고있는 pages 위치를 적용하기 위해선 empty 를사용해 param.p값이 참일때는 1 아닐떄는 param.p값이

보여지도록 수정해준다.

 

EL연산자중 empty  :  null이거나 빈문자열일땐 참을 반환

 

style을 수정해서 하이라이트(현재페이지) 부분만 적용해주는 방법

param.p값이 현재 반복되는번호하고 같다면 orange색의 스타일적용 ( 스타일 구문안에는 작은따옴표 사용 ) 

하지만 param.p값으로 설정하게되면 밑에 처럼 첫시작시 page값이 null 이기 때문에 스타일이 적용이 안된다.

선언해놨던 <c:set var="page" value="${(param.p == null)?1:param.p }" /> 을

empty로 바꿔서 param.p 대신 page 를 이용해 선언해준다.

(param.p값이 null이거나 빈값을 경우에는 1을 반환 첫시작시 ) : 페이지를 받아오는것이기 때문

 

 

 

Pager에서 마지막 번호 처리하기

마지막번호가 몇개가 될것인지를 알아야한다.

마지막번호를 구하는것이 키포인트이기때문에 임시방편으로 넣어놨던 lastNum을 수정해준다.

 

컨트롤러에서 service의 count함수를 이용해 게시글의 개수를 구해야한다.

페이지가 바뀌었을때에도 값을 이동해 처리하기위해 field와 query의 인자값을 받는다.

 

list.jsp에서는 lastNum을 임시로 만들었던 23숫자에서 수정해주어야한다.

* 페이지당 게시글 숫자가 10개씩이니 count/10 을해주는데 소수점이있으면 하나더큰수로 만들어줘야한다

  나머지가 누락되기때문 +1씩해주어야한다. 

  Math.ceil() 함수를 사용 소수점의 값을 정수로 +1값 해주는함수 천장값으로 만들어줌 ( ex 11.2 -> 12.0)

  Math.floor() 함수는 반대로 바닥값으로 만들어줌 ( ex 11.2 -> 11.0 )

 

Math.ceil()  함수를 사용하기위해 지시자에 태그라이브러리를 사용한다

fn 으로 functions태그라이브러리를 사용하겠다.

JSTL의 함수인 substringBefore() 를사용하여 소수점( . ) 앞자리수만 값을 얻어온다.

( Math.ceil로 천장값을 만들어준 수의 소수점을 제거하기위함 )

subStringBefor(String str,String separator) : str문자를 separator문자 이전문자를 출력한다.

 

lastNum를 사용하기위해 위치를 옮겨준다. lastNum를 사용하는것을 볼수있다

startNum+5는 라스트 페이지 까지 포함하기때문에 4로바꿔준다.

6이후의 숫자가 리스트에서 보여지지 않게하기위한 c:if 문을 추가해준다.

조건은 startNum+i가 lastNum보다 작거나 같을때를 기준으로 li태그를 출력하게 하면된다.

 

View 화면 페이징처리가 게시글의 갯수에 맞게 10개씩 마지막 페이지에는 남은 게시물 글이 나타나는 것을볼수있다

현재 페이지가 어디인지 전체 페이지 갯수도 확인할수있다.

 

 

뉴렉처 JSP/서블릿 81강 완

'Step by Step' 카테고리의 다른 글

JSP/서블릿 공부 2021-03-02  (0) 2021.03.02
JSP/서블릿 공부 2021-03-01  (0) 2021.03.01
JSP/서블릿 공부 2021-02-26  (0) 2021.02.26
중간정리 2021-02-25  (0) 2021.02.25
JSP/서블릿 공부 2021-02-25  (0) 2021.02.25

+ Recent posts