* JSTL (JSP Standard Tag Library)

1. custom tag library로 JSP 스펙에는 포함되지 않았지만 자바 진영에서 진행하는 태그 라이브러리.
 - 커스텀 태그(custom tag) : JSP에서 스크립트릿으로 작성해야할 동적 로직을 태그로 처리
 - jstl.java.net에서 api를 다운로드 후 web application의 lib 폴더에 넣어 사용한다.

2. JSP에서 커스텀 태그를 사용하기 위해서는 taglib 지시자 태그 설정 필요
 <%@ taglib prefix="접두어" uri="태그 라이브러리 구분자"%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl.core"%>
 사용 : <c:>

3. 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

* 주요 Core 라이브러리

1. 변수 지원
 - set : JSP에서 Attribute로 binding된 객체 처리
 - remove : binding된 attribute 제거

2. 제어문 지원
 - if : if문
 - choose : 다중 조건 처리
 - forEach : 반복문 처리

3. 출력지원
 ① out 태그

   - 태그형태의 문자열을 그대로 출력되도록 처리할 수 있다.
 - 속성
   - value : 출력할 내용
   - escapeXml : 태그 출력 여부 처리
                        true : 태그를 해석하지 않고 그대로 출력
                        false : 태그를 해석해서 출력
- default : value의 값이 null일 경우 출력할 기본 값

*
WebContent
이름 : jstl/out.jsp

- 결과



② if 태그

 - 단일 조건 조건문 처리. -if문과 동일
 - 다중 조건 처리에는 사용할 수 없다. (if-else)
 - 속성
    - test : 조건 설정
 - 구문
    <c:if test="조건">
    조건 만족시 실행할 내용
    </c:if>

*
WebContent
이름 : jstl/if.jsp

* 로그인한 사람이 19세 이하일 경우 결과보기

* 로그인한 사람이 19세 이상일 경우 결과보기

③ 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를 참조할 변수 선언
   - 구문
<c:forEach var="var" items="배열">
${var}
</c:forEach>

 - 특정 횟수만큼 반복을 처리
   - 속성
      - begin : 시작 값
      - end : 종료 값
      - step : 증감 값
      - var : 변화되는 값을 저장할 변수 선언
<c:forEach begin="1" end="10" step="1" var="i">
${i} - 안녕
</forEach>

 

- 결과

⑤ set 태그

 1. 4개 속성영역에 값(Attribute)를 binding
  - 속성
      var : binding할 이름
      scope : binding할 속성영역. 값 : page, request, session, application
      value : binding할 속성 객체
      - 예) <c:set var="name" scope="request" value="홍길동"/>

 2. binding된 Attribute의 property에 값을 설정
   - 속성
      target : property를 설정할 attribute
      value : property에 설정할 값
      property : 값을 설정할 property
   - 예 <c:set target="${requestScope.cto}" property="id" value="aaa"/>
 
⑥ remove 태그

 - 4개 속성영역에 binding된 attribute객체를 제거하는 태그
 - 속성
   var : 제거할 속성의 이름
   scope : 제거할 속성이 binding된 영역(page, request, session, application)
 - 예) <c:remove scope="request" var="cto"/>

 

 

 

 

Posted by 조은성
,

* EL(Expression Language) - 표현식 언어

1. JSP 2.0에서 새로 추가된 스크립트 언어
2. 기존의 expression tag의 업그레이드 버전

3. 주요기능
   - 리터럴 데이터 출력
   - 각종 연산자를 제공하여 연산결과 출력을 지원
   - 4개 속성 scope(page, reqeust, session, application)에 binding된 Attribute(객체)나 그 Attribute의 property값 출력
   - JSTL과 연동

4. 구문
   - ${출력내용} - ${10}, ${"안녕"}, ${10+20}
   - ${value1.value2[.value3 ..]}
      - 특정 객체의 property 접근 할 때 사용


   - ${value1[value2]}
      - 컬랙션(list 계열)의 값을 출력할 때 주로 사용


   - value1에는 EL 내장객체나 attribute 명이 들어와야 한다.
   - 구문을 실행 도중 null이 나오면 더이상 진행하지 않고 출력도 하지 않는다.
   - 예)
      ${requestScope.mto.id}
      ${cto.address.zipcode}
      ${sessionScope.list[0]}

