login register Sysop! about ME  
qrcode
    최초 작성일 :    2001년 09월 08일
  최종 수정일 :    2001년 09월 16일
  작성자 :    Dukyoung (김덕영)
  편집자 :    Taeyo (김 태영)
  읽음수 :    545,735

강좌 목록으로 돌아가기

필자의 잡담~

정말로 오랫만에 올라왔군요... 흠흠... 나보다도 바쁜 태지

 안녕하세요. 태지입니다..
 요즘.. 하늘 한번 올려다 보신적 있으세요?
 천고마비의 계절답게.. 하늘이 너무나 푸르고 아름답습니다. 정말로요.. (저는 서울에 삽니다)
 여러분들께서도 공부하시다가 답답하거나 잘 안되실 때, 하늘을 한번 올려다 보세요.
 너무도 청명하고 아름다운 그 모습에서 많은 위로와 격려를 받으실 수 있을 것이라는 생각을 합니다.

 첫강좌를 올리고 2주간에 걸쳐 정말 많은 분들의 메일을 받았습니다..
 격려성 메일에서 협박성(?) 메일까지.. 참 다양한 내용이었습니다만 일치되는 부분이 하나 있더군요.
 그것은 바로.. "7월 23일에 쓰고선 왜 두달 가까이 다음 강좌를 안올리는건데?" 였습니다.... -_-a
 사실 이 점에 있어서... 많이 반성하고 있고, 또 죄송스럽게 생각하고 있습니다.
 '제가 몸담고 있는 회사에서의 프로젝트가 너무 일정이 빠듯해서..' 라고 하면서 최대한 불쌍한 표정을
 지으면 어느 정도 이해해 주시려나.. 하튼 주된 변명 거리를 이걸로 삼으려 합니다. ^^
 다음 강좌부터는 간격을 좁히도록 노력하겠습니다. 꾸우벅~~

 그럼 오늘은 지난 시간에 이어.. 두번째 시간으로 '게시판 만들기 - 글 올리기' 강좌를 진행해볼까 합니다.

 지난 시간에 우리가 무엇을 했는지 다들 기억하시지요?
 혹 기억 못하시는 분들을 위해 잠시 복습의 시간을 가지도록 하겠습니다.

 지난 시간에 우리는 ASP가 작동하기 위한 환경을 설정해 보았습니다.
 OS는 Windows 2000 Server를, DataBase는 MS-SQL 7.0을 선택했습니다. 
 또한 혹 웹서버(IIS)가 설치되지 않은 분들을 위해서 웹서버(IIS) 설치에 대해서도 잠시 생각해 보았고요.
 그리고 test라는 이름의 데이터베이스와 board라는 이름의 테이블을 만들었고,
 마지막으로 ODBC 등록에 대해 알아보았습니다.
 '쟤, 뭐래니?' 싶으신 분께서는 back 버튼을 살짝 누르신후 지난 강좌를 참고해 주시길 권하는 바입니다..
 환경 설정이 바로 되어 있지 않다면 아무리 완벽한 코드라 하더라도 제대로 작동을 하지 않기 때문입니다.
 실제로 taeyo site에 올라오는 수많은 질문 중에 적지 않은 수가 환경 설정 문제였습니다. 정말이에요..

 
자, 그럼 이제 오늘의 과제에 도전해 보도록 하지요.
 오늘은 실제적으로 두개의 페이지를 만들어 볼 예정입니다.
 첫번째 페이지의 이름은 regist.asp입니다. 말 그대로 글을 등록하는 페이지가 되겠습니다.
 이 페이지에서는 단지 글을 입력하는 폼을 보여주게 됩니다.
 두번째 페이지의 이름은 regist_ok.asp입니다. 이 페이지는 regist.asp에서 입력한 정보를 DB에 저장하는
페이지
가 되겠습니다. (지난 시간에 만든 test라는 Database안의 board라는 테이블에 저장합니다)

 지난 시간에 ASP라는 친구는 웹서버에서 작동하는 특별한 파일이라는 말씀을 잠시 드렸습니다.
 그렇다면 예리하신 분들께서는 이미 "오늘 만들 asp 파일도 웹서버 상에 위치해야 하겠군" 이라는 생각을
 하실 수 있을 것입니다. 정말 예리하십니다. 바로 맞추셨어요.
 
 웹서버의 위치는 "C:\Inetpub\wwwroot\"가 되겠습니다. 반드시 기억하십시오..
 이 밑에 있는 파일은 여러분들께서 웹브라우저(익스플로러가 기본이지요) 상에서 보실 수가 있습니다.
 정말 그런지 아닌지 궁금하다고요? 한번 실제로 해보고 싶으시다는 말씀이시구운~요? (수다맨?)
 좋습니다. 프로그래머들에게는 백개의 딱딱한 이론보다 한번의 예제가 더 나은 법이지요.
 탐색기를 여신 후 'C:\Inetpub\wwwroot\' 로 이동하셔서 test.asp 문서를 하나 만들어 주십시오.
 메모장을 여신 후 아래 박스와 같이 입력하시고 'test.asp'로 저장해 주시면 됩니다.
 (꼭 메모장이 아니더라도 편집기라면 아무거나 좋습니다. test.asp로 저장만 할 수 있으면 되겠습니다)
 저장하셨으면 이 파일의 경로가 'C:\Inetpub\wwwroot\test.asp ' 이 정확한지 확인해 주십시오.

<test.asp>

<html>
<head>
</head>
<body>
코딩은 언제나 목마르다. 두 라인 부족할때..
</body>
</html>


 정확하게 저장이 되었나요? 그렇다면 이제 웹브라우저(익스플로러)를 실행시켜 보겠습니다.
 실행이 되었다면 주소창에 'http://localhost/test.asp' 라고 입력한 후 이동해 보세요.
 자. 어떻습니까. 방금 전에 우리가 만든 파일이 '짜안~' 하고 나타나는 장면을 보실 수가 있을것입니다.
 볼품이 없다고요? 저 간단한 소스로 무엇을 바라셨다는 말씀이십니까.. -_-a


 혹시 '페이지를 찾을 수 없다' 또는 '페이지를 표시할 수 없다 ' 는 오류 메시지가 나오는 분들이 계신가요?
 그런 분들께서는 ' 여기'를 클릭해 주시기 바랍니다.


 하지만 여기서 중요한 것은 test.asp의 내용이 아닙니다.
 '웹서버를 통해 asp 파일을 동작시켰다는 점'이 중요하다는 말씀입니다.
 그렇다면 과연.. asp 파일을 일반 파일 다루듯이 더블 클릭으로 실행할 수는 없는 것일까요?
 좋습니다. 백설(百說)이 불여일행(不如一行).. 이번에도 직접 테스트 해보도록 하시지요.
 탐색기를 여시고 'C:\Inetpub\wwwroot\' 으로 이동해 주십시오.
 그 곳에서 'test.asp' 파일을 찾아낸 후 힘차게(!) 더블 클릭 을 해 주십시오.
 어떤 결과가 발생하는지요?
 아마도 여러분 컴퓨터에 설정되어 있는 편집기 프로그램이 실행될 것입니다.
 아마도.. 라는 애매한 표현을 쓴 이유는 여러분들의 프로그램 설치 환경에 따라 결과가 다르기 때문입니다.
 연결된 프로그램이 없는 경우 '연결할 프로그램 설정' 화면이 뜰테고요. 어떤 프로그램을 설치했느냐에
 따라 각각 다른 프로그램이 실행될 것이기 때문입니다. (제 경우에는 '포토샵'이 떠 버리더군요. -_-a)

 확실한 것은 아까 웹서버를 통해 실행시켰던 깔끔한 결과는 결코 나오지 않는다는 것입니다.
 그렇다면 어떤 분들께서는 이런 생각을 하실지도 모르겠습니다.
 '어차피 asp 파일도 웹브라우저 상에서 보여지는거잖아.. 그럼 브라우저(익스플로러)에서 실행하면 될 것
