2011-09-02 3 views
1

스크립틀릿 대신 사용자 지정 작업을 사용하면 어떤 이점이 있습니까?JSP의 태그 라이브러리 대 태그 라이브러리

예를 들어, 어떤 성능 컨텍스트에서 더 낫습니까?

<%if (param.Clear){%> 
     <font color="#ff0000" size="+2"><strong> 
     You just cleared your shopping cart! 
     </strong><br>&nbsp;<br></font> 
<%}%> 

<c:if test="${param.Clear}"> 
    <font color="#ff0000" size="+2"><strong> 
    You just cleared your shopping cart! 
    </strong><br>&nbsp;<br></font> 
</c:if> 

또는

나는 큰 JSP 프로젝트를하고 난 내 자바 스크립을 유지할 수 있을지 태그 라이브러리를 사용할 필요가 있는지 알고 싶은 나.

또한 Java, JavaScript, CSS 및 HTML 코드가있는 별도의 JSP 파일 인 사용자 정의 태그를 구현하고 싶습니다.

+1

[JSP 파일에서 Java 코드를 피하는 방법] (http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files) – BalusC

답변

0

여기 JSTL이 더 나은 선택이라고 생각합니다.

  1. JSTL을 사용하는 것이 읽기 쉽습니다.
  2. JSP에서 메소드를 만든 경우 해당 JSP에서만 사용할 수 있습니다. 따라서 재사용 가능성도 하나입니다.
  3. pageScoperequestScope 객체가 ${foo} 등을 사용하여 이미 읽을 수 없습니다 request.getAttribute('foo')

단점 - 당신은 그냥 JSTL에서 할 수없는 일도 있습니다.

+0

가능한 복제본 유효한 XML을 얻을 수 있기 때문에 쉽게 변론 할 수 있습니다. – Hurda

2

성능면에서 보면 서블릿으로 컴파일되어 동등하게 잘 수행되어야합니다.

이 당신이주는 예제에서 JSTL을 추천 많은 것 같다,하지만 내가 본 프로젝트에 일이 같은 코드입니다하지 않습니다

<%if (param1.Clear() && param2.isSomeFlagSet() && !param3.isSomeOtherFlagSet()){%> 
     <font color="#ff0000" size="+2"><strong> 
     You just cleared your shopping cart! 
     </strong><br>&nbsp;<br></font> 
<%}%> 

그것은 모든 복사됩니다. > _ < 이것을 기계적으로 JSTL로 대체하면 분명히 나쁜 것을 얻을 수 있지만 더 나은 체계를 구성 할 수있는 기회를 제공합니다.

BalusC의 조언에 따라 JSP에서 인라인 Java 코드를 제거하십시오.

0

나는 JSP를 제거하는 편이 낫다. 나는 6 ~ 8 년 동안 JSP로 작업 해 왔지만 사용 가치가 없다. 템플릿 엔진을 사용하면 더 나은 방향을 찾을 수 있습니다.

2

나는 JSP를 좋아합니다. 마크 업 언어를 제공하는 자바 페이지의 최고라고 생각합니다. 주된 잘못은 이메일과 같은 것들에 대해서는 잘 작동하지 않는다는 것입니다. 왜냐하면 여러분은 단순히 문자열과지도를 평가자에게 전달할 수 없으며 Velocity와 같은 결과를 얻을 수 있기 때문입니다.

그러나 그 사용 사례를 넘어서서, JSP는 훌륭합니다.

질문에 대답하기 위해 스크립틀릿 코드를 유지할 수 있습니다. Scriptlet "if"대 c : if 태그는 "if"가 if 일 때 확실히 더 빠른 CPU가 될 것입니다. 반면 c : if는 메소드 호출과 태그를 호출 할 때 환경 적 헛소리를 더한 것입니다.

그렇다면 속도 차이가 얼마나 큰 영향을 주는지에 대해서는 다른 질문입니다.

대부분의 코드는 JSP에 있으면 안됩니다. 분명히 논리는 대부분 Servlet 또는 백엔드에서 사용중인 다른 것이어야하며 JSP에는 렌더링 코드가 포함되어 있습니다 (확실히 포함 할 수 있음). IFs 및 FORs 등)

