2008-10-31 1 views
1

scriptlet을 사용하지 않고 JSP에서 다음과 같은 작업을 수행 할 수 있습니까?scriptless JSP

<% response.setContentType("text/plain"); %> 

내가 (A의 다른 지점에서 각) 2 곳에서 콘텐츠 형식을 설정해야하기 때문에 단순히

를 사용할 수 있고, JSP 컴파일러는 하나의 지시어를 허용합니다 .

또한 인증 실패가 발생할 때 JSP가 컨테이너에 의해 트리거되므로 두 개의 별도 JSP를 작성하여 서블릿에서 둘 중 하나로 전달할 수 없습니다.

건배, 돈

답변

2
<%@ page language="java" contentType="text/plain" %> 

편집 : 당신이 조건부로 MIME 타입을 설정해야하는 경우

, 당신은 위 반하는 스크립틀릿이다 분명히

<% 
if(branch condition) { 
    response.setContentType("text/plain"); 
} else { 
    response.setContentType("text/html"); 
} 
%> 

를 사용할 수 있습니다 원래의 질문. 스크립틀릿을 사용하고 싶지 않은 특별한 이유가 있습니까?

서블릿에서 분기 로직을 ​​수행하고 디스플레이를 처리하는 JSP로 요청을 전달하는 것이 더 나은 접근 방법 일 수 있습니다. 내용 자체가 다른 경우 두 개의 개별 JSP (각 내용 유형에 하나씩)를 사용할 수 있습니다.

+0

죄송합니다. 왜이 기능을 사용할 수 없는지 잊어 버렸습니다. 질문을 업데이트했습니다. –

+1

Scriptlet을 사용하고 싶지 않은 특별한 이유는 나쁜 습관이라고 생각됩니다. –

0

텍스트/일반 응답과 텍스트/html 응답 사운드가 매우 다른 두 개의 매우 다른 응답과 비슷합니다.

2 개의 JPS를 만들고 대신 서블릿에 분기하십시오.

공통 요소가있는 경우 포함을 사용할 수 있습니다.

2

가장 쉬운 방법은이를 수행 할 수있는 태그 파일 태그를 작성한 다음 사용하는 것입니다.

WEB-INF/tags 디렉토리에 "setMimeType.tag"파일을 만듭니다.

<%@tag description="put the tag description here" pageEncoding="UTF-8"%> 
<%@ attribute name="mimeType" required="true"%> 
<% 
    response.setContentType(jspContext.findAttribute("mimeType")); 
%> 

는 그런 다음 JSP에서 헤더에 이것을 추가 :

<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %> 

이 그런 다음 JSP에서 당신이 할 수 있습니다

<t:setMimeType mimeType="text/plain"/> 

예, 태그 파일은 스크립트 무료로하지 않습니다, 하지만 실제 JSP 페이지는 있습니다. 내가 머리카락을 나눌 것이라고 주장 할 수는 있지만, 태그 파일은 캡슐화와 추상화에 대한 유용한 정보를 제공하기 때문에 스크립팅과 같은 것들을 넣을 수있는 완벽한 매체라고 생각합니다. 또한, 유일한 해결책은 JSP 태그 핸들러를 Java로 작성하는 것인데, 이는 매우 간단한 일이다.

JSP 2.0이 필요하지만 JSP 태그 파일은 JSP 개발에 큰 도움이됩니다.