같은걸?
' 이라는 깜찍한 생각 말입니다.. 호오. 정말 그럴듯 하지요??
 그렇다면 이 경우도 한번 테스트 해보도록 하지요.

 아까 열었던 탐색기를 그대로 두시고 따로 익스플로러를 실행합니다.
 그리고는 방금 실행한 익스플로러에 탐색기에 있는 test.asp 파일을 드래그 앤 드롭(끌어당겨놓기) 합니다.
 다음 그림과 같이 말이지요.

<그림 1>


 그러면 백발백중 다음과 같은 화면이 뜰 것입니다.

 <그림 2>


 여기서 '현재 위치에서 이 파일 열기'를 선택하시면 여러분들의 편집기 프로그램이 실행되고요.
 '이 파일을 디스크에 저장'을 선택하시면 말 그대로 여러분의 하드 디스크에 저장을 하셔야 합니다.
 즉, 이 방법으로도 asp 파일을 제대로 동작시킬 수 없다 는 결론이지요.

 여기서 정리하고 넘어가겠습니다.
 'ASP 라는 파일은 웹서버를 통해서만이 동작된다' 는 사실을 반드시 숙지하시기 바랍니다.
 또한 기본 웹서버의 위치는 'C:\Inetpub\wwwroot\' 라는 사실도 기억하셔야 하고요.

 그렇다면 탐색기에서 'C:\Inetpub\wwwroot\' 밑에다 'test' 라는 새 폴더를 만들고 그 안에  'test2.asp' 를
 만들면 어떻게 될까요? 이러한 경우 웹브라우저에 'http://localhost/test/test2.asp' 라고 입력하신후
 실행시키면 test2.asp가 제대로 동작하는 것을 보실 수 있습니다. 어떻습니까? 이제 조금 감이 잡히십니까?

 '그렇다면 웹서버는 어디서 관리하는 것일까?' 라는 의문을 가지신 분 혹시 계십니까?
 (없으시다고요. 음... 그렇다면 제가 의문을 가졌다고 치겠습니다.)
 아~ 정말 예리한 분이시군요. 상당한 센스의 소유자임에 틀림없으십니다.. (-_-a)

 웹서버의 관리는 우리가 지난 시간에 열심히 설치해 본 '인터넷 서비스 관리자(IIS)'에서 관리합니다.
 다같이 IIS를 실행해 보도록 하지요. ('시작 -> 프로그램 -> 관리도구 -> 인터넷 서비스 관리자 ' 입니다)
 그렇다면 다음과 같은 화면이 뜰 것입니다. (저는 전람회를 좋아해서 컴퓨터 이름이 '전람회'입니다..)

 <그림 3>
 

 자 이제 컴퓨터 이름을 클릭하고 다음과 같이 '기본 웹 사이트 '를 펼쳐 보도록 하겠습니다.

<그림 4>


 어떻습니까? '기본 웹 사이트' 안에서 test.asp 를 찾아볼 수가 있지요?
 또한 방금전 만들었던 test 폴더도 볼 수가 있을 것입니다.
 그렇습니다. 이곳이 바로 기본 웹서버인 'C:\Inetpub\wwwroot\' 의 위치입니다.
 그렇기 때문에 이 곳에서 우리는 test.asp를 찾을 수가 있었던 것이지요.

 '우띠.. 귀찮다. 꼭 탐색기를 열고 여기까지 들어와야 이걸 할 수 있다는 말인가.. 지겹다' 는 분들이
 계실 것이라 생각합니다. 그런 분들을 위해(?) '가상 디렉터리'에 대해 설명드리겠습니다.

 가상 디렉터리라.. 앞에 '가상 '이 붙는 것으로 미루어 보아 무언가 가짜의 분위기가 나지 않습니까?
 조금 전 우리는 탐색기로 일부러 'C:\Inetpub\wwwroot' 를 찾아 들어가서 그 안에 'test.asp' 와 'test' 라는
 폴더를 생성해 보았습니다. 그리고 실행해 보았었지요. 그곳이 웹서버이기 때문입니다.
 하지만 '가상 디렉터리'는 '다른 곳에서 폴더를 만들고서 마치 웹서버에 위치한 것처럼 동작' 시켜 줍니다.
 웬지 마음에 드는 이름이라고요? 좋습니다. 그럼 이제 '가상 디렉터리'를 하나 만들어 보도록 하지요.

 여러분들께서 좋아하시는 장소에 '새 폴더' 를 하나 만들어 주세요. 장소는 어느 곳이든 상관없지만 되도록
 나중에 여러분들께서 찾기 편한 곳으로 만드시는게 좋겠습니다. (참고로 저는 D 드라이브에 만들었습니다)
 폴더의 이름은 마음 내키시는대로 정하시면 됩니다. 저는 'Taiji'라는 이름으로 주었습니다.
 그리고.. 폴더 이름은 가급적 영어로 지어주시기를 부탁드립니다.

 <그림 5>
 

 '새 폴더'의 이름을 정해주세요.. 라고 했더니 '독수리', '제비' 이렇게 하시는 분들 꼭 계신데요.
 그러지 마시고 되도록 'eagle', 'swallow' 이렇게 하시라는 말씀입니다. (하..하..하.. -_-a)
 '쯧쯧.. 그걸 개그라고 하냐?' 하시는 분들. 그래도 이 개그.. 한때 잘 나갔던 개그랍니다. ^^

 지금까지는 그냥 폴더 하나 만드는 것과 아무 차이가 없지요? 하지만 진짜는 이제부터입니다.
 새로 만드신 폴더에서 '마우스 오른쪽 버튼'을 클릭하시고 '등록정보 '를 선택해 주십시오.
 
 <그림 6>


 그림에서 마우스의 위치를 유심히 보시면 '웹 공유' 탭 위에 있다는 것을 확인하실 수 있습니다.
 '웹 공유 '를 선택해 주십시오.

 중간에 '이 폴더를 공유함' 과 '이 폴더를 공유하지 않음' 이 나오게 되는데 이때 '공유함 '에 체크해 주세요.

 그러면 다음 그림과 같은 화면이 뜨게 됩니다. 내용을 확인하시고 '확인 ' 버튼을 눌러주세요.

 <그림 7>


 그러면 다음 그림처럼 별칭에 'Taiji'가 등록되어 있는 것을 보실 수 있는데요.

 <그림 8>
 

 이렇게 되면 가상 디렉터리의 생성은 모두 완료됩니다.
 '허어~. 상당히 까다로울 것 같았는데 의외로 쉽군. 진짜 된거야?' 싶으신 분들 계시죠? 안봐도 비디오입니다.

 좋습니다. 그렇다면 과연 웹서버 에 지금 만들어 놓은 'Taiji'라는 폴더가 있는지 확인해 볼까요?
 아까 실행했던 IIS를 다시 실행해 주십시오. ('시작' -> '프로그램' -> '관리도구' -> '인터넷 서비스 관리자' )
 그리고 '기본 웹 사이트 ' 안으로 들어가보면 다음 그림처럼 'Taiji' 목록이 추가된 것을 볼 수가 있습니다.

