아래는 ContainsTag클래스의 첫부분이다.
여기서 말하는 copyId, id, key중에서 id는 필수값이다(커스텀 태그 클래스 문서 보면 알수 있고 클래스 파일의 윗부분을 보면 M이라고 표시되어 있음). 따라서 id는 아래와 같이 jsp문서에서 커스텀 태그를 만들시에 기본적으로 제공되어야 한다.
위의 코드에서 id, key는 기본적으로 jsp문서에서 커스텀 태그에서 제공되는(위그림)id와 key값을 의미한다.
또한
여기서 잠깐 왜 ContainsTag 커스텀 태그에서는 서블릿에서 데이터를 보낼 때 아래 그림과 같은 setAttribute형식(45라인)이 아닌 맵을 통해 데이터를 put(47,48라인)해야만 하는 것인가? ==>> 그럴 필요없다!! 맵이 아닌 setAttribute형식을 사용하더라도 보내는 데이터의 이름을 "request"로 하면 JSP쪽에서는 정상적으로 읽을 수 있다.
맵을 사용하지 않고서는 위와 같이 단일 데이터(Object=user)만 Object객체의 값으로 나온다. (컨솔에 나온값으로
)
반면 맵사용시 아래와 같은 결과를 얻을 수 있다.
다만!!! ContainsTag커스텀 태그 클래스를 보면 아래와 같은 코드가 나오는데 servlet으로 부터 전송받은 데이터가 단순 값이 아닌 맵 형태의 데이터여야만 78라인으로 들어가고 그후 Servlet으로 부터 받은 맵데이터중 JSP에서 제공된 key와 같은 key가 있는지를 살피게 된다. 만약 있다면 82라인에서 보듯이 true가 되어 EVAL_BODY_INCLUDE. 즉, 커스텀 태그안의 body부분인
<p>User parameter is present in the request.</p> 코드가 실행되는 것이다. 반면 맵형태의 데이터가 오지 않으면 83라인으로 가서 커스텀 태그 안의 내용을 SKIP하게 된다(return SKIP_BODY)
==============================================================================
별개로, 아래의 doStartTag에 들어갈 때 id, key등은 이미 JSP파일에서 에서 커스텀 태그의 속성으로 받았던 id, key값이 들어가게 된다.
'JSP, Servlet' 카테고리의 다른 글
JSP에서의 커스텀 사용 대원칙과 커스텀 태그 클래스 분석: hidden에 대하여 (1) | 2024.11.15 |
---|---|
커스텀 태그 클래스 분석: ContainsTag에 대하여 (0) | 2024.11.15 |
irt 커스텀 태그 클래스 분석: ContainsElseTag에 대하여 (0) | 2024.11.14 |
Servlet에서 JSP로의 데이터 전송에 관하여. (0) | 2024.11.13 |
Custom tag에 대하여 (0) | 2024.11.11 |