5. JSP의 scropt(스크립트 릿, 표현식, 선언식, 지시자) 태그에는 사용 못한다.
6. action 태그내에는 사용 가능
   - <jsp:include page="${dir}/a.jsp"/>


7. EL의 내장객체(기본객체)
 - EL은 11개의 내장객체를 제공하여 별다른 추가 코드 없이 특정 객체에 접근하여 사용할 수 있도록 한다.
   - JSP의 내장객체와는 다르다.(pageContext는 jsp와 같지만 쓸일이 없다)
   - EL 내장객체 중 pageContext를 제외하고는 모두 name - value 형태의 값을 관리한다.
   - ${} 내에서만 사용가능 하며 첫번째 값으로만 올 수 있다.

 - scope와 관련된 내장객체
   - pageScope : pageScope에 접근
   - requestScope : request Scope에 접근
   - sessionScope : session scope에 접근

   - applicationScope : application scope에 접근

 - 요청파라미터 관련 내장객체
   - param : 요청파라미터 조회시 사용(하나의 이름 하나의 값이 넘어온 경우)
   - paramValues - 요청파라미터 조회시 사용(하나의 이름으로 여러값이 넘어온 경우)

 - Header 값 관련
   - header
   - headerValues

 - 쿠키 값 조회
   - cookie : ${cookie.이름.value}

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

 - PageContext 객체 관련 내장객체
   - pageContext

                           

* [실습]

*

 

* 결과보기

 

*

 

* 결과보기

 

*

 

 

 * 결과보기

 

 * 위에 <%@ page isELIgnored="true" %>을 사용하면 el을 문자 그대로 표현할 수 있다.

Posted by 조은성
,

* include

1. JSP 페이지 내에 다른 컴포넌트(JSP, HTML, Servlet)를 포함 시키는 기술
   - 주로 jsp나 html을 포함시킨다.
   - include 지시자 태그를 이용, 표준 action 태그 이용
   - 기타 : JSTL(jsp standard tag library)의 import 태그 이용, tiles 프레임 워크

2. <%@ include%> 지시자 태그 이용
   - copy and paste 방식
      - jsp를 servlet으로 변환하기 전에 포함시킬 파일의 내용을 카피하여 붙인다. 
      - 구문 : <%@include file="포함시킬 파일명"%>

* [실습]

jsp
WebContent
이름 : include/a.jsp, b.jsp

 

 

 

- 실행결과(지시자 태그를 사용하면 소스를 그대로 붙여서 사용하기 때문에 a.jsp에 선언된 k를 b.jsp에서 인식해서 에러가 나지 않지만 아래 액션태그를 사용하면 k를 인식하지 못해서 에러를 낸다.(액션 태그는 RequestDispatcher 방식으로 요청을 하고 결과만을 받아서 중간에 있는 k를 인식하지 못한다. )

 

 

3. <jsp:include> 액션 태그 이용
- 요청 디스패치 방식
- 수행을 포함시킬 컴포넌트로 이동한 뒤 출력내용을 포함시키는 방식
- 구문
<jsp:include page="url"/>
<jsp:include page="url">
<jsp:param name="name" value="value"/>
</jsp:include>

 

* [실습]

 

 

 

* 결과

 

 

* <jsp:param id="" value=""> 사용하기

 

 

 

 

- 실행결과

 

 

* 일반적으로 include는 지시자 태그를 이용하는 것이랑 액션태그를 사용하는 것은 다를 바 없게 사용한다. 위와 같이 k를 변수로 선언하고 k를 사용하는 식으로 사용하지는 않는다. include 태그 안에는 그 파일에 꼭 필요한 소스만 넣는 것을 원칙으로 한다. 

'프로그래밍 > JSP Programming' 카테고리의 다른 글

2012-5-8 JSTL정의 및 태그 실습  (0) 2012.05.08
2012-5-7 EL(Expression Language) - 표현식 언어  (0) 2012.05.07
2012-5-4 <jsp:forward>  (0) 2012.05.04
2012-5-4 <jsp:getProperty> 태그  (0) 2012.05.04
2012-5-4 setProperty  (0) 2012.05.04
Posted by 조은성
,

* <jsp:forward>

 1. JSP의 수행을 다른 컴포넌트로(JSP, Servlet, HTML)로 이동하는 태그
 2. RequestDispatcher객체.forard() 실행을 태그화한 것
 3. 요청 Dispatch 방식으로 이동
 4. 속성
   - page : 수행을 이동할 컴포넌트의 url 설정
5. 예)
   <jsp:forward page="abc.jsp"/>
   -> 의미
   RequestDispatcher rdp = request.getRequestDispatcher("abc.jsp");
   rdp.forward(request, response);

 

