2008-10-20 3 views
4

개발자 그룹과 함께 일하는 것을 기억합니다. 항상 정적 인 HTML 텍스트가 외부 태그 (<c:out value="words" />) 안에 있어야합니다. 왜 이 기억이 나지 않습니다.jstl out 태그를 사용하는 것이 가장 좋은 방법입니까?

jsp 페이지를 작성할 때이 방법이 가장 좋은 방법입니까? 그런 접근법의 장점/단점은 무엇입니까?

답변

10

정적 텍스트는 끔찍한 생각입니다. 정적 인 것과 동적으로 생성되는 것의 장벽이 없습니다.

이 정적이 아닌 ${dynamic} 텍스트입니다 :로

는 외에, 서블릿 사양에 2.3 당신은 정적 텍스트와 혼합 동적 텍스트를 가질 수 있습니다.

  • 당신이 원하는 당신은 오래된 서블릿 사양을 사용하고

    1. , 어떤 방식으로 출력 동적 텍스트에 필요합니다

      유일한 이유

      은 내 경험에서, c:out 태그를 사용하는 등, 그들의 제어 코드와 앰퍼샌드 교체 등 <> 사용하지 HTML 출력 탈출

    O

    therwise, 정적 텍스트를 사용하는 데 프로그래머 또는 유지 관리자가 혼란스럽게 ... 이제 어디서 그랬습니까 EL? c:out 태그에 있었지만 ... 50 줄의 정적 텍스트도있었습니다!

  • +0

    나는 탈출이 오늘 c : out을 사용하는 주된 이유라고 생각한다. –

    +0

    오래된 서블릿 스펙을 사용하지 않는 한 (불행히도, 운좋게도 나는이 불쌍한 영혼이 아닙니다.) 나는 동의합니다 - 이탈하는 XML은 멋지다. – MetroidFan2002

    3

    일반 텍스트를 인쇄하는 경우 HTML로 인쇄하는 것이 좋습니다. c:out 태그의 장점은 태그 내부의 표현식을 평가할 수 있다는 것입니다.

    <c:out value="Hello ${user.firstName} ${user.lastName}"/> 
    
    +0

    컨테이너가 EL 지원을 직접 제공 할 수있는 경우 Servlet Spec 2.3+에서 이점이 사라집니다. 따라서 Hello : {user.firstName} $ {user.lastName}이 c : out없이 읽을 수있을 때 Servlet Spec 2.3+ 컨테이너에서 EL을 출력하는 데 c : out을 사용해서는 안됩니다. – MetroidFan2002

    +1

    EL이 특수 HTML 문자를 이스케이프 처리하지 않는다는 점에 유의하십시오. EL이 사용자가 제공 한 데이터를 출력하는 경우이 사이트는 크로스 사이트 스크립팅과 같은 심한 보안 취약성에 대해 응용 프로그램을 열어 둡니다. – laz

    관련 문제