JSTL에서 C:out 을 쓰는 이유

국물빌런·2020년 2월 1일
0

안녕하세요 공부하다가 궁금한게 있어 질문드려봅니다.

개정판 책 p.248 모달창을 보여주는 작업중 list.jsp 처리 부분인데요.

아래 list.jsp 사진중 세번쨋 줄 부분에 boardController에서 보낸 bno값을

<script> 구문속에서

EL문을 사용하여 값을 받아와서

var result 로 선언하는부분이 있는데

책에서는

1) var result = '<c:out value="${result}"/>'; 이렇게 표현되어있는데

이렇게 2) var result = "${result}"; 찾아서 사용해도 상관없는거 같은데

제가 아직 잘 몰라서... 궁금하다는 생각이 들어 질문 드리게 되었습니다.

저렇게 1번으로 사용해야되는 이유가 따로 있나 궁금하기도하고

1번과 2번 둘다 아무거나 사용해도 상관없는지 궁금해서 여쭈어 봅니다 ^^

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

<script>

$(document).ready(function(){

var result = '<c:out value="${result}"/>';     //<<- 궁금한부분

      //var result = "${result}";                      <<- 제가 생각한 코드

checkModal(result);

function checkModal(result) {

if(result === '') {

return;

}

if(parseInt(result) > 0) {

$(".modal-body").html("게시글 "+ parseInt(result) + " 번이 등록되었습니다.") 

}

$("#myModal").modal("show")

}

});

</script>

[출처] 모달 부분에 대하여 질문 드립니다. (구멍가게코딩단) |작성자 줌스

스프링 책을 보면 그냥 바로 표현식을 써도 되는데 굳이 c:out으로 표현식을 사용한다.

이유는 아래와 같은 이유라는데 아직 이해도가 딸려서 그런지 이해를 잘 못하겠다.

그래도 꽤 좋은 습관이라는 느낌이 들어서 일단은 나도 c:out으로 표현하는 습관을 들여야겠다.

나중에 혹시 잊어버리거나 생각났을때 궁금할 수 있으니 기록으로 남겨둔다

http://www.okjsp.net:8080/article/209612

OKKY | JSTL에서 C:out 을 쓰는 이유가 뭔가요?
TestVo의 name을 가져올때 jsp에서 이렇게도 가져오지만.. 그냥 ${TestVo.name} 이라고 해도 jsp에선 잘 출력되는데 따로 c:out쓰는이유가 있는건가요?

www.okjsp.net

질문 :

TestVo의 name을 가져올때 jsp에서

<c:out value="${TestVo.name} />

이렇게도 가져오지만..

그냥 ${TestVo.name} 이라고 해도 jsp에선 잘 출력되는데

따로 c:out쓰는이유가 있는건가요?

댓글 1

이걸 함 해보시면 도움이 되실지도~

<c:set var="t" value="" />

${t}

<c:out value="${t}" escapeXml="true" />

<c:out value="${t}" escapeXml="false" />

댓글2

위 댓글의 예제 뿐만 아니라 3항연산자도 쓸 수 있고...무엇보다 엄격한 태그 규칙도 지킬 수 있습니다.

댓글3

개행문자 파싱의 차이라고 알고있어요

profile
국물을 달라

4개의 댓글

comment-user-thumbnail
2020년 8월 17일

저도 이 부분이 궁금했는데 댓글2 부분은 약간 이해가 가면서도 속 시원한 답변은 찾기 어렵나봐요 ㅠ

1개의 답글
comment-user-thumbnail
2020년 10월 21일

<c:out>태그안에 내용을 넣어주면 다 문자열이 됩니다
컨트롤러에서 alert()이라는 문자열이 어떤 키 안에 특정값으로 들어갔다고 하면 이상태에서 <c:out>을쓰지 않으면 alert창이 웹상에서 떠 버립니다

<c:out>”alert()”</c:out> 이렇게 c:out을 써주면 alert()라는 문자열로만 보여집니다 alert창이 따로 뜨질 않는거죠

보안에도 관련이 있는데 alert()이 아닌 악성코드라고 한다면 감염이 될 것입니다 그것을 String으로 받아버리면 alert()이 아니라 <c:out>이 문자열로 받아버리니까 감염 될 일이 없고요 그래서 무조건 c:out으로 문자열로 만들어 주는게 중요합니다

1개의 답글