[JSP] useBean, scope, EL, web parameter, JSTL

*<jsp:useBean> 액션

-VO(Value Object)DTO ( Data Transfer Object ) 객체화하여 scope 객체에 설정할 때.

 - <jsp:setProperty>, <jsp:getProperty>와 함께 사용.

사용법)

 -1.객체화) – default constructor를 사용하여 객체화.

   <jsp:useBean id=“객체명” class=“패키지명.클래스명” scope=“객체화후 객체의 사용범위/>

 -2. 값 할당 ) – setter method  사용.

   <jsp:setProperty name=“객체명” property=“set을 제외한 method명을 소문자” value=“/>

 - 3.값 사용) – getter method 사용 : web browser로 출력까지 함께 수행.

  <jsp:getProperty name=“객체명” property=“get을 제외한 method명을 소문자/>

 

*scope 속성에 들어가는 값( scope객체가 할당 )

scope:  값을 저장하고 사용범위를 제공하는 객체. pageContext, request, session, application

-page ( pageContext ) : JSP를 요청할 때마다 객체가  생성되고, 생성된 객체는 해당 JSP에서만 사용.
-request : JSP를 요청할 때마다 객체가 생성되고, 생성된 객체는 forward 방식으로 이동한 페이지에서 사용가능

-session : 웹 브라우저마다 하나의 객체가 생성되고, 생성된 객체는 모든 JSP에서 사용된다.

-application : 최초 접속자에 의해 하나의 객체가 생성되고, 모든 접속자는 하나의 객체를 사용하며, 이 객체는

                   모든 페이지에서 사용가능.


*EL ( Expression Language )

 - 표현언어 : JSP에서 웹 브라우저 출력을 목적으로 만들어진 언어

 - page directive 에서 isELIgnored=“false” 설정상태에서 사용할 수 있다.

 - 변수의 값, scope 객체의 값, web parameter의 값, 간단한 연산 결과를

   web borwser로 출력할   있다.

 사용법)

   ${ 코드 }

  연산자사용)

    ${ 값 연산자 값 }

 -EL에서는 문자가 없다.( “문자열”, ‘문자열’)

 - null 은 출력하지 않는다.

*EL에서 변수 출력

  -EL에서는 변수를 직접 출력할 수 없고, scope객체에 할당해야 출력가능.

*scope객체       => EL에서 지원하는 scope객체명

   pageContext  => pageScope

   request         => requestScope

   session         => sessionScope

   application    => applicationScope

 

*web parameter출력

 - param, paramValues 객체를 사용.

사용법)

 -이름속성의 값이 유일.

 ${ param.폼컨트롤명 }

 

 -이름속성의 값이 중복. ( JSTL 과 같이 사용)

 ${ paramValues.폼컨트롤명[인덱스] }

 

*사용법)

 1. scope객체에 값 설정

   pageContext.setAttribute(“이름”, );

   request.setAttribute(“이름”, );

   session.setAttribute(“이름”, );

   application.setAttribute(“이름”, );

 2. EL에서 scope객체에 저장된 값 얻기

    ${ pageScope.이름 }

    ${ requestScope.이름 }

    ${ sessionScope.이름 }

    ${ applicationScope.이름 }

   *이름이 같을 때 EL에서 scope 객체를 생략하면

      pageScope > requestScope > sessionScope > application으로 접근이 된다.

 

*JSTL( JSP Standard Tag Library )

 - Java가 아닌 다른 개발자나 단체에 만들고 배포하는 액션태그.

 - 표준액션(액션태그)에서 지원하지 않는 기능을 제작하여 제공하는 것.

 - Tag Lib라고 한다.

 - 배포 .jar로 되고, Web Application에서 사용하려면 WEB-INF/lib 폴더에 넣으면 된다.

apache.org에서 배포. core, fmt, xml, jdbc의 기능을 제공.

 

*사용법)

1.지시자를 선언) – 외부 tag lib연결하기위해서

<%@ taglib prefix=“접두어uri=“Tag Lib사용하기위해 제공하는 URL” %>

2.Tag Lib에서 제공하는 태그를 사용.

  <prefix:태그명 속성=“” ,,, > 내용</prefix:태그명>

 

*core

 -제공하는 기능 : 변수선언, 웹 브라우저 출력, 제어문, import, redirect, exception

사용법)

  1. JSTL을 사용하기위한 지시자 선언)

 <%@ taglib prefix=“curi=“http://java.sun.com/jsp/jstl/core” %>

  2. Tag Lib에서 제공하는 태그를 사용.

   <c:태그명 속성명=“” ,, >

 -변수

  -선언)

    <c:set var=“변수명 value=“”/>

            .

  -삭제)

    <c:remove var=“변수명”/>

  

-웹 브라우저 출력)
 

  <c:out value=“출력할 값escapeXml=“true|flase”/>

 

escapreXml :

입력된 값에 HTML Tag가 있다면 tag를 그대로 보여줄것인지 해석하여 그릴 것인지를 설정하는 속성.

true – 태그를 문자열로 출력.  <strong>안녕</strong>

false – 태그로 그려서 출력     안녕

 

*제어문

 - scriptlet 없이도 JSTL을 사용하면 제어문을 사용할 수 있다.

  조건문 : if, ( choose, when, otherwise )

  반복문 : forEach, forTokens

-if :

  단일 if만 지원.

 문법)

  <c:if test=“조건식”>

     조건에 맞을 때 실행될 문장들….

  </c:if>