[ERROR]

"런타임 프로세스에 연결할 수 없습니다. 10000ms 후 시간 초과-(이유 : 대상에 연결할 수 없음 : ECONNREFUSED 127.0.0.1:61435연결)"

 

해결 방법

Visual Studio에서 도구-> 옵션-> 디버깅-> 일반으로 이동합니다.

  • Asp.Net (Chrome, Edge 및 IE)에 대한 JavaScript 디버깅 활성화
  • ASP.NET 용 레거시 Chrome JavaScript 디버거 사용

DEXT.FileUploaad를 사용하였습니다.

파일 업로드

write.asp

<form id="Form" action="write_db.asp" method="post" enctype="multipart/form-data">
  <fieldset>
    <legend>FORM</legend>
    <!-- chkword(this, 20) : javascript 글자 수 제한 함수 -->
    <!-- checkAll() : javascript 공백 여부 확인 함수 -->
    <div class="form-group">
      <label> 작성자</label>
      <input type="text" name="userWriter" id="userWriter" class="form-control" onkeyup="chkword(this, 20)" placeholder="Enter writer"/>
    </div>
    <div class="form-group">
	    <label> 제목</label>
    	<input type="text" name="userTitle" id="userTitle" class="form-control" onkeyup="chkword(this, 60)" placeholder="Enter title"/>
    </div>
    <div class="form-group">
    	<label> 내용</label>
    	<textarea name="userContent" id="userContent" class="form-control" onkeyup="chkword(this, 200)" rows="5" cols="70" wrap="hard"></textarea>
    </div>
    <div class="form-group">
        <label> 첨부파일</label><br/>
    	<input type="file" name="file"><br>
    </div>
    <div class="form-group">
    	<label>글 비밀번호</label>
    	<input type="password" name="userPassword" id="userPassword" class="form-control" onkeyup ="chkword(this, 15)"  placeholder="Password"/>
    </div>
    <div style="text-align:center">
    	<input type="button" class="btn btn-primary" value="글 작성" onclick="checkAll()">
    	<input type="button" style="text-align:left" class ="btn btn-secondary" value="목록" onclick="location.href='/Board_asp/list.asp'">
    </div>
  </fieldset>
</form>

form태그에 enctype="multipart/from-data"를 추가해주고, <input type="file">을 추가해준다.

 

write_db.asp

' 파일 업로드 
Set uploadform = Server.CreateObject("DEXT.FileUpload")
path = "/Board_asp/upload"			
up_path = server.MapPath(path)
uploadform.DefaultPath=up_path
fileLen = uploadform("file").FileLen

uploadform.AutoMakeFolder = True		'폴더생성 여부
uploadform.DefaultPath    = up_path		'폴더위치 설정
uploadform.MaxFileLen     = 5242880 	'파일크기 제한 : 5242880(5M)
uploadform.UploadTimeout  = 1800	

server.MapPath : 경로를 반환하는 기능으로 파일을 업/다운로드 할 때 주로 사용합니다.

uploadform.FileLen : 업로드된 파일의 길이를 나타냅니다.

uploadform.AutoMakeFolder : 폴더가 존재 하지 않을 경우 자동으로 생성합니다.

uploadform.DefaultPath : 파일이 저장될 폴더 경로를 설정합니다.

uploadform.MaxFileLen : 하나의 파일 크기를 5M으로 제한합니다.

uploadform.UploadTimeout : 업로드 Timeout을 설정합니다. 

 

Dim Writer, Password, Title, Contents, oldname     

Writer = uploadform("userWriter")
Password = uploadform("userPassword")
Title = uploadform("userTitle")
Content = uploadform("userContent")
oldname = uploadform("file").FileName   '업로드한 파일 이름

form태그의 enctype이 multipart/form-data인 경우,

ASP에서 request.form 객체로 form데이터를 얻을 수 없으므로Request.Form으로 받은 파라미터를 uploadform으로 바꿔줍니다.

 

' 파일 용량 체크
If fileLen > uploadform.MaxFileLen Then
  response.write "<script language=""javascript"">alert('5M 이상의 사이즈인 파일은 업로드하실 수 없습니다.');"
  Response.Write "history.back(-1);"
  Response.Write "</script>"
  set theForm=nothing
  Response.end

  set fileLen = nothing
  response.End
else
  filePath = uploadform.Save
  	...

