2012-11-17 3 views
1

좋은 날, 나는 Jave EE를 배우는 초보자입니다. 나는의 doGet 메서드에서 다음 코드를 포함하는 서블릿 (컨트롤러) VersionOverview.java을 만들어 :/WEB-INF 폴더의 JSP 페이지가 컴파일되지 않는 이유는 무엇입니까?

RequestDispatcher view = request.getRequestDispatcher("WEB-INF/jsp/versions.jsp"); 
view.forward(request, response); 

파일의 WEB-INF/JSP/versions.jsp이 라인이 포함

<div id="content"> 
    <jsp:include page="/WEB-INF/jspf/organization-filter.jspf" /> 
    ... 
</div> 

파일/WEB을 -INF/JSPF/조직 filter.jspf에는 다음의 세 행이 포함됩니다

<form name="organization-filter" action="versions"> 
    <input type="text" id="org_name" name="org_name" value="<%= request.getAttribute("org_name") %>"> 
    <br> 
    <input type="hidden" id="org_id" name="org_id" value="<%= request.getAttribute("org_id") %>"> 
    <br> 
    <input type="submit" name="submit" value="Submit"/> 
</form> 

나는 (위의 서블릿에 매핑) 페이지/버전을 열은 조직 filter.jspf 대신 O 때문에 컴파일되지 것 같다 때 그것은 아무튼 왜

<div id="content"> 
    <%@include file="/WEB-INF/jspf/organization-filter.jspf" %> 
    ... 
</div> 

알려 주시기 바랍니다 : 제대로 작동을 시작 아래

<%= request.getAttribute(

나는 versions.jsp 지시문을 포함 변경하는 경우 표시와 같은 : F 빈 입력 필드 이름 ORG_NAME 나는 그 안에이 텍스트를 볼 수 있습니다 jsp : include를 사용할 때 작동하지 않습니다. 미리 감사드립니다. Vojtech

답변

3

JSPF 파일이이 지침을 포함하여, 정적으로 포함하도록되어있는 파일입니다 :

가되어 이후 단지 JSP 단편 세그먼트가 무엇인지, 그리고 도베 정적으로 포함입니다
<%@ include file="someFile.jspf" %> 

, 그것을 컴파일 할 시점이 없다.

여기 사양의 말씀입니다 :

는 기본적으로 확장 .jsp로는 최고 수준의 JSP 파일을 의미한다. 우리는 그래서 JSP에게 최상위 사이 ( 다른 페이지 나 서블릿하여 클라이언트에 의해 직접 호출 또는 동적 포함) 파일과 정적으로 포함 세그먼트를 구별하기 위해, 추천 하지만 강제하지 않습니다

  • .jsp로 확장자는 처리 될 때 JSP 페이지를 형성하는 최상위 JSP 파일에 해당하는 파일에만 사용됩니다.
  • 정적으로 포함 된 세그먼트는 다른 확장자 인 을 사용합니다. 이 스펙의 이전 버전에서 포함 된 세그먼트는 'JSP 프래그먼트' 이었으므로 확장자 .jspf는 제안으로 제안 된 입니다. 이 확장은 여전히 ​​'jsp 세그먼트'라고 불리는 것에도 불구하고 일관성 이유로 인해 여전히 제안되었습니다. 당신이 동적으로 포함 할 경우

는, 다음은 .jsp 확장이 있어야합니다. 그러나이 경우에는 정적 포함을 사용하지 않는 이유를 알 수 없습니다.