- CustomerDTO

 

'프로그래밍 > JSP Programming' 카테고리의 다른 글

2012-5-7 EL(Expression Language) - 표현식 언어  (0) 2012.05.07
2012-5-7 include태그  (0) 2012.05.07
2012-5-4 <jsp:getProperty> 태그  (0) 2012.05.04
2012-5-4 setProperty  (0) 2012.05.04
2012-5-4 useBean태그  (0) 2012.05.04
Posted by 조은성
,

* <jsp:getProperty> 태그

 1. <jsp:useBean>태그로 lookup한 객체의 property 값을 조회하여 출력하는 태그
 2. bean 객체의 getter 메소드를 호출한다.(getXXX 또는 is XXX)
 3. 속성
   - name : 프라퍼티를 조회할 객체의 이름.ustBean의 id값
   - property : 조회할 프라퍼티의 이름(getter메소드의 이름)
 4. 예)
   <jsp:getProperty name = "mto" property="age"/>
   -> 의미
   <%=mto.getAge() %>

- getProperty사용 예

- 결과보기

 

'프로그래밍 > JSP Programming' 카테고리의 다른 글

2012-5-7 include태그  (0) 2012.05.07
2012-5-4 <jsp:forward>  (0) 2012.05.04
2012-5-4 setProperty  (0) 2012.05.04
2012-5-4 useBean태그  (0) 2012.05.04
2012-5-4 액션 태그(Action Tag)  (0) 2012.05.04
Posted by 조은성
,

* <jsp:setProperty>
 1. <jsp:useBean> 태그로 lookup 한 객체(Attribute)의 property에 값을 설정하는 태그
 2. Lookup 한 Attribute의 setter 메소드를 호출하여 값을 설정한다.
   - 명시적인 값을 설정
   - 요청파라미터로 넘어온 값을 설정
 3. 속성
   - name : 값을 설정할 bean의 이름. useBean의 id값
   - property : 값을 설정할 property 명. (setter메소드에서 set을 제외한 이름)
   - value : 설정할 값
   - param : 요청파라미터의 값을 설정할 경우, 요청파라미터의 이름
 4. 요청파라미터로 넘어온 값을 설정할 경우 property의 이름과 요청파라미터의 이름이 동일한 경우 param을 생략할 수 있다.
 5. 예)
   <jsp:setProperty name="mto" property="id" value="myid"/>
   ->의미
   mto.setId("myId");

--------------------------------------------------------------------------------------
   <jsp:setProperty name="mto" property="name" param="p_name"/>
   ->의미
   mto.setName(request.getParameter("p_name"));

4. 요청파라미터로 넘어온 값을 설정할 경우 property의 이름과 요청파라미터의 이름이 동일한 경우 param을 생략할 수 있다.
-> <jsp:setProperty name="mto" property="name" />

 

jsp
WebContent
이름 : actiontab/req2.jsp

jsp
WebContent
이름 : actiontab/res2.jsp

 

jsp
WebContent
이름 : actiontab/register_customer.jsp

 

 

Posted by 조은성
,

* <jsp:useBean>

1. 속성 영역(page, request, session, application) 에 binding 된 속성 객체를 lookup한다. 만약 가져 오지 못하면 생성하여 그 영역에 binding한다.

