Classic ASP

템플릿 파일을 이용하여 동적 ASP 페이지 만들기

NJHouse 2015. 5. 24. 14:31
반응형

이 글을 읽기 전에 다음 글을 먼저 읽는 것이 이 글을 읽는데 도움이 될 것이다:

이 글은 템플릿 파일에 근거한 하나의 ASP 페이지를 이용하여 수 많은 ASP 페이지를 관리하는 것과 관련이 있다. 템플릿 파일을 이용하면 코드 관리가 한층 쉬워진다. 이 강좌에서는 종업원과 관련된 데이터베이스를 이용하여 작업을 할 것이다. 이 데이터베이스에는 종업원 ID, 이름, 사진, 임무, 사진 찍은 날짜 등의 정보를 담고 있다. 이 데이터베이스가 액세스로 만들어 졌다고 가정해 보자. 이 데이터베이스의 구조는 다음과 같을 것이다:

파일 이름 - myDatabase.mdb
테이블 이름 - Employees
ID 자동으로 증가하는 정수
FullName Text - 최대 100글자
PicURL Text - 최대 255글자
Duties Memo Field
PicCaption Text - 50글자

위의 데이터베이스 구조는 참으로 간단하다. 원한다면 확장하여 사용할 수 있을 것이다. 물론 여기서는 데이터베이스에 대한 어느 정도의 기초가 있다고 가정할 것이다. 만일 데이터베이스에 대한 기초가 없다면 다음 글을 참조하기 바란다.

이제 우리가 작업할 템플릿 파일을 만들어 보도록 하자. 이 파일은 모든 사용자를 위한 뼈대를 제공하는 파일이 될 것이다. 이 템플릿 파일은 ASP 파일에서 사용할 것이므로 <html>, <head> 등의 태그는 사용하지 않았다.

<img src="%img%" align="left"><p>이름: <b> %name% </b>
<br>임무: <br>%duties%
<br>사징 촬영 일자: %date%
<br><br>
사번 ID: %empID%

위에 나와있는 템플릿 파일은 아주 간단한 예이다. 얼마든지 이 템플릿 파일에 HTML 태그를 사용할 수 있으므로 꾸미는 것은 사용하는 사람의 몫이다.

이제 이 템플릿 파일을 사용할 ASP 페이지를 만들어 보도록 하자. 이 ASP 페이지에서 템플릿 파일을 읽어들인 다음 원하는 페이지를 만들어 내보낼 것이다. 자, 다음과 같은 코드를 한 번 보자:


<% ' 사용자가 데이터베이스로부터 Employee ID를 선택하지 않았다면
' 그것을 선택할 수 있는 페이지를 보여줌
If Request.QueryString("EmpID") = "" Then Response.Redirect "Employee.htm" End If
 ' 사용자가 Employee ID를 제대로 선택했다면 DB에 접속한 다음 해당 ID의
' 종업원에 대한 정보를 데이터베이스로부터 가지고 옴
set cnADO = Server.CreateObject("ADODB.Connection") dsnDSN = "DSN=myDB" cnADO.Open dsnDSN set mySQL = "SELECT * FROM EMPLOYEES WHERE ID=" set mySQL = mySQL & Request.QueryString("EmpID") set rsTemp = cnADO.Execute(mySQL)
	'employee ID를 발견할 수 없으면 사용자에게
	' 찾을 수 없다는 적절한 메시지를 출력할 페이지를 보여줌
	If rsTemp.EOF then
	    Response.Redirect "notfound.htm"
	Else
%>

' 아래 있는 내용은 템플릿 파일을 읽어들인 다음
' %img%, %name%과 같은 문자열을 데이터베이스의 실제 필드 값으로
' 바꿔준다. 또한 duties 필드 안에 들어 있는 캐리지 리턴과
' 라인 피드 값을 <br>로 대치한다.
<html> <head> <title><%=rsTemp("FullName")%></title> </head> <body> <% set fso = Server.CreateObject("Scripting.FileSystemObject") set ourtext = fso.GetFile("template.tmp") '읽기 모드로 파일 오픈 set ts = ourtext.OpenAsTextStream(1,-2) Do while not ts.AtEndOfStream myText = ts.readline myText = replace(myText, "%img%", rsTemp("picURL")) myText = replace(myText, "%name%", rsTemp("FullName")) duties = replace(rsTemp("duties"), vbCrLf, "<br>") myText = replace(myText, "%duties%", duties) myText = replace(myText, "%empID%", rsTemp("ID") myText = replace(myText, "%date%", rsTemp("PicCaption") Response.Write myText Loop '리소스 반환... set ts = nothing set ourtext = nothing set fso = nothing rstemp.close set rstemp = nothing cnADO.Close set cnADO = nothing %> </body> </html>

위에 제공한 템플릿 파일 예제는 아주 간단한 것이다. 이것을 바탕으로 템플릿 파일을 적용할 수 있는 케이스를 유심히 찾아보기 바란다. 여기서는 템플릿 파일을 만들고 이 템플릿 파일을 사용할 ASP 페이지에서 그 템플릿 파일을 읽어들인 다음 원하는 문자열 코드를 실제 데이터베이스에 있는 값으로 대치를 한 후 화면에 뿌려줬다. 화면에 뿌려주는 대신 FileSystemObject를 이용하여 html 파일을 생성해낼 수도 있다.

간단하지만 응용하기에 따라 여러 가지로 유용할 수 있는 템플릿 파일에 대해 살펴 보았다. 템플릿 파일은 물건을 만드는 공장에서의 제조 틀과도 같은 것이다. 하나만 잘 만들어 논다면 그 틀을 기반으로 여러 제품을 만들어 낼 수 있는 것과도 마찬가지인 것이다.



반응형