2011-10-24 6 views

답변

34

jGuru : 포함 된 파일의 텍스트 당기고 를 포함한 파일의 일부인 것처럼 그것을 컴파일 C "#include", 등

<%@include file="abc.jsp"%> 지시자 역할을한다. 포함 된 파일 형식은 (HTML 또는 텍스트 포함) 일 수 있습니다.

< JSP는 : > 태그는 별도의 JSP 파일로 파일을 컴파일하고, 컴파일 된 JSP에서 그에게 전화를 내장하고 "abc.jsp"= 페이지를 포함한다.

일부 JSP 엔진

가 아닌 표준 태그를 지원 <!--#include file="data.inc"--> (NCSA-, 또는으로 shtml 스타일)과 <%@ vinclude="data.inc" %> (의 JRun 스타일), 그러나 이들은 JSP 스펙에 정의되지 않은, 따라서 의존 할 수 없습니다.

또한 JSP 자주 묻는 질문에이 질문을 참조하십시오.

1

하나는 고정 수입 (<퍼센트 = @ 포함 ...> "), 다른 하나는 (JSP : 포함) 동적 하나입니다. 그것은 당신이 거를 위해 지정해야합니다 예를 들어 경로에 영향을 미칠 것이다 포함 된 파일에 대한 약간의 연구가 있습니다.

51

언급 한 바와 같이 <%@ include은 정적 인 포함이고 <jsp:include은 동적 인 포함입니다. 매크로와 함수 호출 (당신이 그 조건을 잘 알고있는 경우) 퍼팅. 또 다른 방법은, 정적 포함은 <%@ include 문장의 위치 (이하 "코드") 복사 - 붙여 넣기 포함 된 파일의 정확한 내용을 정확히 같은 일이 (어느 정확히 JSP 컴파일러가 수행 할 것입니다.

는 동적 표시된 페이지를 실행하고 <jsp:include 문 대신에 호출 페이지의 출력 페이지로부터의 출력을 포함하는 요청 (요청 디스패처를 사용)를 만들 포함한다.

여기에 큰 차이는 동적 포함하여, 포함 된 페이지가 자신의 pageContext에서 실행할 것입니다. 요청이기 때문에 다른 요청과 함께 매개 변수를 보낼 수있는 것과 같은 방법으로 페이지에 매개 변수를 보낼 수 있습니다. 정적 인 include는 호출 페이지의 컨텍스트 내에서 실행되는 코드 조각입니다. 당신이 정적으로 두 번 이상 같은 파일을 포함하는 경우, 해당 파일의 코드는 같은 변수를 선언 할 수 없기 때문에 (컴파일러 오류를 생성하는 것입니다 그래서 뭔가

<% 
int i = 0; 
%> 

처럼 호출 페이지의 여러 위치에 존재합니다 두 번 이상).

93

은 하나 개의 코드 재사용 조각 I 지시어 <%@include file="reuse.html"%>를 사용하여 초당 I는 <jsp:include page="reuse.html" /> 태그를 사용한다.

<html> 
<head> 
    <title>reusable</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 
<body> 
    <img src="candle.gif" height="100" width="50"/> <br /> 
    <p><b>As the candle burns,so do I</b></p> 
</body> 

JSP 파일을 모두 실행 한 후 같은 출력을 볼 수 있고 지시사이에 차이가 있다면 생각 :

하자 재사용 가능한 파일의 코드가 될 태그. 하지만 당신은 두 개의 JSP 파일의 생성 servlet를 보면, 당신이 보게 될 difference.Here 당신이 directive 사용할 때 표시되는 내용입니다 :

out.write("<html>\r\n"); 
out.write(" <head>\r\n"); 
out.write("  <title>reusable</title>\r\n"); 
out.write("  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n"); 
out.write(" </head>\r\n"); 
out.write(" <body>\r\n"); 
out.write("  <img src=\"candle.gif\" height=\"100\" width=\"50\"/> <br />\r\n"); 
out.write("  <p><b>As the candle burns,so do I</b></p>\r\n"); 
out.write(" </body>\r\n"); 
out.write("</html>\r\n"); 

을이 당신이 사용하는 태그에 표시되는 내용입니다 두 번째 JSP 파일 :

org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "reusable.html", out, false); 

그래서 지금 당신은 include 지시문은 번역시 reuse.html의 소스를 삽입하지만 액션 태그는 런타임에 reuse.html의 응답을 삽입하는 것을 알고있다.

생각해 보면 모든 작업 태그 (jsp:include file)에 추가로 성능이 저하됩니다. 즉, 항상 최신 내용을 유지할 수 있음을 보장 할 수 있지만 성능 비용은 증가합니다.

+5

어떤 결과가 어떤 출력 결과에 더 구체적 일 수 있습니까? 두 번째 include is using 지시문 (@include)을 언급했습니다. 그런 다음 첫 번째 출력 결과에서 지시어 (@include)에 대해 언급했지만 두 번째 출력 결과에는 두 번째 포함 (앞의 설명에서 @include)에서 나온 것으로 나타났습니다. – stack247

+0

아주 좋은 설명 ... + 1과 엄지 손가락 –

+30

다른 사람이이 답변으로 혼란을 느낄 경우를 대비해' eis

27

1) 을 사용하는 경우 지시문을 사용합니까?

지시어를 사용 포함 메커니즘을 포함, 웹 응용 프로그램의 여러 JSP 년대에 걸쳐 동일한 출력 로직의 중복을 방지하기 위해, 즉 사용됩니다., 프리젠 테이션 로직의 재사용 성을 촉진하기 위해

<%@ include file="abc.jsp" %> 

때 위의 지시를 jsp 엔진에 의해 수신되면 abc.jsp의 소스 코드를 검색하고 현재 jsp에서 동일한 인라인을 복사합니다. 번역을 복사하는 것은 현재 페이지에 대해 수행 된 후

단순히 엔진 즉 JSP 정적 명령이다라고. "abc.jsp"의 전체 소스 코드는 때 를 사용하는 현재 페이지

2)에 복사 액션을 포함 하시겠습니까?

태그 대신에 포함 된 페이지에 의해 실행시에 발생하는 출력

태그 기능을 포함하는 현재의 페이지 응답에 포함되어있는 현재의 페이지에 포함 된 페이지의 소스 코드를 포함하지 않는 등 비슷 의

이 태그를 포함 서블릿 프로그래밍의 요청 디스패처의 메커니즘을 포함 엔진 즉 JSP하는 런타임 명령입니다. 대신 메서드 호출이 이루어진다 현재 페이지에 전체 코드를 복사 현재 페이지

+1

위대한 설명! 지시어 <% @ include file = "file.jsp"%> 또는 런타임시 (작업) Joe

1
을에서 "abc.jsp"에

Java Revisited

  1. include 지시문이 포함하는 자원은 jsp 변환 중에로드되지만 포함 동작이 포함하는 자원은 요청 시간 중에로드됩니다.
  2. 포함 된 자원의 변경 사항은 JSP 지시문이 다시 컴파일 될 때까지 include 지시어에 표시되지 않습니다. 포함 동작의 경우 포함 된 리소스의 변경 사항은 다음 요청시 표시됩니다.
  3. Include 지시문은 정적 가져 오기이며 include 작업은 동적 가져 오기입니다.
  4. include 지시문은 파일 특성을 사용하여 포함 할 리소스를 지정하고 포함 동작은 동일한 용도로 페이지 특성을 사용합니다.
관련 문제