2. 태그의 attribute(속성)
 - id : 자바식별자, binding 시 설정 이름
 - class : lookup할 클래스의 이름. fully name으로 설정
 - scope : 속성 영역, 값 : page(기본), request, session, application
- 예)
<jsp:useBean id="mto" class="dto.MemberDTO" scope="request"/>

-> 의미
MemberDTO mto = (MemberDTO)request.getAttribute("mto");
if( mto == null ){
   mto = new MemberDTO(); //no-arg 생성자로 생성, 따라서 MemberDTO class에는 반드시 no-arg생성자가 있어야 한다.
   request.setAttribute("mto",mto);
}

 

[실습]
class
package : myjsp.dto
class : CustomerDTO

jsp
WebContent
이름 : actiontag/req1.jsp

 

 

 

- servlet class
package : myjsp.actiontag
name : RegisterCustomerSerlvet
url-mapping : /register

 

 * 입력

 * request 스코프의 값 읽어온 결과

 * session스코프의 값 읽어온 결과

 

 

* scope를 request로 바꿨을 시의 결과

 

 * 응답이 다시 갔다오므로 세션처럼 계속 값을 유지하지 못하고 null값이 들어가게 된다.

Posted by 조은성
,

* 액션 태그(Action Tag)

 - JSP 내에서 자바코드를 줄이기 위한 태그
    - 액션 태그는 JSP내에서 JAVA코드 없이 태그를 이용해 동적인 실행을 처리 하기 위해 제한됨
    - 태그와 Java코드를 연결하여 JSP가 Servlet으로 변환 시 Web Container가 그에 알맞은 동적인 실행을 처리 

 - 종류
    - 표준 Action 태그 : Jsp 스펙에서 제공하는 태그
    - Custom tag : 사용자 정의 액션 태그


 - 기본 주문
    - <prefix : 태그명 속성 = "속성값" [속성="속성값"...]>
    - prefix - 태그 library를 구분하기 위한 이름
    - xml 문법을 따른다.
       - 대소문자 구분
       - 속성의 값은 ' 또는 "으로 감싸준다.
       - 태그는 반드시 닫아야 한다.
       - 예)
          <c:forEach item="list" var="mto"></c:forEach>
          <jsp:getProperty name='cto' property='name'/>

 

* 표준 액션 태그

 - JSP 스펙에서 제공하는 액션태그
   - 따로 library를 설정할 필요 없이 web container가 제공한다.
 - 구문
   <jsp:태그명 속성='값' ...>
 - 주요 태그
   - Attribute로 설정된 빈 객체와 연동하기 위한 태그
      - useBean, forward, param

 

Posted by 조은성
,

* 초기파라미터 xml에 지정하고 jsp로 불러오기 [실습]

- dynamic web project
myjsp


- webContent
implicit_var/init_param.jsp


- web.xml

 

 * servlet mapping으로 된 url 경로로 접근 했을 시 결과 : http://localhost:8088/myjsp/init_param

 * servlet 값으로 url 경로에 접근 했을 시 결과 : http://localhost:8088/myjsp/implicit_var/init_param.jsp(servlet 객체 내에서만 사용하므로 config초기 파라미터 값이 null이 나온다.)

Posted by 조은성
,

* 내장 객체(Implicit variable)

 1. jsp에서 기본적으로 제공해 주는 객체
  - 변수의 선언, 객체의 생성, 할당 없이 JSP 태그에서 사용할 수 있는 객체
  - JSP가 서블릿으로 변환될 때 web container가 생성해서 제공

 2. 종류
   - request : HttpServletRequest
   - response : HttpServletResponse (ex : 쿠키 관련된 것에 많이 사용된다)
   - out : JspWriter - Servlet에서의 PrintWriter 역할
   - session : HttpSession - <%@ page session="false"%> 로 설정하면 안 생긴다.
   - application : ServletContext
   - config : ServletConfig
   - pageContext : PageContext - Servlet에는 없는 객체로 다른 내장 객체들을 생성할 수 있다.
   - page : this - 서블릿 객체 자신
   - exception : Throwable - <%@ page isErrorPage="true"%>로 설정 된 경우만 생성(default 는 false)

Posted by 조은성
,