JSTL 출력의 종류

2022. 12. 19. 11:37JSP

day36 프로젝트 내 WebContent 내 WEB-INF 내 lib 내 jstl.jar 와 standard.jar 를 넣는다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL TEST(출력의 종류)</title>
</head>
<body>
	<c:set var="name" value="홍길동"/>
	${name}
	<c:out value="${name }"/>
	
	${"<script>alert('안녕');</script>"}
	<c:out value="<script>alert('안녕');</script>"/>
	<c:out value="<script>alert('안녕');</script>" escapeXml="false"/>
	<br/>
	<c:out value="<b>${name}</b>"/>
	<br/>
	<c:out value="<b>${name}</b>" escapeXml="false"/>
</body>
</html>

Tag가 jsp 화면에 그대로 노출될 경우와 그렇지 않은 경우에 escapeXml을 쓴다고 한다.

JSTL로 <c:out value="값" /> 처리를 할 때, 태그처리를 자동으로 해서 생기는 문제라 한다.

기본적으로는 escapeXml 이라는 값이 true로 처리된다고 하며, 이속성은 <.>와 같은 값들을

&lt; &gt; 등으로 바꾸어 화면에 뿌린다.

하지만, 태그를 사용해서 사용자가 의도한 태그의 기능그대로 예를 들면 <b></b>를 써서

글자를 굵게 보이게 하고 싶다던가 할때 원하는 대로 뿌려줘야 할 경우에는 escapeXml="false"

를 써주면 된다.

 

escapeXml을 설정하지 않거나 true로 설정할 경우,

출력 문자열에 포함된 HTML 특수 문자(예: <.>,&,' 또는 ")는 해당되는 문자 엔티티 코드로

변환되고, JSP 페이지에서 생성된 HTML 페이지에 그 문자가 고대로 적절히 표시된다고

합니다.

 

여기서 <script></script>태그를 <c:out value="값" /> 태그 내 값안에 넣었을 때는 escapeXml="false"로 기본 설정되는 듯하거나 먹히지 않는다고 본다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL TEST(출력의 종류)</title>
</head>
<body>
	<c:set var="name" value="홍길동"/>
	${name}
	<c:out value="${name }"/>
	
	${"<script>alert('안녕');</script>"}
	<c:out value="<script>alert('안녕');</script>" escapeXml="true"/>
	<c:out value="<script>alert('안녕');</script>" escapeXml="false"/>
	<br/>
	<c:out value="<b>${name}</b>"/>
	<br/>
	<c:out value="<b>${name}</b>" escapeXml="false"/>
</body>
</html>

<c:out value="값" /> 태그 내에 <script></script> 태그를 써서 escapeXml="true" 를 써도 스크립트의 alert문이 잘 작동하는 걸로 보아 스크립트태그가 안에 쓰여졌을 때는 무효화되거나 자동으로 escapeXml="false"가 되는 듯 하다..

'JSP' 카테고리의 다른 글

JSTL 제어문 - 반복문  (0) 2022.12.19
JSTL 제어문 - 조건식  (0) 2022.12.19
JSTL  (0) 2022.12.19
iframe 과 navigator.geolocation.getCurrentPosition(성공, 오류, 옵션들);  (0) 2022.12.18
EL  (0) 2022.12.18