uploadform.Save : 업로드된 파일을 서버에 디스크파일 형태로 저장합니다.

 

파일 다운로드

<%
    no_param = request.QueryString("no")

    Set oraConn = Server.CreateObject("ADODB.Connection")
    oraConn.Open("dsn={};uid={};pwd={};")
  
    Set oraRec = Server.CreateObject("ADODB.Recordset")

    sql = "SELECT FILENAME FROM BOARD WHERE USETF = 1 AND NO =" & no_param

    oraRec.Open sql, oraConn
    
    set rs = oraConn.Execute(sql)

    ' 첨부파일 다운로드
    Dim file
    file = rs(0)
    strPath = Server.MapPath("upload/" & file &"")
    Response.AddHeader "Content-Disposition","attachment; filename=" & file &""""
    Response.ContentType = "application/x-msdownload"

    Response.CacheControl = "private"

    Set objFS = Server.CreateObject("Scripting.FileSystemObject")
    Set objF = objFS.GetFile(strPath)

    Response.AddHeader "Content-Length", objF.Size

    set objF = nothing
    set objFS = nothing
    
    Set objStream = Server.CreateObject("ADODB.Stream")
    objStream.Open
    objStream.Type = 1
    objStream.LoadFromFile(strPath)

    download = objStream.Read
    Response.BinaryWrite download

    Set objstream = nothing
%>

 

※ 동일 이름의 파일 저장 시 (1), (2) 이런 식으로 저장하여 파일을 덮어쓰지 않는다.

filePath = uploadform.SaveAs(oldname, False)        // 파일 저장 (동일 이름 파일 저장 시 (1), (2) 이런 식으로 저장됨)
strLen = Len(filePath)                              // 파일 경로의 전체 길이
ipos = instrRev(filePath, "\")                      // 문자 '\' 마지막에 위치하는 자리 수 
uploadFile = MID(filePath, ipos+1, (strLen-ipos))   // ipos+1부터 (strLen-ipos)개의 문자를 반환 => 저장된 파일 명

 

1. DB에 실제 저장되는 파일의 이름을 담을 컬럼(UPLOADFILE)을 추가한다.

  • FILENAME : 업로드 할 첨부 파일의 이름
  • UPLOADFILE : 폴더에 저장되는 첨부 파일의 이름 

2. uploadform.SaveAs(oldname, False) 로 파일 저장된다. 

  • 동일 이름의 파일이 있을 시 (1), (2) 이런 식으로 저장된다.
  • filePath에는 첨부 파일의 주소가 저장된다.

3. Len(filePath) : 첨부 파일 경로의 전체 길이를 구한다.

4. instrRev(filePath, "\") : 다른 문자열 내에서 문자 '\'의 발생 위치를 문자열 끝에서부터 계산하여 반환한다.

5. MID(filePath, ipos + 1, (strLen - ipos)) : ipos + 1부터 (strLen - ipos)개의 문자를 반환한다. => UPLOADFILE 

 

ODBC (Open DataBase Connectivity)

ODBC는 데이터베이스를 엑세스하기 위한 표준 개방형 응용 프로그램 인터페이스를 말합니다.

마이크로소프트사에 의해 만들어진, 데이터베이스에 접근하기 위한 소프트웨어의 표준 규격으로,

프로그램 내에 ODBC 문장을 사용하면 여러 종류의 데이터베이스에 접근할 수 있습니다.

 

ASP 페이지에서 데이터베이스 연동

ASP에서는 데이터베이스와의 연동을 위해서 3가지 개체를 제공하고 있습니다.

  • Connection Object (ADODB.Connection)
  • Recordset Object (ADODB.Recordset)
  • Command Object (ADODB.Command)

 

1. Connection 개체

Connection 개체는 특정 데이터베이스와 연결을 할 수 있게 해주는 개체이며, 리턴 결과 레코드가 없는 간단한 쿼리를 수행할 수 있습니다.

Set oraConn = Server.CreateObject("ADODB.Connection")
oraConn.Open("dsn={dsn};uid={uid};pwd={pwd}")

Server.CreateObject가 하는 역할은 ASP에서 사용이 가능한 개체의 인스턴스를 만들어주는 역할을 하는 메소드입니다. Connection 개체의 가장 큰 역할은 데이터베이스와 연결(Open메소드) 하는 것입니다.

그 이외에도 반환 결과 레코드가 없는 쿼리(INSERT, UPDATE, DELETE)의 경우를 실행할 수 있는 기능(Execute 메소드)도 가지고 있습니다. 

 

2. Recordset 개체

Recordset 개체는 쿼리 결과로 추출된 데이터를 보관하는 역할을 해주는 개체이며, Connection 개체와 마찬가지로 Open메소드를 가지고있습니다.

첫 번째 인자는 쿼리문으로 넣고, 두 번째 인자는 데이터베이스 Connection 개체입니다.

Set oraRec = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM BOARD"
oraRec.Open sql, oraConn

 

ASP에서 데이터 보여주기 (SELECT)

<%
Set oraConn = Server.CreateObject("ADODB.Connection")
oraConn.Open("dsn={dsn}; uid={uid}; pwd={pwd}") 

Set Rs = Server.CreateObject("ADOBO.RecordSet")
SQL = "SELECT * FROM BOARD"
oraRec.Open sql, oraConn
%>

<HTML>
<HEAD><TITLE> ASP DB 연결하기 </TITLE></HEAD>
<BODY>
<% If oraRec.BOF Then %>
요구하신 데이터가 없습니다.
<% Else %>
  <% Do Until oraRec.EOF %>
	작성자는 <%=oraRec("writer")%>,
    제목은 <%=oraRec("title")%> 입니다.
  <% oraRec.MoveNext %>
  <% Loop %>
<% End If %>
</BODY>
</HTML>

13줄은 데이터가 하나도 없을 경우를 위한 처리입니다.

BOF는 Begin Of File로 레코드 셋의 시작, EOF는 End Of File로 레코드 셋의 끝을 의미한다. 레코드가 하나가 아닌 경우 가상 테이블의 형태로 레코드셋이 저장되고 그 시작과 끝을 구분해주는 것이 BOF와 EOF이다.

DB에 데이터가 있는 경우 oraRec.EOF와 oraRec.BOF는 false가 되고 데이터가 없는 경우 true가 된다.

 

ASP에서 데이터 입력하기 (INSERT, UPDATE, DELETE)

ASP에서 데이터를 출력할 때는 그 데이터를 담을 Recordset개체가 필요했지만

데이터 입력의 경우 Connection 개체와 함께 쿼리를 실행할 Execute 메소드를 통해 데이터를 입력합니다. (데이터를 담을 필요가 없기 때문에 Recordset개체는 필요 없습니다.)

<%
Writer = "작성자"
Title = "제목"

Set oraConn = Server.CreateObject("ADODB.Connection")
oraConn.Open("dsn={dsn};uid={uid};pwd={pwd}")

Set oraRec = Server.CreateObject("ADODB.Recordset")
sql = "INSERT INTO BOARD(WRITER, TITLE) VALUES " 
sql = sql & Writer &"' WRITER, '"
sql = sql & Title &"' TITLE)" 

oraRec.Execute sql
%>

 

[출처] m.blog.naver.com/PostView.nhn?blogId=passith&logNo=70150438074&proxyReferer=https:%2F%2Fwww.google.com%2F

1. 해당 글의 조회수를 보여줍니다.

2. 작성자 / 제목 별 검색 기능이 있습니다.

3. 한 페이지에 10개의 게시글5페이지씩 보여주고 +5, -5페이지를 나타내는 << , >> 버튼이 있습니다.

4. 계층형 게시판(답글)을 볼 수 있습니다.

 

list.asp

게시판의 글 목록을 볼 수 있는 화면입니다.

 

1. 해당 글의 조회수 보여줍니다.

 

2. 작성자 / 제목별 검색 기능이 있습니다.

 

3. 한 페이지에 10개의 게시글 5페이지씩 보여주고 +5, -5페이지를 나타내는 << , >> 버튼이 있습니다.

 

4. 계층형 게시판(답글)을 볼 수 있습니다.

 

 

write.asp

글을 작성하는 페이지입니다.

 

1. 작성자, 제목, 내용, 글 비밀번호를 입력할 수 있습니다.

  • null 값 체크하여 alert창 발생 (JavaScript.js)
  • 글자 수 제한하여 alert창 발생 (JavaScript.js)
    • writer : 20byte
    • title : 60byte
    • content : 200byte
    • password : 15byte

 

2. write_db.asp로 이동하는 [글 작성] 버튼과 list.asp로 이동하는 [목록] 버튼이 있습니다.

 

 

write_db.asp

DATABASE와 연결하여 글을 작성(INSERT)하는 기능을 하는 파일입니다.


1. 입력한 값들을 BOARD 테이블에 추가해주는 기능을 합니다.

 

2. 예외가 발생하면 '오류가 발생하였습니다.' 라는 alert 창이 나타납니다.

 

3. 글이 정상적으로 등록되면 '등록 되었습니다.' 라는 alert 창이 나타납니다.  

 

 

detail.asp

글의 상세내용을 보여주는 페이지입니다.


1. 제목, 작성자, 작성일, 내용, 조회수를 보여줍니다.


2. 글 내용에 줄 바꿈 기능이 있습니다.


3. list.asp로 이동하는 [목록] 버튼, edit.asp로 이동하는 [수정] 버튼, delete.asp로 이동하는 [삭제] 버튼, reply.asp로 이동하는 [답변]버튼이 있습니다.

 

 

4. 댓글을 입력할 수 있는 댓글 작성 폼이 있습니다. (Ajax)

  • 작성자와 내용을 입력할 수 있습니다.

 

5. 댓글 리스트를 볼 수 있습니다.

  • 게시글의 총 댓글 수를 볼 수 있습니다.
  • 댓글 작성자, 내용, 작성일을 볼 수 있습니다.

 

 

edit.asp

글을 수정하는 페이지입니다.

 

1. 비밀번호 값을 비교하여 일치하면 글을 수정합니다.

 

2. 비밀번호 값이 일치하지 않으면 '비밀번호가 일치하지 않습니다.' 라는 alert창이 나타납니다.

 

 

delete.asp

글을 삭제하는 페이지입니다.

 

1. 비밀번호 값을 비교하여 일치하면 글을 삭제합니다.


2. 비밀번호 값이 일치하지 않으면 '비밀번호가 일치하지 않습니다.' 라는 alert창이 나타납니다.

 

 

reply.asp

글의 답글을 작성하는 페이지입니다.

 

1. 작성자, 제목, 내용, 글 비밀번호를 입력할 수 있습니다.

  • null 값 체크하여 alert창 발생 (JavaScript.js)
  • 글자 수 제한하여 alert창 발생 (JavaScript.js)
    • writer : 20byte
    • title : 60byte
    • content : 200byte
    • password : 15byte

 

2. reply_db.asp로 이동하는 [답변 작성] 버튼과 detail.asp?no={no}로 이동하는 [이전으로] 버튼이 있습니다.

 

reply_db.asp

DATABASE와 연결하여 답글을 작성(INSERT)하는 기능을 하는 파일입니다.


1. 입력한 값들을 BOARD 테이블에 추가해주는 기능을 합니다.

 

2. 예외가 발생하면 '오류가 발생하였습니다.' 라는 alert 창이 나타납니다.

3. 글이 정상적으로 등록되면 '등록 되었습니다.' 라는 alert 창이 나타납니다.  

 

 

 

공통 부분 (예외 처리)

 

1. null 값 체크하여 alert창이 나타납니다. (JavaScript.js)

 

2. 글자 수 제한하여 alert창이 나타납니다. (JavaScript.js)

  • writer : 20byte
  • title : 60byte
  • content : 200byte
  • password : 15byte
  • re_writer : 20byte
  • re_comment : 200byte

 

3. 잘못된 경로로 접근을 시도하면 alert창이 나타납니다.

 

4. 오류가 발생해도 계속해서 코드를 실행한 후 alert창을 보여줍니다. 

 

프로젝트 기획

 

1차 CRUD 구현, 페이징, 검색 기능, 조회수, 댓글 기능, 답글 기능
2차 파일 첨부 기능
3차 에디터 기능

 

DB 테이블 구성

 

BOARD : 게시판 테이블

BOARD
열 이름 형식 설명
NO NUMBER 글 번호 (기본키)
WRITER VARCHAR2(50) 작성자
PASSWORD VARCHAR2(15) 글 비밀번호(삭제, 수정 시 필요)
TITLE VARCHAR2(100) 제목
CONTENT VARCHAR2(4000) 내용
READCOUNT NUMBER 조회수
REGDATE DATE 작성일
REFER NUMBER [답글] 참조
STEP NUMBER [답글] 간격
DEPTH NUMBER [답글] 깊이
FILENAME VARCHAR2(100) [2차] 파일 이름

 

BOARD_RE : 댓글 테이블

BOARD_RE
열 이름 형식 설명
RE_NO NUMBER 댓글 번호 (기본키)
BRD_NO NUMBER 원글 번호
RE_WRITER VARCHAR2(20) 댓글 작성자
RE_CONTENT VARCHAR2(200) 댓글 내용
RE_REGDATE DATE 댓글 작성일

 

 

디렉토리 목록 얻어오기 예제

 

[결과 화면]
[실제 파일 목록]

 

코드

<%
	Set fs = Server.CreateObject("Scripting.FileSystemObject")
	Set folderObj = fs.GetFolder(Server.MapPath("."))
	Set files = folderObj.Files
%>

<html>
	<head>
		<title> 파일 리스트 얻기 예제 </title>
	</head>

	<body>
		<h3><%=Server.MapPath(".")%> 디렉토리 목록 </h3>
		<table border="1" width="900" style="font-size:7pt;" cellpadding="2">
			<tr>
				<th>이름</th>
				<th>크기</th>
				<th>형식</th>
				<th>생성 시각</th>
				<th>마지막 엑세스 시간</th>
				<th>마지막 수정 시간</th>
			</tr>
		<%For Each file in files%>
			<tr>
				<td><a href=" <%=file.name%>"><%=file.name%></a></td>
				<td><%=file.size%> byte</td>
				<td><%=file.type%></td>
				<td><%=file.DateCreated%></td>
				<td><%=file.DateLastAccessed%></td>
				<td><%=file.DateLastModified%></td>
			</tr>
		<%Next%>
		</table>
	</body>
</html>

 


DB값 테이블로 출력하기

 

[출력 화면] [DB 쿼리문 출력 결과]

 

코드

-- DB연결 해주기

<html>
    <head>
    <title>예제 - DB값 테이블 형태로 출력하기</title>
    </head>
    <body>
      <table border="1" width="400" style="font-size:7pt;" cellpadding="2">
      <tr>
          <th>SEQ</th>
          <th>NAME</th>
          <th>CONTENTS</th>
          <th>REGDATE</th>
      </tr>
      <%Do While Not OraRec.EOF%>
      <tr>
          <td><%=OraRec.Fields("seq")%></td>
          <td><%=OraRec.Fields("name")%></td>
          <td><%=OraRec.Fields("contents")%></td>
          <td><%=OraRec.Fields("regdate")%></td>
      </tr>

      <%OraRec.MoveNext%>
      <%Loop%>
      </table>
    </body>
</html>

 

DB연결해서 테이블의 데이터 값과 개수를 출력하는 예제문이다.

 

 

[결과 화면] [DB 쿼리문 출력 결과]

 

코드

<%
-- DB 연결
Set oraConn = Server.CreateObject("ADODB.Connection")
oraConn.Open("dsn=[dsn];uid=[id];pwd=[password]")

Set oraRec = Server.CreateObject("ADODB.Recordset")
			
    sql = "select * from emp" 
	oraRec.Open sql, oraConn
%>

<html>
    <head>
    <title>예제 - 여러 개 데이터 출력하기</title>
    </head>
    <body>
    <%If OraRec.EOF Then %>
        <p>데이터가 없습니다.</p>
        <p>감사합니다.</p>
    <%Else %>
        <h2>쿼리 결과로 가져온 데이터입니다.</h2><hr />
        <%Dim count %>
        <%Do While Not OraRec.EOF %>
        <p>
        번호는 <b><%=OraRec.Fields("EMPNO")%> </b>,
        이름은 <b><%=OraRec.Fields("ENAME")%> </b>,
        직업는 <b><%=OraRec.Fields("JOB")%> </b>,
        부서이름은 <b><%=OraRec.Fields("DEPTNO")%> </b> 입니다.
        </p>

        <%OraRec.MoveNext%>
        <%count = count+1 %>
        <%Loop %>
    <b><%=count%></b>개 찾았습니다.
    <%End If %>
    </body>					
</html>

 

코드 리뷰

<%If OraRec.EOF Then %>
  <p>데이터가 없습니다.</p>
  <p>감사합니다.</p>
<%Else %>
  <h2>쿼리 결과로 가져온 데이터입니다.</h2>
<%End If %>
  • 데이터가 없는 경우 OraRec.EOF : true > "데이터가 없습니다." 출력 
  • 데이터가 있는 경우 OraRec.EOF : false > "쿼리 결과로 가져온 데이터입니다." 출력

 

 <%Dim count %>
 <%Do While Not OraRec.EOF %>
 <p>
 번호는 <b><%=OraRec.Fields("EMPNO")%> </b>,
 이름은 <b><%=OraRec.Fields("ENAME")%> </b>,
 직업는 <b><%=OraRec.Fields("JOB")%> </b>,
 부서이름은 <b><%=OraRec.Fields("DEPTNO")%> </b> 입니다.
 </p>
<%OraRec.MoveNext%>
<%count = count+1 %>
<%Loop %>
<b><%=count%></b>개 찾았습니다.
  • Dim count 변수 선언
  • While Not OraRec.EOF(데이터가 있으니까 false)  > 앞에 Not을 붙여줘서 true 됨 > 데이터가 있는 동안 실행
  • OraRec.Fields("필드명")으로 필드 출력
  • OraRec.MoveNext로 다음 레코드로 넘어감
  • count에 1씩 더해주면서 개수 저장

 

[출처] sugame.tistory.com/221

 

문자열 관련 함수
UCASE, LCASE 문자열의 내용을 대문자, 소문자로 변환
LEN 문자열의 길이를 반환
LEFT, RIGHT, MID 문자열의 좌, 우, 중간에서 지정한 만큼의 문자열을 뽑아냄
INSTR, INSTRREV 해당되는 문자열의 좌측, 우측 위치를 반환
LTRIM, RTRIM, TRIM 문자열의 좌측, 우측, 전체의 공백을 제거
REPLACE 문자열의 내용 중 일부를 다른 문자열로 변경
SPLIT 문자열에서 특정 문자열을 기준으로 나누어 배열로 저장
STRREVERSE 문자열의 순서가 거꾸로 된 문자열을 반환


1. UCASE, LCASE 사용

<h1>1. Uppercase or lowercase a string </h1>
<%
name = "Bill Gates"
response.write(ucase(name))
response.write("<br>")
response.write(lcase(name))
%>

 

2. TRIM, LTRIM, RTRIM 사용

<h1>2. Trim a string</h1>
<%
name = " W3Schools "
response.write("visit" & name & "now<br>")
response.write("visit" & trim(name) & "now<br>")
response.write("visit" & ltrim(name) & "now<br>")
response.write("visit" & rtrim(name) & "now")
%>

 

3. STRREVERSE 사용

<h1>3. How to reverse a string?</h1>
<%
sometext = "Hello Everyone!"
response.write(strReverse(sometext))
%>

 

4. ROUND 사용

<h1>4. How to round a number?</h1>
<%
i = 48.66776677
j = 48.33333
response.write(Round(i))
response.write("<br>")
response.write(Round(j))
%>

 

5. Randomize / Rnd : 랜덤 / 난수 생성

* Randomize란?

ASP에서 랜덤한 숫자를발생시키는 것은 Rnd 함수인데, Rnd 함수를 사용하기 전에 Randomize를 사용하여야 난수 발생기가 초기화되어 Rnd함수를 사용하였을 때 새로운 난수가 발생한다.

* Rnd란?

0부터 1사이의 랜덤한 숫자를 발생시키는 함수

<h1>5. A random number</h1>
<%
randomize()
response.write(rnd())
%>
<br>
<%
Randomize()
randomNumber=Int(100*Rnd())
response.write("A random number : <b>" & randomNumber & "</b>")
%>

 

6. LEFT, RIGHT, MID, REPLACE 사용

<h2>6. Return a specified number of characters from left/right of a string</h2>
<%
sometext="Welcome to this Web"
response.write(Left(sometext, 5))
response.write("<br>")
response.write(Right(sometext, 5))
response.write("<br>")
response.write(Mid(sometext, 9, 2))
response.write("<br>")
response.write(Replace(sometext, "Web", "Page"))
%> 

 

7. Sub Procedure 사용

<h1>7. Sub Procedure</h1>
<%
Sub mysub()
	response.write("I was written by a sub procedure")
End Sub

response.write("I was written by the script<br>")
Call mysub()
%>

 

8. Function Procedure 사용

<h1>8. Function Procedure</h1>
<%
Function myfunction()
myfunction=Date()
End Function

response.write("Today's date : ")
response.write(myfunction())
%>

 

 

[출처] www.w3schools.com/asp/asp_examples.asp

+ Recent posts