System.out.println("Hello, World");

JSTL(JSP Standard Tag Library)

-custom tag library로 JSP 스펙에는 포함되지 않았지만 자바 진영에서 진행하는 태그 라이브러리

-커스텀 태그 : JSP에서 스크립트릿으로 작성해야할 동적 로직을 태그로 처리

-jstl.java.net에서 api를 다운로드 후 web application의 lib 폴더에 넣어 사용한다.

-JSP에서 커스텀 태그를 사용하기 위해서는 taglib 지시자 태그 설정 필요

 <%@ taglib prefix="접두어" uri="태그 라이브러리 구분자"%>


○ JSTL 종류

-core : Program의 기본적인 내용들을 지원. 변수, 제어문, 출력 등

     uri : http://java.sun.com/jsp/jstl/core


-xml : XML 관련 처리

     uri : http://java.sun.com/jsp/jstl/xml


-국제화 : ResourceBundle을 이용한 국제화 처리

uri : http://java.sun.com/jsp/jstl/fmt


-데이터베이스 : JSP에서 DB 접근하기 위한 로직 지원

uri : http://java.sun.com/jsp/jstl/sql



○ 주요 코어 라이브러리

-변수지원

-set : JSP에서 Attribute로 binding된 객체 처리

-set 태그

1. 4개 속성영역에 값(Attribute)를 binding

                 - 속성

var : binding할 객체 이름

scope : binding할 속성영역. 값 : page, request, session, application

value : binding할 속성 객체

ex)<c:set var="name" scope="request" value="홍길동"/>

<c:set var="errorMessage" scope="request" value="치명적인 오류"/> 

이것을 get할때는 똑같이 ${requestScope.errorMessage}하면 된다.


2. binding된 Attribute의 property에 값을 설정

- 속성

target : property를 설정한 attribute

value : property에 설정할 값

property : 값을 설정할 property

ex) <c:set target="${requestScope.cto}" property="id" value="aaa"/>


-remove 태그

-remove : binding된 attribute 제거

-4개 속성영역에 binding된 attribute 객체를 제거하는 태그

-속성

var : 제거할 속성의 이름

scope : 제거할 속성이 binding된 영역(page, request, session, application)

ex) <c:remove scope="request" var="cto"/>


-제어문 지원

-if : if문

-if 태그

-단일 조건 조건문 처리 -if문과 동일

-다중 조건 처리에는 사용할 수 없다.(if-else)

-속성

-test : 조건 설정 true/false

-구문

<c:if test="조건">조건 만족시 실행할 내용</c:if>

<c:if test="<%=x<10">조건 만족시 실행할 내용</c:if>


-choose : 다중 조건 처리

- 다중 조건을 처리하는 태그 - if else, switch case

- choose 태그는 조건들을 묶어주는 역할

- 하위 태그

when 태그

-선택할 조건을 표기하기 위한 태그

-속성 : test - 조건 설정

-otherwise 

-else의 역할(switch case의 default)의 역할

구문

<c:choose>

<c:when test="조건1">

조건1이 true일 경우 실행할 내용

  </c:when>

<c:otherwise>

when의 모든 조건이 만족하지 않을 경우 실행할 내용

</c:otherwise>

</c:choose>


-forEach : 반복문 처리

> 컬렉션이나 배열을 반복해서 element들을 조회

> 속성

-items : 반복할 컬렉션이나 배열 설정

-var : 반복시 조회할 element를 참조할 변수 선언

ex)<c:forEach var="var" items="배열">

${var.id}

    </c:forEach>


> 특정 횟수만큼 반복을 처리

-begin : 시작 값

-end : 종료 값

-step : 증감 값

-var : 변화되는 값을 저장할 변수 선언

ex)<c:forEach begin="1" end="10" step="1" var="i">

${ i } - 안녕

</c:forEach>



ex) if문 적용하기


-출력지원

-out 태그

-태그형태의 문자열을 그대로 출력되도록 처리할 수 있다.

-속성

-value : 출력할 내용

-escapeXml : 태그 출력 여부 처리

-true : 태그를 해석하지 않고 그대로 출력

-false : 태그를 해석해서 출력

-default : value의 값이 null일 경우 출력할 기본 값

ex) 그냥 출력하기


ex) EL과 연동


ex) 출력할때 태그 연동하기


ex) null값 출력 및 기본 값 


위 그림처럼 requestScope에 아무것도 없으면 null값이 출력된다. 또한 default="값"에다가 값을 넣으면 기본값이 출력된다.



또한 default에 안넣는다고 해도 <c:out> 값 </c:out>에 값을 넣어도 기본값으로 나온다.


Posted by 김마농

1. http://jstl.java.net/로 들어가서 다운로드를 클릭한다.



2. JSTL API를 클릭한다.


3. javax.servlet.jsp.jstl-api-1.2.1.jar을 다운 받는다.


4. 다시 뒤로 돌아와서 JSTL Implementation을 선택한다.


5. javax.servlet.jsp.jstl-1.2.1.jar을 다운받는다.


6. 다운받은 2파일을 lib 폴더에 넣으면 자동으로 적용된다.



Posted by 김마농

EL(Expression Language) 표현식 언어

-JSP 2.0에서 새로 추가된 스크립트 언어

- 기존의 expression tag의 업그레이드 버전

-주요기능

-리터럴 데이터 출력

-각종 연산자를 제공하여 연산결과 출력을 지원'

-4개 속성 scope(page, request, session, application)에 binding된 Attribute(객체)나 그 Attribute의 property 값 출력

-JSTL과 연동


-구문

- ${출력내용} - ${10}, ${"안녕"}, ${10+20}

- ${value1.value2[.value3 ..]}

특정 객체의 property 접근 할 때 사용

- ${value1[value2]}

컬렉션(list 계열)의 값을 출력할 때 주로 사용

- value1에는 EL 내장 객체나 attribute명이 들어온다.

- 구문을 실행 도중 null이 나오면 더 이상 진행하지 않고 출력도 하지 않는다.

- 예)

${requestScope.mto.id}

${cto.address.zipcode}

${sessionScope.lost[0]}

- JSP의 script(스크립트 릿, 표현식, 선언식, 지시자) 태그에는 사용 못한다.

- action 태그내에는 사용 가능

-<jsp:include page="${dir}/a.jsp"/>


-EL의 내장 객체(기본객체)

-EL은 11개의 내장객체를 제공하여 별다른 추가 코드 없이 특정 객체에 접근 하여 사용할 수 있도록 한다.

-JSP의 내장객체와는 다르다.

-EL 내장객체중 pageContext를 제외하고는 모두 name-value 형태의 값을 관리한다.

- ${}내에서만 사용가능하며 첫번재 값으로만 올 수 있다.

-Scope와 관련된 내장객체

-pageScope : page Scope에 접근

-requestScope : request Scope에 접근 

-sessionScope : session Scope에 접근

-applicationScope : application Scope에 접근


-요청 파라미터 관련 내장 객체

-param : 요청 파라미터 조회시 사용(하나의 이름으로 넘어온 경우)

-paraValues - 요청 파라미터 조회시 사용(하나의 이름으로 여러값이 넘어온 경우)


-Header값 관련

-header

-headerValues


-쿠키값 조회

-cookie : ${cookie.이름.value}


- 초기 파라미터 조회(context-param으로 설정된 것)

-initParam


-pageContext 객체 관련 내장 객체

-pageContext

Posted by 김마농