스크립트 릿에 대한 주요 인수는 JSP 태그 파일입니다. 태그 파일은 다른 JSP와는 다른 JSP입니다. JSP 태그 파일은 JSP를 리팩터링 할 수있게하고 새로운 태그를 추가하는 것을 어렵게 만듭니다. 그러나 단점은 태그 파일을 사용할 때 만든 모든 태그가 경계 내에 스크립틀릿 코드를 가질 수 없다는 것입니다.

예를 들어 "TABLE"태그를 만든 경우 t : table 및/t : table 요소 사이에있는 모든 요소에는 스크립틀릿 요소가 없습니다. 그러나 Tag File 구현 내에서 스크립틀릿 코드를 가질 수 있으므로 필자가 필요로하는 모든 스크립틀릿을 랩핑합니다.

태그 파일에 대한 개요는 여기 JSP tricks to make templating easier?을 참조하십시오. 그러나 우리는 여기를 훨씬 뛰어 넘습니다. 태그 파일을 사용하여 양식, 표 및 구성 요소 및 모든 종류의 항목을 정의합니다.

0

당신이 제안한 두 가지 옵션 사이에 약간의 성능 차이가있을 수 있지만, 런타임 성능이 실제로 태그 라이브러리가 해결하려고하는 문제는 아니라고 생각합니다.

IMHO의 에 대한 스크립틀릿은 거의 모든 코딩, 디버깅 및 유지 관리 문제에 관한 것입니다. JSP가 오랫동안 비꼬아 진 주된 이유 중 하나는 JSP에 관한 것이 아니라 사람들이 JSP를 사용하는 방법에 관한 것입니다. 더 나쁜 것은 IDE에서 JSP (누군가 다른 사람이 쓴)를 열어 스크립트 레트와 HTML의이 스파게티 코드 엉망을 보는 것입니다. 서버 측 코드와 HTML을 혼합하여 사용하려는 경우 PHP로 이동하여 코드를 작성할 수 있습니다! :)

Taglib을 사용하면 JSP를 처음 개발하는 것이 더 쉽고 빠르게 디버그하고 장기적으로 유지 관리 할 수 ​​있습니다.

<jsp-config> 
    <jsp-property-group> 
    <url-pattern>*.jsp</url-pattern> 
    <scripting-invalid>true</scripting-invalid> 
    </jsp-property-group> 
</jsp-config> 

이에 스크립틀릿 평가를 해제 :

나는 항상 새로운 프로젝트를 시작할 때 내 web.xml의 파일을이 작은 조각과 비슷한 무언가를 추가 할 것을, 스크립틀릿은 가난한 옵션 생각 개발자는 더 나은 대안을 찾을 수밖에 없습니다.

Taglibs의 또 다른 커다란 주장은보다 엄격한 방식으로 코딩한다는 것입니다. 예를 들어, Taglib을 작성할 때 코드에서 던져진 예외 (일방적 또는 다른 예외)를 처리해야합니다. 스크립틀릿에 동일한 코드를 작성하면 IDE 또는 JSP 컴파일러에서 try-catch 블록에 코드를 래핑하라는 메시지가 표시되지 않습니다. 게으르고 전문적이지 않은 프로그래머는 몇 줄의 오류 처리 코드를 작성하지 않아도 기뻐할 것입니다. 실제 프로그래머는 경험에 비추어 볼 때, 예외를 잡아서 Java로 적절하게 처리하는 것이 JSP가 런타임에 예외를 throw하는 것보다 쉽고, 깔끔하고, 강력하다는 것을 알고 있습니다. 또한 JUnit 등의 경우 단위 테스트 taglibs는 매우 간단합니다. 정의에 따르면 JSP를 단 단위로 테스트 할 수는 없지만 일종의 통합 테스트를 수행 할 수는 있습니다.

또한 누군가 언급했듯이 Taglibs를 사용하면 아키텍처 이점이 있습니다. 코드 설계 및 재사용 인자는 Taglibs에 유리합니다. JSP 파일에 임베드 된 스크립틀릿 코드를 공유하는 쉬운 방법은 없습니다. 따라서 복사 - 붙여 넣기 코딩을 끝내면됩니다.

관련 문제