뉴렉처 jsp/서블릿 58강

 

목록 페이지 MVC로 변경하기

 

list.jsp 의 MVC모델 1 방식 (코드블록을 위쪽으로 옮겨준다)

MVC 모델 2 방식으로 바꿔주기위해 ListController를 만들어준다.

list는 모든 객체를 보여줘야하기때문에 

List<Notice> list 하나를 만들어서 그안에 값을 add 시켜준다.

전달할 값을 foward 해서 list.jsp 로 보내준다.

 

list.jsp 에서는 태그라이브러리를 사용해서 반복문을 사용할수있지만 아직 안배웠으니 넘어가도록하고

반복문을 사용하기위해 List<Notice> 객체를 받아와 향상된 포문을 해 pageContext의 저장소에 저장해주도록한다

저장한 이름을 사용하여 객체를 불러 올 수있다.

 

View 페이지 은닉하기

Controller과 View를 따로 분류했을땐 View는 더이상 컨트롤러를 통하지않고서는 실행하면 안된다.

jsp는 컨트롤러에서 정보를 받아와 출력을하기때문에 Controller시작을 해야한다.

jsp가 노출되면 버그를 유발할수있기 때문에 WEB-INF라는 외부에서 서비스되지않는 파일들을 넣어둘수있는데

 

View에 해당하는 파일들을 폴더를 만들어 옮겨준다

그리고 컨트롤러에서 경로를 수정해준다. WEB-INF의 view 폴더안에 jsp파일이 있기때문에.

 

WEB-INF에 존재하는 jsp 호출시에는 외부접근을 막기 때문에 404에러가 나온다.

 

 

 

View에서 흐름 제어를 위한 자바코드 블록 제거하기

MVC2 패턴으로 바꾸었지만 여전히 자바코드블록이 남아있다.

이것을 수정해주기위해서는 태그를 이용해야한다.

 

태그를 사용하기위해서는 JSTL 자료파일(jar)을 다운로드 받아야한다. 

구글검색엔진에 jstl dowload 검색후 

Maven Repository에서 다운받을 수 있다.

다운로드를 받은뒤에 라이브러리를 사용하기위해 WEB-INF의 lib 폴더안에 넣어준다.

 

사용하기위해서는 taglib 를 코드블럭을 통해서 사용한다는 명령을 해준다.

이때 jsp가 포함된 uri를 사용해야한다. 

 

EL에 담겨져있는 list를 이용해 forEach문으로 반복문을 처리하는방법

var로 선언한 "n"이라는 변수에 EL문으로 저장소에 저장해놓았던 list를 items로 가져온다.

 

JSTL ( JSP Standard Tag Library)

 

뉴렉처 서블릿/jsp강의 61강

Core : 태그라이브러리가 필요로했던 가장 기본적인 제어의 행위

Formating : 날짜, 숫자 포멧팅

Functions : 저장소에있는 데이터를 사용할때 함수를 사용하기위함
SQL,XML : MVC패턴이나오고 사용하지 않는다.

 

JSTL Core

뉴렉처 서블릿/jsp강의 61강

prefix 접두사를 사용하여 uri 를 사용한다고 지시자를 통해 알려줘야한다.

 

 

 

forEach의 속성 사용하기

 

begin : 반복되는 인덱스의 시작값

end : 반복되는 인덱스의 끝값

varStatus : forEach문이 반복할 때 관리되는 상태 값을 사용하게하는 속성

 

varStatus의 속성 (ex) ${st.current} 이런식으로 사용한다 (st는 varStatus="" 로 선언한 변수)

current : 반복할때 사용되고있는 현재객체 (객체면 객체, 숫자면 숫자 반환)

index : 반복할때마다 인덱스번호

count : 반복되고있는 횟수 ( 몇번째 반복인지 )

first : 현재반복되고있는게 첫번째 반복이라면 true

last : 현재반복되고있는게 마지막 반복이라면 true

begin : 값이 설정된값에 따라서 begin값이 출력

end :  값이 설정된값에 따라서 end값이 출력

step : 인덱스가 증가되는 단위를 설정 ( 1씩증가 , 2씩증가 )

 

 

JSTL로 Pager 번호 만들기

 

forEach안에 변수를 선언하게되면 증가되는값을 받을수있다

 

 

startNum 공식 / 뉴렉처 jsp/서블릿 64강

페이징 처리시 시작번호를 알수있다면 여러개의 페이지 번호를 만들수있다.

페이지에 맞는 첫번째 페이지번호를 알기위해선 현재 페이지-(현재페이지-1)%5 를 해주면된다

 

JSTL로 startNum의 변수를 만들어준다.

c:set 값을 저장할수도있고 연산식을 저장할수도있다.  pageContext에 저장이된다.

var : 변수명 , value : 값

 

페이지의 값을 얻기위한 param값을 c:set을 사용해 저장해준다.

null일 경우에는 1을 받아오도록 삼항연산자를 사용해준다

 

 

페이지 처리 구문

페이지는 5개가 보여지기위해 begin="0"과 end="4"를 입력

 

 

임의로 값을 수정해서 확인을 해보면 28번째 게시물의 첫번째 블록 페이징으로 바뀐다.

 

 

JSTL로 이전/다음 Pager 링크 만들기

 

a링크에  span과 css가 같은 다음버튼을 만든다.

이때 전달되는 주소값은 현재 0~4 총 5개가 보여지고있기때문에 i보다 한숫자가 더 큰 5를 입력해준다.

(커지면서 주소값이 바뀌기 때문에 다음버튼을 눌렀을시 페이징 처리 될 수 있게

 

위에버튼을 누르면 페이지가 이동처리 되는 모습을 볼수있다.

하지만 밑에 버튼을누르면 onclick 다음페이지가 없다는 경고창이 출력된다 

이 두가지 버튼을 배타적으로 적용하기위해 c:if 문을 사용한다.

c:if문의 조건을 만족하기위해서는 마지막 레코드의 갯수를 알아야하는데 아직 데이터 베이스가 준비안됬으니

지금 하는 수업에 맞춰서 임시로 lastNum을 설정해준다

 

임시로 지정한 lastNum보다 startNum+5가 작을때는 다음으로 진행하는 링크버튼이나오고

lastNum보다 startNum+5가 클때는 다음페이지가 없다는 경고창이 나오도록 c:if문을 적용한 모습

 

이전페이지도 비슷한 방식으로 해준다

시작페이지가 0이될순없기때문에 1보다 클경우에는 이전페이지로 이동하고 

1보다 작을경우에는 이전페이지가 없다는 경고창이 나오도록 적용한 모습

 

뉴렉처 jsp/서블릿 65강 완

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

JSP/서블릿 공부 2021-02-26  (0) 2021.02.26
중간정리 2021-02-25  (0) 2021.02.25
JSP/서블릿 공부 2021-02-24  (0) 2021.02.24
JDBC공부 2021-02-22  (0) 2021.02.22
JDBC공부 2021-02-17  (0) 2021.02.17

+ Recent posts