<그림 9>
 

 '어라? 그런데 일반적인 폴더가 아니라.. 무언가 이상한 모양으로 생겼는걸?' 이라는 의문을 제기하시는
 분들이 있을지도 모르겠습니다. 이것의 이름은 사실 '가상 디렉터리' 가 아닌 '가상 애플리케이션 ' 입니다.
 하지만 이번 강좌를 진행함에 있어서 이 둘의 차이는 고려하지 않아도 무방한 것이기에 일단
 '가상 디렉터리 ' 라는 이름으로 이름을 고정하고 사용하도록 하겠습니다.
 (사실 저는 이런식으로 얼렁뚱땅 넘어가는 것을 좋아하지 않습니다. 진짜로요.. 하지만 '가상 디렉터리' 와
  '가상 애플리케이션'의 차이는 초보자의 수준을 넘어선다는 판단하에 일단 넘기고 계속 진행하겠습니다) 

 자아~. 그렇다면 이 'Taiji ' 라는 가상 디렉터리로는 어떻게 접근해야 할까요..
 우선 Taiji 폴더(저는 D 드라이브에 있지요) 안에다 아까 만들었던 'test.asp' 파일을 이동시키겠습니다.
 그리고 웹브라우저에서 'http://localhost/taiji/test.asp' 를 입력하고 실행해 보십시오.
 아주 잘~ 실행되는 것을 보실 수 있을 것입니다. (제대로 따라오신 분이라면..)

 이제 가상 디렉터리의 사용법과 기능을 이해하시겠지요?
 기본 웹서버의 위치인 'C:\Inetpub\wwwroot\' 까지 굳이 이동하지 않더라도, 여러분께서 원하는 위치에서
 폴더 하나를 생성하는 것만으로 ASP 파일을 동작시키는 이 '가상 디렉터리'는
 상당히 매력적인 친구일 것입니다. 그렇지 않습니까?
 이 친구는 앞으로도 상당히 유용하게 사용되므로 사용법을 잘 기억해 두시기를 부탁드립니다.

 막상 가상 디렉터리 생성법을 살펴보고 나니까.. 아까 탐색기로 열심히 wwwroot를 찾아 들어갔던게
 후회되십니까? 넘 복잡하고 쓸모도 없을것 같아서..? 아까운 시간만 허비한것 같아서?
 하지만 그만큼 귀찮고 어려웠던 과정이 하나하나 쌓여 저와 여러분에게 든든한 기초가 될 것입니다.
 다같이 경건한 마음으로 조용히 "화이팅!!"을 한번 외치고.. 계속 진행하도록 하겠습니다. ^^
 

 자, 참으로 길었던 준비 과정을 모두 마치고 그럼 이제 정말로 코딩에 들어가겠습니다.
 방금 만들었던 가상 디렉터리인 Taiji 라는 폴더를 그대로 사용하도록 하겠습니다.
 우선.. 아까 테스트 해 보았던 test.asp 파일을 사정없이 지워 주십시오.
 그리고 Taiji 폴더 안에 다시 'regist' 라는 이름의 폴더를 하나 만들겠습니다. (글쓰기 페이지 전용 폴더)
 그리고 생성된 폴더 안에 'regist.asp' 라는 파일을 하나 만들어서 다음 소스를 입력해 주십시오.
 (편집기나 에디터에서 직접 치셔도 좋고, 복사해서 붙이는 것도 좋겠습니다. 하지만 정말 초보시라면
  직접 손으로 입력해 보시는 것이 얻는 바가 더 많을 것이라고 감히 말씀드리고 싶습니다.)

<regist.asp>

