안녕하세요, 플랜티어린입니다. 전처리기 지시어(preprocessor directive)항상 # 기호로 시작하며, 프로그램을 컴파일할 때 동작합니다. #include#include는 지정한 파일의 내용을 컴파일 이전에 포함시킵니다. 컴파일러를 처음 설치하면 installer는 기본 제공되는 #include 파일을 함께 저장하는데 이 파일들에 printf(), strcpy_s()와 같은 기본 제공 함수들이 포함되어 있습니다. 이러한 기본 제공 함수들을 사용하기 위해서는 #include를 통해 특정 파일을 불러와야 합니다. 이러한 기본 제공 파일 이외에도 #include를 사용해 직접 정의한 헤더파일을 추가할 수도 있습니다. <#include 사용의 예시>
위의 예시와 같이 기본 제공되는 파일을 사용할 때는 #include 뒤에 <>를 사용하고, 직접 개발한 헤더파일을 추가하기 위해서는 큰따옴표("")를 사용합니다. 큰따옴표를 사용하면 C프로그램은 저장된 헤더파일 디렉터리를 표준 디렉터리 이전에 탐색하기 때문에 기본 제공된 것과 같은 이름의 헤더파일도 작성할 수 있습니다. #define#define은 상수(constant)를 정의합니다. 즉, 상수(=리터럴; literal)에 이름을 붙입니다. 이렇게 이름이 붙은 리터럴은 기호상수(named constant)나 정의된 상수(defined constant)라고도 불립니다. 또한, 정의된 상수는 (변수와 다르게) 이후에 변경할 수 없습니다. 예를 들어, 다음 예제는 "PI를 3.141592로 대체하라"는 뜻이며, 아래쪽에서 변경할 수 없습니다.
헤더파일(header file) 작성헤더파일은 프로그램에서 반복적으로 사용되는 내용이 있을 때 주로 작성합니다. 헤더파일을 통해 매번 코드를 입력하는 대신에 #include를 통해 저장된 내용을 불러올 수 있습니다. 먼저 헤더파일을 작성하기 위해서는 확장자가 .h인 헤더파일을 추가합니다. 헤더파일을 추가하면 다음과 같이 익숙한 에디터가 열리고 이곳에 원하는 내용을 입력하면 됩니다. 전처리기 지시어인 #include, #define과 헤더파일 작성하는 법에 대해 학습하였습니다. 여기까지 글을 읽어주셔서 감사합니다. I. <jsp:include> 1. 설명 -. 서버측 include가 아닌 클라이언트측의 include라 생각하면 간단하다 즉 출력 결과만(html코드)을 include 한다 -. include 되는 페이지와 변수를 같이 사용할 수 없다 2. 속성 ① page -. 포함시키고자 하는 문서의 위치를 명시한다 -. 상대경로뿐만 아니라 절대경로도 가능하다 -. 서블릿 컨테이너에 따라 HTML 페이지는 안될 수도 있다 -. get 방식으로 파라미터를 전달 할수 없다 -. 동적으로 페이지 할당이 가능하다 즉 <jsp:include page="<%=variable%>" flush="true"/> 가 가능하다 ② flush -. true : 문서의 출력 결과를 항상 버퍼내에서 갱신 하라는 의미이다 3. 예제 a.jsp ... <jsp:include page="b.jsp" flush="true"/> ... a.jsp 결과에 b.jsp 가 실행된 결과가 include 된다 즉 따로따로 실행 된 후 그 결과(html)만을 가지고 include 한다 II. <%@ include %> 1. 설명 -. 서버측 include 라고 생각하면 된다 즉 소스 실행전에 include가 된다고 보자 -. 소스 실행전 포함됨으로 변수를 같이 사용할 수 있다 -. 동적으로 페이지 할당을 할 수가 없다 2. 속성 ① file -. 포함될 페이지를 명시한다 3. 예제 a.jsp ... <%@ include file="b.jsp" %> ... b.jsp 코드자체가 a.jsp에 포함된 후 실행된다. jsp:include <jsp:include page="/xxx.jsp" /> 1. 요청시간에 처리 2. 별도의 파일로 요청 처리 흐름을 이동 3. 화면 레이아웃의 일부분을 모듈화 할 때 주로 사용된다. @include 디렉티브 1. JSP파일을 자바 소스로 변환할 때 처리 2. 현재 파일에 삽입시킴 연결된 파일을 포함해서 같이 컴파일 한다. include 지시어는 다른 JSP의 소스 코드를 해당 JSP에 그대로 포함시킨다 반면에 액션 태그의 <jsp:include> 태그는 다른 JSP의 소스 코드가 아니라, 다른 JSP의 실행 결과값을 해당 JSP 페이지에 포함시킨다. 또한, include는 주로 조각난 코드를 삽입을 하고자 할때 사용되고, <jsp:include> 액션 태그는 페이지를 모듈화할때 사용된다. 즉 템플릿 페이지를 작성할때 사용된다. <!-- ============================================================================= <%-- --%> <jsp:include page="top.jsp"> name - 이동할 페이지에 전달될 파라미터의 이름 ( 표현식 사용 불가 ) value - 이동할 페이지에 전달될 파라미터의 값( 표현식 사용 가능 ) 받는곳에서 request.getParameter("flag");로 받는다. ============================================================================= JSP내의 Java Code를 Designer나 HTML Coder가 보기쉽고(?), 수정하기 쉽게(?) Java Code를 HTML Tag과 같은 Tag 형태로 사용할 수 있도록 한 JSP Custom Tag. 그중에 가장 많이 쓰이는 Tag인 <jsp:include /> 하지만 이 <jsp:include /> Tag의 단점은 원격지의 JSP 페이지를 include 할 수 없는데 있다. 이처럼 <jsp:include /> Tag로 할 수 없는 것을 <c:import /> Tag는 가능하게 해준다. 그럼.. 어떻게 사용하는가? 우선... 아래의 URL에서 Taglib를 다운 받는다. http://people.apache.org/builds/jakarta-taglibs/nightly/projects/standard/ 에서 JSP 버전에 맞는 Taglib 를 다운 받는다. 우리가 필요한건... 다름아닌... lib 폴더 아래의 jstl.jar , standard.jar 이다. 이 두개의 jar 파일을 적용하고자 하는 JSP의 Container (WAS)의 /WEB-INF/lib/에 복사한다. 그리고는... JSP페이지에 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>을 추가하고, 예) 위와 같이 사용하면 원격지의 WEB 페이지를 include와 유사하게 사용할 수 있다. ---------------------------------------------------------------------------------------------------- WWW <---> [Firewall] <---> WEB <---> [Firewall] <---> WAS 와 같은 환경에서 WAS 서버에서는 외부망(인터넷망)으로 접속이 불가능하며, 오직 WAS와 WEB서버간의 특정 PORT를 열어서 둘간의 통신만 가능하는 경우가 있다. 그런데... 외부망 접속이 되지 않는 WAS에서 인터넷 상에 존재하는 데이터를 읽어와서 가공한 후 처음 시도는 RMI였다. RMI는 WAS와 WEB서버간 RMI Registry를 통해 원격 객체를 등록한 후 WAS에서 WEB의 JAVA Code를 로컬에 있는 객체처럼 사용할 수 있기 때문이었다. 하지만... RMI Code는 완성되었는데... WAS와 WEB서버간 열수있는 PORT가 최소 2개있어야 하는데... PORT를 추가로
OPEN할 수 없는 상황이었다. 즉, RMI로 프로그램을 작성했지만... 그러다가... 생각해낸 방법이 Http 통신이다. 앗! 그러나... <jsp:include /> 이 Tag는 원격지 파일 include가 안되는 거다. 또한번 좌절... 이 번 일을 통해서.. 중요한 2가지를 배울 수 있었다. 갈증을 해소하기 위해서 삽질 중이라면... 중간에 포기하지마라... [출처] http://blog.naver.com/rookieangel?Redirect=Log&logNo=140110137373 |