1. scope_result.jsp로 넘기는 jsp파일을 생성하여 ArrayList에 값을 추가한다. session.setAttribute("names", "lastName"); ArrayList arr = new ArrayList<>(); session.setAttribute("list", arr);
2. scope_result.jsp 에서 sessionScope.list[n] 으로 값을 가져올수있다. 이름: ${sessionScope.name } 자료0: ${sessionScope.list[0] } 자료1: ${sessionScope.list[1] } 자료2: ${sessionScope.list[2] } 자료3: ${sessionScope.list[3] } 자료4: ${sessionScope.list[4] } 자료5: ${sessionScope.list[5] } 자료6: ${sessionScope.list[6] } 3. 4. EL과 JSTL을 사용하는 이유? 1. design tool에서는 jsp 코드<% %>가 깨질 수 있다.
[ EL ]EL 이란?
[기존 방식 예 : scriptlet 스클립틀릿]
[EL 방식 예]
requestScope는 생략이 가능하지만, 실행속도가 느려지고, 구분이 헷갈릴 수 있기때문에 기재해 주는 것이 권장된다.
JSP 내장객체 종류- pageContext : 다른 내장 객체를 생성하는 역할 - pageScope : JSP가 Servlet으로 변환되었을 때, Serlvet 객체 자신을 의미 (=this) - requestScope : request 객체에 접근하기 위한 역할 - sessionScope : session객체에 접근하기 위한 역할 - applicationScope : application 객체 (ServletContext 객체)에 접근하기 위한 역할
[ 유효범위 ] request < session < application(ServletContext) - request의 유효범위 : response 할 때까지 - session의 유효범위 : 1) 로그아웃(서버에서 session.invalidate() ) 시 소멸 2) 클라이언트(브라우저) 종료 시 소멸 3) 지정한 session timeout까지 재접속이 없을 경우 소면 - application(ServletConext) : 웹 어플리케이션 서비스가 종료될 때까지 유효
EL 에서의 파라미터 제어 객체- param = request.getParameter(); - paramValues = request.getParameterValues(); [ 사용 예제 ]
1. session에서 Attribute 받아오기
/step1.jsp CarVO instance에서 1) 변수 출력 2)리스트로 변수 출력 3)HashMap으로 변수 출력
[ 브라우저 출력 결과 ] 2. 쿼리스트링 방식으로 parameter 접근
/step2-1.jsp
/step2-2.jsp EL방식일 경우 NULL이 param값으로 오게되면 브라우저에 아예 아무 값도 출력하지 않는다.
/step2-3.jsp
/step2-4.jsp
[ 브라우저 출력 결과 ] /step2-1.jsp /step2-2.jsp
/step2-3.jsp * 기존 방식(스클립틀릿)에서는 넘어오는 parameter값이 문자열로 인식이 되므로, '59'+'1'이 되어 나이(문자열) 뒤에 1이 추가됨 * EL 방식은 내부적으로 형변환하여 (Integer.parseInt()) 연산되므로, 59+1이 되어 나이(숫자)에 1이 더해짐 /step2-4.jsp 체크된 메뉴만 넘어온다 EL 방식이므로, null일 경우 출력하지 않는다 3. Model에 접근 * EL에서 Model에 접근 가능한 메서드는 get계열과 is계열 메서드만 가능 (is 계열 메서드는 리턴 타입이 boolean일때 사용)
/TestVO.java
/step3-EL-Model.jsp
[ 브라우저 결과 ] 4. ServletContext InitParameter 접근 SerlvetContext의 초기파라미터(=application:context parameter)에 접근하여 출력 (web.xml에 있는 내용)
/step4.java
5. Web Context (or Web Project 이름) 출력 프로젝트 작업 시, 프로젝트 명을 변경할 경우 매우 유용하게 사용된다. path를 아래와 같이 쓰면, 현재 프로젝트의 웹 컨텍스트로 넘어가게 된다.
/step5-path.java 0
[ JSTL ]JSTL 이란?
Core
[ 사용 예제 ][ 목차 ] 1. JSTL if : 조건문 2. JSTL if 다중조건 (choose, when, otherwise)3. JSTL Choose form 연동4. JSTL for Each (for loop - 반복문)5. JSTL for Each - Form 연동6. JSTL forEach - 반복 횟수 정하기7. JSTL forEach + Choose (when, otherwise) 연습문제8. JSTL forEach 에 HashMap 적용해보기9. JSTL SET 이용해보기10. JSTL import ( include )
1. JSTL if : 조건문
/step1-if.jsp 1
2. JSTL if 다중조건 (choose, when, otherwise)
/step2-choose.jsp when : else if 역할 otherwise : else 역할 2
/PersonVO.java 3
3. JSTL Choose form 연동
step3-choose-action.jsp 19세 이상이면 아이유님 28세 성인입니다. 13세 이상이면 아이유님 15세 청소년입니다. 1 ~ 13세 미만이면 아이유님 7세 어린이입니다. 0세 이하이면 아이유님 아직 태어나지 않았습니다.
/step3-choose-form.java 4
/step3-choose-action.jsp 5
4. JSTL for Each (for loop - 반복문)
6JSTL forEach : JSTL for loop (반복문) items : 대상 배열 또는 컬렉션 var : 요소를 저장할 변수 varStatus : index와 count 속성이 있다. (index는 0부터, count는 1부터 시작)
/step4-forEach.java 7
5. JSTL for Each - Form 연동
/step5-forEach-form.java 8
/step5-forEach-action.java 9
6. JSTL forEach - 반복 횟수 정하기
/step6-forEach.java 07. JSTL forEach + Choose (when, otherwise) 연습문제
19세 이상이면 성인 파프리카 27세 아니면 미성년 밀크 10세
/step7-forEach-ex.java 1
8. JSTL forEach 에 HashMap 적용해보기
/step8-forEach-map.java 29. JSTL SET 이용해보기
반복적으로 많이 쓰이는 객체를 c set으로 담아둘 수 있다. 3
/step10-set.java 410. JSTL import ( include )
5JSP에서 include action tag와 같은 기능을 한다. 차이는 JSTP import는 다른 웹 어플리케이션의 자원을 이용할 수 있다는 것이다. (ex. web project 1에 있는 header.jsp를 web project2에서도 <c:import>를 통해 가져올 수 있다) (JSP는 자신의 웹 어플리케이션 프로젝트의 자원만 이용할 수 있다!)
/step11-header.jsp 6
/step11-footer.jsp 7
(JSTL include) /step11-import-include.jsp 8
공유하기 게시글 관리 구독하기Programmer 파프리카의 이야기'Java Web Programming > 4. JSP' 카테고리의 다른 글[JSP] 회원관리 웹 어플리케이션2 - layout 두 가지 (로그인 + 회원가입 + 회원정보 수정 + 경로 + EL/JSTL + BootStrap + Model2 설계) (0)2020.09.21[JSP] 회원 관리 웹 어플리케이션 (EL/JSTL 적용, 웹 프로그램 경로, BootStrap + Model2 설계) (0)2020.09.18[JSP] Semi-Project | Model2 MVC 기반 고객관리 웹어플리케이션 (회원가입, 로그인) (0)2020.09.16[UML] Use Case Diagram (유즈케이스 다이어그램) (0)2020.09.15[JSP] Include Action Tag - 페이지 모듈화 (0)2020.09.15 |