몸체 내용 처리
è 태그파일로 구현된 태그에 몸체를 전달하는 방법
형태 : <tf:someTagFile att기 =”속성값”>
… 여기에 몸체 내용 입력
</tf:someTagFile>
è <jsp:body>태그를 이용해서 몸체 내용을 전달
태그 파일이 <jsp:attribute> 태그를 이용해서 속성값을 전달받을 경우는 <jsp:body>를 사용해서 몸체 내용을 전달한다
형태
<tf:someTagFile attrl =”속성값”>
<jsp:attribute name=”arr2”>value</jsp:attribute>
<jsp:body>
… 여기에 몸체 내용 입력
</jsp:body>
</tf:someTagFile>
EL과 태그를 처리한 몸체 내용 사용하기
è 태그파일에서 몸체 내용의 EL이나 액션 태그 등을 처리한 결과를 사용하려면 tag 디렉티브의 body-content 속성값을 scriptless로 지정해야 한다 .
<jsp:doBody> 액션 태그를 이용해서 몸체 내용을 출력하거나 EL변수로 저장
è <jsp:doBody> 액션태그는 2가지 형태로 사용
ㄱ. <jsp:doBody/> : 몸체로 전달받은 내용을 그대로 출력한다.
ㄴ. <jsp:doBody var=”변수명” scope=”영역”/>
è 몸체로 전달받은 내용을 var 속성으로 지정한 EL변수에 저장
è Scope 속성을 이용해서 EL 변수를 저장할 영역을 지정한다.
예제를 통해서 익혀보자 .
다음은 임의로 만들어준 tag파일이다.
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ tag body-content="scriptless"%> // body의 값이 존재한다.
<%@ attribute name="length" type="java.lang.Integer"%> // length 는 정수형
<%@ attribute name="trail"%> // trail
<%@ attribute name="trim"%> // trim
<jsp:doBody var="content" scope="page" /> // body로 받아온 값들을 content에 저장시키고 , 범위는 page내에서
<%
String content = (String) jspContext.getAttribute("content");
if (trim != null && trim.equals("true")) {
content = content.trim(); // 받아온 값의 공백을 제거 앞뒤로 ,
}
content = content.replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?>", ""); // 쓸모없는 식별자들을 ""로 대체시킨다.
if (length != null && length.intValue() > 0 && content.length() > length.intValue()) {
content = content.substring(0, length.intValue());
if (trail != null) {
content = content + trail;
}
}
%>
<%=content%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Date"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> // core 태그
<%@ taglib prefix="tf" tagdir="/WEB-INF/tags"%> // 파일 태그
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>use_removeHtml.jsp</title>
</head>
<body>
<c:set var="dateEL" value="<%=new Date()%>" /> // 현재 시간 생성
<tf:removeHtml trim="true">
<font size="10"> 현재
<style>
시간
</style> 은 ${dateEL} 입니다 .
</font>
</tf:removeHtml> // 공백을 제거한 문자열 추출 .
<br>
<tf:removeHtml length="15" trail="..." trim="true">
<u>현재 시간</u>은 <b>${dateEL}</b> 입니다. </tf:removeHtml> // content에 맞게 출력 , 15 미만의 글자수를 출력
<br>
<tf:removeHtml length="15">
<jsp:body>
<u>현재 시간</u>은 <b>${dateEL}</b> 입니다.</jsp:body> // 15미만의 글자수를 출력
</tf:removeHtml>
</body>
</html>
'학부공부 > 웹시스템설계및개발' 카테고리의 다른 글
서블릿(Servlet) 기초. (0) | 2018.10.13 |
---|---|
태그 파일의 variable 디렉티브와 name-given을 이용한 변수 추가 (0) | 2018.10.13 |
EL , Core , FMT , functions 태그를 사용하여서 체크박스값 가져오기 (0) | 2018.10.03 |
JSTL의 Foreach를 통한 이중 배열 다루기 . (2) | 2018.09.30 |
JSTL 문법의 forEach 사용법 (0) | 2018.09.30 |
#IT #먹방 #전자기기 #일상
#개발 #일상