01   <html>
02   <head>
03   <title>태지의 게시판 - 글쓰기 폼</title>
04   </head>
05   <body>
06   <form name="registForm" method= "post" action="regist_ok.asp">
07   <table border cellspacing="0" width="500">
08      <tr>
09         <td colspan="2" align="center"><b>글을 적어주세요</b></td>
10      </tr>
11      <tr>
12         <td align="center">이름</td>
13         <td><input type="text" name="userName" size="15"></td>
14      </tr>
15      <tr>
16         <td align="center">비밀번호</td>
17         <td><input type="password" name="userPwd" size="15"></td>
18      </tr>
19      <tr>
20         <td align="center">Email</td>
21         <td><input type="text" name="userEmail" size="50"></td>
22      </tr>
23      <tr>
24         <td align="center">제목</td>
25         <td><input type="text" name="subject" size="50"></td>
26      </tr>
27      <tr>
28         <td align="center">내용</td>
29         <td><textarea name="content" cols="50" rows="10"></textarea></td>
30      </tr>
31      <tr>
32         <td align="center">HTML</td>
33         <td>
34            <input type="radio" name="tag" value="T" checked>적용
35            <input type="radio" name="tag" value= "F">비적용
36         </td>
37      </tr>
38      <tr>
39         <td colspan="2" align="center">
40            <input type="submit" value="작성 완료">&nbsp;&nbsp;&nbsp;
41            <input type="reset" value="다시 작성">
42         </td>
43      </tr>
44   </table>
45   </form>
46   </body>
47   </html>

 이 강좌는 여러분들께서 기본적인 html 문서 정도는 만들 수 있다는 전제 하에 진행됩니다.
 그러므로 위의 regist.asp의 내용이 도대체 무슨 내용이며 어떤 의미를 담고 있는지 전혀 모르시겠다면..
 애석하지만 이 강좌 안에서는 저로서도 더 이상 도와드릴 방법이 없습니다. 
 (우선 html을 먼저 공부하실 것을 권해드리고 싶습니다. 어느 정도만이라도 말입니다...)

 우선 regist.asp 는 글을 등록하는 폼이므로 html 태그가 주를 이룹니다.
 사실 이 폼은 'regist.asp' 가 아닌 'regist.htm ' 으로 작성한다 하더라도 그다지 문제되지 않을 페이지입니다.
 이 페이지는 전부 기본적인 html로만 이루어져 있기 때문입니다.
 (이 말은 문서 이름을 regist.htm이라 해도 무방하다는 뜻입니다)
 사실 IIS 4.0 (Windows NT) 까지는 이렇게 html로만 이루어진 페이지라면 성능과 효율 측면에서
 asp 보다는 htm 확장자를 사용할 것을 추천했습니다만, IIS 5.0 (Windows 2000)부터는 굳이 htm으로
 쓰지 않고 asp로 써도 성능 저하가 일어나지 않는다고 하네요. 그래서 asp 확장자를 붙여보았습니다.
 (이 말은 역으로 말하자면 지금 Windows NT로 이 강좌를 따라하시는 분이시라면 'regist.htm' 으로
 따라하시는 것이 속도와 성능면에서 유리하다는 말씀이 되겠습니다. 물론 미세하긴 하겠지만요...)

 위의 내용을 간단히 요약드리면..
     이름         - userName
     비밀번호   - userPwd
     E-mail      - userEmail
     제목         - subject
     내용         - content
     HTML        - tag
 라는 이름으로 값을 전달하게 됩니다.

 이렇게 'regist.asp' 문서를 저장을 하고, 웹 브라우저를 통해서 이 문서를 실행해 보도록 하겠습니다.
 웹 브라우저(익스플로러)를 여시고, 'http://localhost/taiji/regist/regist.asp' 를 실행해 주세요.

 다음과 같은 화면이 보이면 되겠습니다.

<그림 10>
 

 무언가 그럴듯한 화면을 기대하신 분들께서는 실망이 크실지도 모르겠군요.
 화면이 너무 허하고 썰렁해서.. 제가 보기에도 조금 민망하네요. ㅋㅋ
 하지만 우리가 공부해야 할 부분은 보여지는 겉의 모습이 아니라 내면의 모습이기에..
 이 썰렁한 화면을 받아들이고 넘어가도록 하겠습니다. 화장발에 속지 맙시다.. ^^
 ('그래도 이런 썰렁함은 용서할 수 없어!!' 라고 절규하시는 분들께서는 디자인을 바꾸셔도 좋겠습니다.)
 
 이제 각 칸을 적당하게 입력하시고 '작성 완료' 버튼을 살포시 눌러주시면..
 여기에 입력된 모든 내용은 'regist_ok.asp ' 로 전송되게 됩니다.
 "왜? 어떻게 전송이 되는데? 난 초보라구... 자세히 알려달란 말야!!!" 라고 외치시는 분들을 위해
 전체적인 흐름에 대해서 설명드리겠습니다.

 ' regist.asp' 의 6번째 줄을 보시면 다음 줄을 찾을 수가 있습니다.
 <form name="registForm" method="post" action= "regist_ok.asp">
 그리고 45번째 줄에는 '</form>' 이라는 문구로 이 폼을 닫습니다.

 이렇게 <form> 태그로 둘러주게 되면 6~45 줄까지는 하나의 폼으로 묶이게 됩니다.
 그 폼의 이름(name)은 'registForm' 이 되고, 이 안에서 사용자들이 입력한 정보들은
 'post' 방식(method)으로 'regist_ok.asp' 페이지에게 전송(action) 되어지는 것입니다.
 
 자, 조금은 이해가 되시는지요?
 사용자들이 입력하는 모든 정보(userName, userPwd 등등..) 들은  'registForm ' 이라는 폼 안에 들어있고요.
 우리가 모든 정보를 입력한 이후에 이 값들을 전송하기 위해 '작성완료' 버튼(submit)을 누르게 되면
 'registForm' 안에 있는 모든 정보들은 (즉 6줄부터 45줄까지의 모든 입력된 정보는)
 'regist_ok.asp ' 페이지로 전송되어집니다. 'post ' 방식으로 말이지요.

 '음. 대충 이해가 갈듯도 한데.. 그럼 도대체 post 방식이 머야...?'
 form을 전송하는 방식에는 두가지 방식이 있습니다. 하나는 'post' 방식이고 또 하나는 'get ' 방식입니다.

 이 두방식의 차이를 설명드리자면..
 'post' 방식은 HTTP 헤더에 정보를 입력하여 보내는 방식 이고,
 'get' 방식은 웹 브라우저에 적혀지는 주소(URL)의 뒤에 정보를 추가하여 넘기는 방식 입니다.

 무슨 말인지 잘 모르시겠다고요? 그럼 실제로 한번 테스트를 해 보도록 하시지요.
 지금 입력되어 있는 'regist.asp' 파일은 'post' 방식으로 전송하게 되어 있습니다.
 이 페이지에 정보를 대충 입력하신 후 '작성 완료' 버튼을 눌러주세요.
 그럼 다음과 같은 화면이 뜨게 됩니다.. 맞나요?

<그림 11>


 '뭐야? 페이지를 찾을 수 없다잖아? 내 이런 날이 올줄 알았지..' 하지 마시고 변명(?)의 기회를 주십시오.
 당연히 페이지를 찾을 수 없다는 메시지가 뜨게 됩니다. 
 왜냐하면 아직 'regist_ok.asp' 페이지를 만들지 않았기 때문이지요.
 (전송은 했지만 받아 주는 페이지가 없으니까요)
 지금 눈여겨 보아 주십사 하는 부분은.. 위에 나와 있는 '주소창' 입니다.
 주소창에는 'http://localhost/taiji/regist/regist_ok.asp' 라고 나타나 있을 것입니다.
 즉, 우리가 action 으로 지정했던 'regist_ok.asp' 로 자알 찾아왔다는 말입니다.
 하지만 그 어느 곳에도 우리들이 정보를 입력했던 userName이나 userPwd 같은 값들은 보이지 않습니다.

 이처럼 'post' 방식은 'HTTP 헤더' 라는 다소 비밀스런 공간에 정보를 입력하여 전송 하는 방식으로서,
 이전 페이지에서 넘겨받은 값들을 우리는 확인할 수가 없습니다.
 '그렇다면 'get' 방식은 우리 눈에 보여진다는 말인가??' 라는 의문이 드시겠지요?
 좋습니다. 'get' 방식도 한번 테스트해 보도록 하겠습니다.

 'get' 방식은 주소(URL)의 뒤에 정보를 추가하여 보내는 방식이라는 말씀을 잠시 드렸는데요.
 'regist.asp' 에서 6번째 줄을 <form name="registForm" method= "get" action= "regist_ok.asp"> 라고
 수정한 후 '작성 완료' 버튼을 누르게 되면 다음과 같은 화면이 뜨게 됩니다.

