연습 1.5: JSP 파일 코딩 차이점 비교

시작하기 전에 연습 1.4: 전개 설명자 차이점 비교를 완료하십시오.

이 연습에서는 두 포틀렛 API 사이의 JSP 클래스 코딩 차이점을 학습합니다. 편집 및 보기 JSP 파일의 두 버전을 조사하십시오. 기본적인 차이점이 아래에 설명되어 있습니다.

태그 라이브러리

IBM 포틀렛 API 태그는 portlet.tld 태그 라이브러리에서 선언됩니다. 태그는 portletAPI 접두부를 사용합니다. JSR 168 포틀렛 API는 std-portlet.tld 태그 라이브러리와 portlet 접두부를 사용합니다. fmt.tld에 정의되는 JSTL(JavaServer Pages Standard Tag Library)과 같은 다른 태그 라이브러리도 사용할 수 있습니다. 아래의 샘플 코드에 표시된 것처럼 JSTL 태그 라이브러리는 fmt 접두부를 사용합니다.

IBM 포틀렛 API
<%@ taglib uri="/WEB-INF/tld/portlet.tld" prefix="portletAPI" %>
<portletAPI:init />

<%@ taglib prefix="fmt" uri="/WEB-INF/tld/fmt.tld" %>
<fmt:setBundle basename="nls.Text" />

JSR 168 포틀렛 API
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<portlet:defineObjects />

<%@ taglib prefix="fmt" uri="/WEB-INF/tld/fmt.tld" %>
<fmt:setBundle basename="nls.Text"/>

오브젝트를 JSP 파일에 사용 가능하도록 만들기

IBM 포틀렛 API에서, <portletAPI:init/> 태그는 PortletRequest, PortletResponse 및 PortletConfig 오브젝트를 JSP에서 사용할 수 있도록 만듭니다. JSR 168 포틀렛 API에서는 <portlet:defineObjects> 태그가 JSP파일에서 RenderRequest, RenderResponse 및 PortletConfig 오브젝트를 사용할 수 있도록 만듭니다.

IBM 포틀렛 API
<portletAPI:init />
JSR 168 포틀렛 API
<portlet:defineObjects />

MIME 유형 선언

두 API는 렌더링 응답에 대해 MIME 유형을 설정하는 방법에서 다릅니다. IBM 포틀렛은 MIME 유형을 JSP 파일의 page 지시문에서 선언합니다. JSR 168 포틀렛은 렌더 메소드(doView(), doEdit())에서 RenderResponse 오브젝트의 setContentType() 메소드를 사용하여 MIME 유형을 선언합니다.

IBM 포틀렛 API
<%@ page contentType="text/html"
         import="java.util.*,
                 com.ibm.etools.portal.portletexamples.bookmark.legacy.*,
                 org.apache.jetspeed.portlet.*"
         session="false"%>
JSR 168 포틀렛 API
response.setContentType("text/html");

포틀렛 참조

포틀렛, 포틀렛 페이지 또는 포틀렛 자원에 대한 참조는 포틀렛 URI에서 인코드해야 합니다(JSR 168은 용어 URL을 사용합니다). IBM 포틀렛 API는 createURI를 사용하여 현재 모드에서의 호출 포틀렛을 지시하고 createReturnURI를 사용하여 이전 모드에서의 호출 포틀렛을 지시합니다. JSR 168 포틀렛 API는 조치 단계(actionURL)와 렌더링 단계(renderURL)에 해당되는 URL을 작성합니다.

IBM 포틀렛 API
JSP 파일:   <portletAPI:createURI/>
                 <portletAPI:createReturnURI/>
Java 클래스에서: PortletResponse.createURI()
                 PortletResponse.createReturnURI()
JSR 168 포틀렛 API
JSP 파일:   <portlet:actionURL/>
                 <portlet:renderURL/>
Java 클래스: RenderResponse.createActionURL()
                 RenderResponse.createRenderURL()

URL 인코딩

포틀렛 JSP 파일은 연관된 WAR 파일에서 자원을 이미지, 애플릿 및 기타 JSP 파일로 참조하는 URL을 인코딩해야 합니다. JSR 168 포틀렛 API에서도 컨텍스트 경로가 URL에 포함되어야 합니다.

IBM 포틀렛 API
<%= response.encodeURL("images/photo01.jpg") %>
JSR 168 포틀렛 API
<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/images/photo01.jpg") %>

이름 공간 인코딩

Java 클래스 및 JSP 파일 두 경우에 대한 이름 공간 인코딩이 연습 1.3의 이름 공간 인코딩에 설명되어 있습니다.

자원 번들

두 API 모두에 대한 예제 코드는 JSTL 태그 <fmt:setBundle>의 사용을 보여줍니다. 이 태그는 샘플의 JavaSource/nls 디렉토리에서 표준 Java 자원 번들 Text.properties를 참조합니다. 포틀렛을 정의하는 자원 번들과 이를 비교하십시오.

IBM 포틀렛 API
<fmt:setBundle basename="nls.Text" />
JSR 168 포틀렛 API
<fmt:setBundle basename="nls.Text" />

이제 연습 1.6: 사용할 API 결정을 시작할 수 있습니다.

이용약관 | 피드백
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.