<그림 12>
 

 아까와 마찬가지로 주소창을 보아 주십시오..
 'http://localhost/taiji/regist/regist_ok.asp?userName=%B1%E8&userPwd=df&userEmail=....'

 'regist_ok.asp' 뒤에... 어라? 그 뒤에 무언가가 길게(상당히 길게) 붙어있는 것을 볼 수 있습니다.
 이렇듯 길게 늘어선 것이 바로 앞의 'regist.asp' 에서 사용자들이 입력한 정보인 것입니다.
 regist_ok.asp 바로 다음에는 의문부호인 '?' 로 구분 을 짓고, userName에는 '%B1%E8' 이라는 값을
 넘겨줍니다. 그런데.. userName의 뒤에 붙은 값들이 웬지 마음에 걸리지요?
 '엇? 나는 한글로 이름을 적었는데 이상한 값이 넘어왔다!!!' 라고 하면서 놀라실 필요 없습니다.
 한글로 넘긴 값은 자동적으로 Encoding 이 되어 값이 변환되므로 그런 현상이 나타나는 것입니다..
 그 값의  다음부터는 '&' 기호로 구분 을 지어 userPwd에 'df' 라는 값을, userEmail에 'maestrody@orgio.net'
 이라는 값을 넘겨주게 됩니다. (주소창의 뒤를 보면 나머지 값들도 계속 이어지는 것을 보실 수 있습니다.)
 
 이것이 바로 'get' 방식인 것입니다. 이제 URL의 뒤에 정보를 추가한다는 말이 무엇인지 이해하시겠지요.

 그렇다면 'post' 방식과 'get' 방식은 어떤 장단점 을 가지고 있을까요?
 첫째, 속도는 'get' 방식이 'post' 방식보다 상대적으로 빠릅니다 .
 물론 get, post 방식 모두 눈깜짝할 사이에 자료를 전송하므로 이것은 별 의미없는 이야기일지도 모릅니다.
 어쨌든 HTTP 헤더에 정보를 입력하는 일련의 작업 후 전송하는 post 방식보다는, 단지 URL의 뒤에 붙여
 전송하는 get 방식이 적은 차이지만 상대적으로 속도면에서 더 낫다는 말씀이 되겠습니다.

 둘째, 'post' 방식이 'get' 방식보다 더 많은 용량을 소화 할 수 있습니다.
 URL의 뒤에 추가하는 get 방식은 아무래도 용량의 제한을 받게 됩니다.
 그 용량은 시스템 환경에 따라 다르다고 하네요.
 어쨌든 post 방식은 상대적으로 더 많은 양의 정보를 전송할 수 있다고 합니다.
 
 셋째, 'post' 방식이 'get' 방식보다 보안적으로 조금 더 안전 합니다.
 아까 결과를 보셔서 아시겠지만, get 방식은 넘기는 정보들이 주소창에 다 보이지요?
 하지만 post 방식은 넘기는 정보들을 볼 수가 없었습니다. 이런 차이가 있지요.

 이 강좌에서는 'post' 방식을 사용했다는 사실을 기억해 주십시오.

 자, 그럼 이제 전송한 정보를 받는 'regist_ok.asp ' 페이지에 관해서 알아보도록 하겠습니다.
 다음 소스를 입력하신 후 'regist_ok.asp' 파일로 저장하셔서 regist 폴더 안에 저장해 주세요.

<regist_ok.asp>

01   <% Option Explicit 
02  
03   Dim objDBConn
04   Dim strSQL
05   Dim strName, strPassword, strEmail, strSubject, strContent, blnTag, strUserIP                  
06  
07   strName       = Request.Form("userName")
08   strPassword  = Request.Form("userPwd")
09   strEmail        = Request.Form("userEmail")
10   strSubject     = Request.Form("subject")
11   strContent    = Request.Form("content")
12   blnTag          = Request.Form("tag")
13   strUserIP      = Request.ServerVariables("REMOTE_ADDR")
14
15   strSQL = "Insert into board ("
16   strSQL = strSQL & " strName"
17   strSQL = strSQL & ",strEmail"
18   strSQL = strSQL & ",strPassword"
19   strSQL = strSQL & ",strSubject"
20   strSQL = strSQL & ",strContent"
21   strSQL = strSQL & ",blnTag"
22   strSQL = strSQL & ",intCount"
23   strSQL = strSQL & ",strUserIP"
24   strSQL = strSQL & ",dtmReg_Date"
25   strSQL = strSQL & ") Values ("
26   strSQL = strSQL & "'" & strName      & "',"
27   strSQL = strSQL & "'" & strEmail       & "',"
28   strSQL = strSQL & "'" & strPassword & "',"
29   strSQL = strSQL & "'" & strSubject    & "',"
30   strSQL = strSQL & "'" & strContent    & "',"
31   strSQL = strSQL & "'" & blnTag         & "'," 
32   strSQL = strSQL        & "0,"
33   strSQL = strSQL & "'" & strUserIP     & "',"
34   strSQL = strSQL        & "getDate())"
35
36   Set objDBConn = Server.CreateObject("ADODB.Connection")
37
38   objDBConn.Open "test", "sa", ""
39
40   objDBConn.Execute strSQL
41
42   objDBConn.Close
43   Set objDBConn = nothing
44   %>
45   <script language="javascript">
46   <!--
47   alert("등록되었습니다");
48   location.href="../list.asp";
49   //-->
50   </script> 

 'regist_ok.asp' 페이지에서는 'regist.asp' 와는 대조적으로 html이 하나도 보이지를 않지요?
 그렇다면.. 아마도 이 페이지는 사용자에게 보여지는 부분이 없게 될 것 같지 않나요?
 맞습니다. 이 페이지에서 하는 일은 정보를 받아와서, DB에 등록하고, 등록이 완료되면 
 글의 목록을 보여주는 페이지인 'list.asp' 로 이동시켜주는 역할만을 합니다.
 
 이 'regist_ok.asp' 페이지는 크게 4부분으로 분류할 수 있습니다.
 첫번째(1~13줄)는 변수 선언 및 사용자가 입력한 정보들을 변수에 저장 하는 부분입니다.
 두번째(15~34줄)는 지난 시간에 우리가 만들었던 'board' 테이블 속으로 사용자가 입력한 정보들을 넣기
 위해서, DB가 알아볼 수 있는 '쿼리(query)문' 을 작성하는 부분 입니다.
 세번째(36~43줄)는 ASP 내장 컴포넌트인 ADO(ActiveX Data Objects) 컴포넌트를 사용하여 DB와 연결
 
하고, 조금전에 작성한 쿼리문을 이용하여 DB에 정보를 저장 하는 부분입니다.
 네번째(45~50줄 )는 저장을 마친 후, 글의 목록을 보여주는 'list.asp' 라는 페이지로 이동 시키는 부분입니다.

 ASP 의 문장들은 '<%' 으로 시작해서 '% >' 으로 마쳐야 합니다.
 그 안에 있는 부분들만이 서버에서 동작합니다.

 1줄 맨 처음에 나오는 문장은 'Option Explicit ' 입니다.
 이것은 '이 페이지에서 사용되는 모든 변수들은 반드시 선언되어진 이후에 사용 될 수 있다' 는 약속입니다.
 왜 이 기능을 사용했을까요?

 ASP는 기본적으로 '변수 선언' 없이 변수를 사용하더라도 에러가 발생하지 않습니다.
 이것은 참으로 편리한 기능이지만 부작용도 만만치 않습니다. 예를 들어보겠습니다.
 strTaiji = "서태지" 라는 값을 저장하고선, 나중에 오타(실수)로 strTaeji 를 출력한다고 상상해 보시지요.
 이런 경우 ASP는 에러를 발생시키지 않습니다.
 전혀 다른 두개의 변수(strTaiji, strTaeji)가 있는 것 뿐이지요.
 그렇다면 사용자가 아무리 strTaiji 에 값을 바꾸어 집어넣고 테스트를 해도, 그 값은 절대 출력되지 않습니다.
 사용자는 변수명이 바뀌었다는 사실을 깨닫기 전까지는 전혀 이상없는 다른 소스를 붙잡고 고민해야 한다는
 말이지요. (실제로 저도 예전에 'Option Explicit' 를 사용하지 않았을 때, 반나절을 고생했던 기억이.. T.T)

 그래서 'Option Explicit' 라는 명령어는 꼭 사용해 주는 것이 좋습니다.
 물론 변수마다 'Dim ' 이라는 명령어로 선언을 해 주어야 한다는 불편함과 귀찮음이 있을 수 있지만
 잘 정리되어 있는 변수 선언은 그 페이지의 특성을 한눈에 알아보게 할 수 있게 해 준다는 장점도 있습니다.
 (솔직히.. 변수 선언은 C나 Java 같은 다른 언어에서는 기본중의 기본입니다. 귀찮다 생각하지 마시어요 ^^)

 3~5줄 까지는 변수 선언 부분입니다.
 그리고 7~13줄 까지는 regist.asp 에서 넘긴 사용자 정보를, 선언한 변수들 안으로 저장하는 작업을 합니다.
 strName 이라는 변수에는 'regist.asp' 에서 userName이라는 이름으로 넘긴 값을 저장하게 됩니다.
 Request.Form 이라는 부분이 낯설게 느껴지실 것입니다.
 Request는 ASP 내부에 자체적으로 내장된 개체 입니다.
 문자 그대로 해석하면 '요청하다, 요구하다'는 뜻이 되지요.
 이름에서 알 수 있듯이 Request 개체는 브라우저에서 사용자가 입력한 정보를 받아 담아두는 일을 합니다.
 그렇다면 뒤의 Request.Form 에서 뒤의 'Form'은 무슨 의미일까요? 
 여러분들께서는 아까 'regist.asp' 에서 정보를 넘길 때 'post' 방식으로 넘겼던 사실을 기억하실 것입니다.
 'post' 방식으로 정보를 넘겼을 경우에는 Request.Form 이라는 명령어로 받게 됩니다.
 그렇다면 'get' 방식은? 이 때에는 Request.QueryString 이라는 명령어로 정보를 받아들이게 됩니다.
 
 그렇다면  7~12 줄의 내용이 이해가 가시겠지요?
 이름, 비밀번호, Email, 제목, 내용, HTML의 정보들이 각각에 해당하는 변수로 들어가게 되는 것입니다.
 그렇다면 13줄의 Request.ServerVariables("REMOTE_ADDR") 는 무엇일까요?
 이것은 정보를 입력한 사용자의 IP를 알아내는 구문이 되겠습니다.
 (일단 관용적으로 알아두시면 좋겠습니다)
 
 그렇다면 15~34 줄에 있는 무언가 반복되는 듯한 구문은 무엇일까요?
 이것은 우리가 지난 시간에 만들었던 'test' 라는 DB, 그 안에 있는 'board' 라는 테이블 안으로 
 7~13줄에서 변수에 저장한 각각의 정보들을 입력하는 SQL(Structed Query Language) 구문 입니다.
 (시퀄문이라고 불리우는 이 SQL 구문을 해석하자면 '구조적 질의 언어'가 됩니다)

 우리가 이번 강좌 전체를 통해서 사용하게 될 SQL 구문은 총 4개입니다.
 검색/조회구문인 Select문, 입력구문인 Insert문, 수정구문인 Update문, 삭제구문인 Delete문 입니다.
 지금은 'board' 테이블에 정보를 '입력' 해야 하므로 'Insert' 구문을 사용하게 되겠습니다.

 Insert 구문의 형식은 다음과 같습니다.

 Insert into Table 이름 (컬럼이름1, 컬럼이름2...) Values (저장할정보1, 저장할정보2...)

 <그림 10>에서 입력한 정보를 그대로 전송하였다면 15~34 줄까지는 다음과 같은 SQL이 만들어집니다.

Insert into board ( strName,strEmail,strPassword,strSubject,strContent,blnTag,intCount,strUserIP,
dtmReg_Date) Values ('김덕영','maestrody@orgio.net','1111','헉, 왜 이렇게 썰렁해?','이거 머야.. 무지하게 썰렁하네. -_-a','T',0,'211.152.124.135','2001-09-16 오후 10:13:00')

 Insert 문을 사용할 때 다음과 같은 점에 주의하시기 바랍니다.
 1. 컬럼이름의 순서는 바뀌어도 상관없습니다만, 컬럼이름의 순서와 정보(변수)의 순서는 일치 해야 합니다.
 - 즉, Insert into board 다음 컬럼이름의 첫번째에 strName 이 왔다면 Values 다음의 저장할 첫번째
   정보에는 이름에 해당하는 '김덕영'이 와야 한다는 것입니다. 이것은 당연한 것이겠지요.
 2. 정보를 입력할 때 해당 정보의 앞 뒤를 작은 따옴표(')로 감싸줍니다. 단 숫자(예: int)형은 예외입니다.
 - 문자열로 입력되는 값들은 작은 따옴표를 꼭 붙여주고, 숫자형인 경우에는 작은 따옴표를 붙이지 않습니다.
  
 위의 15~34 줄을 보시면 지금껏 말씀드린 Insert 문이 나오게 되는데요..
 눈썰미가 있는 분들께서는 무언가 이상한 점을 발견하셨을 것입니다.
 컬럼 이름 하나, 저장할정보 하나마다 한 줄씩 따로따로 쓴 것을 말입니다.
 '우씨, 소스 길게 보이게 하려고 벼라별 꽁수를 다 쓰는군.' ... 이건 아니고요.
 여러분들께 약간의 Tip을 드리기 위해 이런 방법을 사용하였습니다.

 우선 이 Tip을 설명드리기 위해서 문자열의 결합에 대해서 잠시 알아보겠습니다.
 문자열의 결합은 '&' 라는 기호를 사용해 표시하게 됩니다.
 예를 들어보면 다음과 같습니다.
 strLastName = "김"
 strFirstName = "덕영"
 strName = strLastName & strFirstName
 이때 strName에는 "김덕영" 이라는 값이 저장되어 있다는 말씀입니다.
 그렇다면 다음과 같은 경우 strName에는 어떤 값이 저장되어 있을까요?
 strName = strName & " 천재"
 예상하신 대로 strName = "김덕영 천재" 가 저장되어져 있게 됩니다. (주의!! 천재 앞에 공백 한칸 주었어요)

 문자열에 관한 또 하나의 예를 들어보지요.
 strTaiji = "안녕하세여~ 태진데여"
 strTest1 = strTaiji
 strTest2 = "strTaiji"
 자.. 그럼 문제입니다. strTest1 과 strTest2 에 저장된 값은 일치할까요?
 정답은 "아니다 " 입니다. 왜일까요?
 strTest1 에는 strTaiji에 저장되어진 "안녕하세여~ 태진데여" 라는 값이 저장되어 있고,
 strTest2 에는 strTaiji에 저장된 값이 아닌 문자열 그대로의 "strTaiji" 가 저장된 것입니다.
 (따옴표 때문에 그렇습니다)
 이 두가지의 차이를 이해하시겠습니까? 간단하지만 중요한 차이이므로 잘 기억해 두시기를 바랍니다.

 그렇다면 이제 15~34 줄을 마치고 난 후에 strSQL 이라는 변수에 어떤 값이 들어있는지 아시겠지요?
 strSQL 이라는 변수에는 아까 보여드렸던 다음과 같은 문장이 저장되어져 있을 것입니다.

 Insert into board ( strName,strEmail,strPassword,strSubject,strContent,blnTag,intCount,strUserIP,
 dtmReg_Date) Values ('김덕영','maestrody@orgio.net','1111','헉, 왜 이렇게 썰렁해?','이거 머야.. 무지하게 썰렁하네. -_-a','T',0,'211.152.124.135','2001-09-16 오후 10:13:00')

 그렇다면 왜 한칸 한칸 줄을 바꾸어서 썼는지 말씀드리겠습니다.
 우선 이렇게 한줄씩 따로 쓰게 되면 컬럼이름 쪽의 변수 갯수와 저장할 정보 변수 갯수를 비교해 보기가
 편해지겠지요? 이렇게 쓰면 컬럼 갯수와 저장할 정보의 갯수를 확인하는 측면에서 유리 해집니다.
 또하나의 이점은 만약 board 라는 테이블에서 컬럼을 삭제 또는 추가 한다고 했을때 생깁니다.
 지금은 컬럼이 9개밖에 없지만 컬럼이 100개 정도 되는 테이블이라고 상상해 보시지요.
 일렬로 주욱~ SQL 문을 입력한 상태에서, 중간에 컬럼이 하나 추가된다고 한다면 그 부분을 찾는 것
 또한 일이 됩니다.
 그리고 컬럼을 어찌어찌해서 끼워 넣었다고 하더라도, 그 컬럼과 대응하는 정보를 또한 끼워넣어야 하는데...
 작은 따옴표와 쉼표가 난무하는 곳에서 그 자리를 찾는 것은 정말 못할 짓입니다. (눈이 핑핑 돕니다. -_-a)
 사실 이것은 '규칙'은 아닙니다. 또한 다분히 유지보수적인 측면이고요.
 '별로 필요 없겠는걸...' 이라고 생각하시는 분들께서는 무시하고 넘어가셔도 상관 없다는 말씀입니다.
 하지만 실무에선 이런식으로 쓰고 있으며, 이런 방식에 적응되면 장점이 많더라는 말씀을 드리고 싶었습니다.

 어쨌든 15~34 줄을 통하여 strSQL 이라는 변수에는 참으로 긴 문장이 입력이 되었습니다.

 자 그럼 이제는 36줄을 보도록 하시지요.

 Set objDBConn = Server.CreateObject("ADODB.Connection")

 이 짧은 한줄에 아주 심오한 의미가 담겨져 있습니다.. ^^
 ASP에서는 우리가 DB에 접근할 수 있도록 자체적으로 내장된 컴포넌트를 제공해 주는데, 이 DB 관련
 컴포넌트를 ADO(ActiveX Data Objects) 라고 부릅니다. 그 ADO 라는 컴포넌트 안에는 여러가지 개체가
 존재하는데요. 그 중에서도 DB와의 연결을 담당하는 개체가 방금 사용한 Connection 개체 가 되겠습니다.
 사용 방법은 위에서 보시는 바와 같이 Server.CreateObject 라는 명령어를 이용해서 objDBConn 이라는
 변수에 Connection 개체의 인스턴스를 생성 합니다. 그리고 그 녀석(objDBConn)을 사용하게 되는 것이죠.

 조금 어려운 내용일 것입니다. 이부분은 이해가 잘 안가시더라도 그냥 고개를 끄덕이시면서 따라와 주시기를 
바랍니다. 어차피 이부분은 앞으로 지겹도록 사용해야 하는 부분이고, 사용하다보면 나름대로 정도 들 것이니까요. ^^

 기억해야 하는 것은 이것입니다.
 DB와 연결하기 위해서 Connection 이라는 개체의 인스턴스를 생성했다. 그것이 바로 objDBConn 이라는 녀석이다..

 '인스턴스가 머야? 인스턴트 식품은 알겠는데.. 인스턴스는 도무지 모르겠단 말이쥐.' 라는 분들께서는 보아 주십시오.
 예전에 저는 '서유기'를 참 재미있게 보았던 기억이 납니다. TV 에서도 만화로 자주 방영해 주었고요.
 서유기의 주인공인 손오공은 머리카락을 하나 뽑은 다음에 훅~ 하고 불면 그 녀석이 손오공으로 되는..
 아주 특별한 재주가 있었습니다. 분명 그 녀석도 손오공이 맞지요. 생김새도, 하는 짓도.. (일종의 분신이죠)
 인스턴스가 그와 같은 개념입니다. 원래의 개체(original)가 있는데 그 개체를 복사해서 그 개체가 하는 모든 기능을 자신도 할 수 있게끔 하는 녀석.. 그것이 바로 인스턴스입니다. 조금은 이해가 되시는지요?
 
 그 objDBConn 이라는 인스턴스를 사용하여 실질적으로 DB와 연결을 하고, 또 원하는 내용을 저장할 수 있게 됩니다.
 그럼 이제 DB와 연결이 이루어지는 38 줄을 보시겠습니다.

 objDBConn.Open "test", "sa", ""

 윗줄에서는 Connection 개체의 메소드인 Open 메소드를 사용하는데요. 이 메소드는 인자 세개를 필요로 합니다.
 첫번째는 DSN(Data Source Name), 두번째는 userID, 세번째는 password 입니다.
 첫번째 인자인 DSN은 우리가 지난 시간에 만들었던 DB의 이름 "test" 가 되겠습니다.
 두번째 인자인 userID는 역시 지난 시간에 ODBC 등록시 입력했었던 "sa"(system administrator)가 되고요.
 세번째 인자인 password는 sa에 대응되었던 비밀번호가 되겠습니다.
 지난 시간에 sa 의 비밀번호를 바꾸시라고 간곡(?)하게 말씀을 드렸었는데...
 그때 혹시 비밀번호를 바꾸셨다면 바뀐 암호를 여기에 입력하시면 됩니다. (참 착한 분들이세요.. ^^)
 
 이제 DB와 연결이 되었으니 우리가 해야 할일은 strSQL 이라는 변수에 저장되어진 SQL 문을 'board' 라는
 테이블에 저장하는 일일 것입니다. 그것도 또한 objDBConn 이라는 인스턴스를 사용합니다.
 40줄이 되겠습니다.

 objDBConn.Execute strSQL

 이번에도 Connection 개체의 메소드를 사용하는데요. 이번에는 'Execute' 라는 메소드입니다.
 이 메소드는 뒤에 있는 strSQL의 구문을 실행하는 역할 을 합니다.
 즉, strSQL 안에 있는 구문이 실행되면서.. 실질적으로 DB에 저장하는 작업 은 여기서 이루어집니다.
  
 이렇게 모든 작업이 이루어졌다면 우리가 36줄에서 생성했던 objDBConn 이라는 인스턴스를 없애주어야 하는데요. 그 작업이 42~43 줄에 있습니다.

 objDBConn.Close                        - Open을 해주었으니 당연히 Close도 해주어야 하겠지요?
 Set objDBConn = nothing            - objDBConn 이라는 인스턴스를 해제합니다.

 자, 이렇게 Connection 개체의 인스턴스를 이용해 DB를 열고, 저장을 한 후 DB와의 연결을 닫고, 인스턴스를 해제하면 우리가 오늘 알아보고자 하는 모든 작업은 완료가 됩니다.

마지막으로 45~50 라인은 '자바 스크립트'를 이용하여 저장이 성공함을 알려주고, 페이지를 이동시키는 역할을 합니다.
47줄을 보시면 다음과 같은 소스가 있습니다.
alert("등록 되었습니다");  
이 부분은 사용자에게 등록이 완료되었다는 간단한 정보 화면을 제공합니다. 다음 그림처럼요.

 <그림 13>
 
 
 그리고 48 줄의 location.href="../list.asp"; 는 현재 페이지를 상위 폴더에 있는 list.asp 라는 페이지로 이동시켜 주는 역할을 합니다. 
 (물론 지금은 'list.asp' 페이지를 만들지 않았기 때문에 다음과 같은 화면이 뜰 것입니다.)

 <그림 14>



 이렇게 'regist.asp' 와 'regist_ok.asp' 를 거치게 되면 사용자가 입력한 정보들이 DB에 저장되게 됩니다.
 정말 저장이 되어 있는지 그럼 같이 한번 확인해 보도록 하겠습니다.
 '시작 -> 프로그램 -> Microsoft SQL Server -> Enterprise Manager' 를 실행해 주시고요.
 지난 시간에 만들었던 'test' DB 내에 있는 'board' 라는 테이블을 찾아주시기 바랍니다.
 찾으셨으면 다음 그림처럼 'board' 테이블에서 마우스 오른쪽 버튼을 클릭하시고요.
 'Open Table -> Return all rows' 를 실행해 주십시오.

<그림 15>
  

 그랬을 때 다음과 같은 화면을 보신다면 성공적으로 DB에 정보를 입력하신 것입니다.
 
 <그림 16>
 


 만약 'regist.asp' 에서 정보를 입력했을 때, <그림 13> 과 <그림 14>의 화면이 나오지 않고 에러메시지가 뜬다면 'regist_ok.asp' 를 잘못 입력하셨을 확률이 높습니다.
 (특히 40 줄인 'objDBConn.Execute strSQL ' 에서 에러가 난다면 그것은 15~34 줄의 SQL문에서의 오류입니다)
 이럴 경우 주변의 잘하는 분들께 물어보시거나, 주위에 그런 분이 안계시다면 제게 메일을 주십시오.
 (메일을 주실때에는 에러메시지 를 꼭 같이 보내주셔야 합니다. '에러 났어요!!!' 그러면 제가 어떻게 알겠습니까? -_-a)

 자.. 오늘 강좌는 두번째 시간임에도 불구하고 상당히 만만치 않은 내용들이었던 것 같습니다.
 오늘의 강좌에서 이해가 안된다거나 자꾸 에러가 난다.. 싶으시면 사정없이 메일 주시고요.
 (메일 주소는 아래에 있습니다. 외상값 갚으라는 독촉 메일은 사절입니다. -_-a)
 
 다음 시간에는 오늘 등록했던 내용을 리스트로 보는 방법에 대해서 알아보겠습니다.
 장시간 따라오시느라 수고하셨습니다. 커피라도 한잔 하시면서 잠시 휴식의 시간을 가지시길 바랍니다.
 그럼 다음 시간에 뵙겠습니다. 꾸우벅~~~


태지의 화(話)

강좌중 의문사항이나 하시고픈 말씀 겸허하게 받겠습니다: maestrody@orgio.net


authored by

  wnstjd322
  2013-10-29(11:19)
캐릭 이미지
alert부분이 실행이 안되요..


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})