Asp 구성 요소 기본 소개 및 숙달 시리즈 중 1부
. 저는 항상 몇 가지 구성 요소 응용 프로그램을 작성하고 싶었습니다. 이 기간 동안 마침내 제가 좋아하는 것을 작성할 수 있게 되었습니다.
이 튜토리얼을 학습한 후 원하는 대로 자신만의 구성 요소를 작성할 수 있기를 바랍니다.
각 기사는 관련이 없을 수 있지만 구성 요소 작성 중에 발생하는 몇 가지 문제에 대해 작성합니다.
환경을
비판하고 바로잡는 모든 분들을 환영합니다
: winxp+vb6+sp6+visual interdev6.0다음 기능을 수행하는
비교적 간단한 구성 요소를 작성해 보겠습니다
. 두 개의 숫자를 입력하고 추가하고, 추가된 결과를 반환하고, vb6을 열고, 새 Activex Dll 프로젝트를 만듭니다. 프로젝트 이름을 fCom으로, 클래스 이름을 fC1로 변경합니다.
메뉴->도구->프로세스 추가를 클릭하고
이름에 Add를 입력하고 유형으로 함수를 선택한 후 확인하여
다음 코드를 생성합니다. 계속해서 개선해 나갈 것입니다.
프로그램 코드
옵션 명시적
공용 함수 Add(ByVal a As Long, ByVal b As Long) As Long
추가=a+b
기능 종료
좋아, 간단한 구성 요소가 작성되었습니다.
확인을 위해 메뉴->파일->fCom.dll 파일을 클릭합니다.
시각적인 interdev6.0을테스트
하고 ASP 파일을 생성해야 합니다. Interdev는 코드 프롬프트 기능이 있어서 VB의 IDE 환경과도 일치하고 쓰기에도 편리합니다.
프로그램 코드
<%@ 언어=VBScript %>
<HTML>
<헤드>
<META NAME="생성기" Content="Microsoft Visual Studio 6.0">
</HEAD>
<본문>
<%
set obj=server.CreateObject("fCom.fC1")
'다음 문장에 주의하세요. 함수에 반환 값이 있으므로 다음 메소드로 작성할 수 없습니다. 그렇지 않으면 IE에서 오류가 보고됩니다.
'obj.Add(3,4)
'오류 유형:
'Microsoft VBScript 컴파일러 오류(0x800A0414)
'서브루틴을 호출할 때 괄호를 사용할 수 없습니다.
'/xml/fc1.asp, 9행, 12열
'obj.Add(3,4)
'다음은 올바른 쓰기 방법입니다.
희미한 c
c=obj.Add(3,4)
응답.쓰기 c
%>
</BODY>
</HTML>
가상 디렉터리를 구성하고 IE에서 이 asp 파일을 실행하여 결과를 얻습니다. 7.
첫 번째 기사가 모두 끝났습니다.
Asp 컴포넌트 기본 소개 및 마스터리 시리즈 2
컴포넌트 등록 방법
1. regsvr32 구성 요소의 절대 경로는
다음과 같습니다.
프로그램 코드
regsvr32 c:testfc1.dll
컴포넌트는 등록만 하면 사용이 가능하기 때문에 컴포넌트의 위치와는 아무런 관련이 없습니다.
2. COM+ 구성 요소 관리자에 등록할 때
이 등록이 필요한 경우: COM+ 서비스를 사용한 후 구성 요소가 정상적으로 실행되기 전에 구성 요소를 등록해야 합니다. regsvr32에만 등록된 컴포넌트는 여전히 사용할 수 없습니다
.
프로그램 코드
set obj=server.createobject("프로젝트 이름. 클래스 이름")
그런 다음 해당 메소드 속성을 호출합니다.
구성 요소를 제거하는 방법
1. regsvr32 구성 요소의 절대 경로는
다음과 같습니다.
프로그램 코드
regsvr32 c:testfc1.dll /u
u 매개변수 등록 방지 구성요소
2. COM+ 구성 요소 관리자에서 구성 요소를 삭제하면 됩니다.
Asp 구성 요소 항목 및 마스터리 시리즈 3부:
속성을 사용하여vb6을 열고 새 Activex Dll 프로젝트를 만드는
방법
.프로젝트 이름을 fCom으로, 클래스 이름을 fC2로 변경합니다.
메뉴->도구->프로세스 추가를 클릭합니다.
이름에 myName을 입력하고 유형으로 속성을 선택한 다음 범위로 public을 선택한 다음
작업을 다시 확인합니다. 이름에 Age를 입력하고, 유형으로 속성을 선택하고, 범위에서 public을 선택한 후 확인
하고 다시 작업합니다. 이름에 peopleInfo를 입력하고, 유형으로 function을 선택하고, 범위에서 public을 선택한 후
코드를 확인합니다. 다음과 같습니다:
프로그램 코드
옵션 명시적
'속성값을 담고 있는 지역변수는 클래스에서만 사용할 수 있다.
비공개 mvarmyName을 문자열로 사용
비공개 mvarAge를 정수로 사용
'속성 쓰기 허용(속성 허용: 이 프로세스는 속성에 값을 할당합니다.)
공용 속성 Let Age(ByVal vData As Integer)
mvarAge = vData
끝 속성
'읽기 속성 가져오기(이 프로세스는 속성 값을 가져옵니다.)
공용 속성은 Age()를 정수로 가져옵니다.
나이 = mvarAge
End 속성
공용 속성 Let myName(ByVal vData As String)
mvarmyName = vData
End 속성
공용 속성 Get myName() As String
myName = mvarmyName
끝 속성
공용 함수 peopleInfo() As String
peopleInfo = "이름: " & mvarmyName & " 나이: " & mvarAge
기능 종료
좋아, 간단한 구성 요소가 작성되었습니다.
확인을 위해 메뉴->파일->fCom.dll 파일을 클릭합니다.
시각적인 interdev6.0을테스트
하고 ASP 파일을 생성해야 합니다. Interdev는 코드 프롬프트 기능이 있어서 VB의 IDE 환경과도 일치하고 쓰기에도 편리합니다.
프로그램 코드
<%@ 언어=VBScript %>
<HTML>
<본문>
<%
set obj=server.CreateObject("fCom.fC2")
희미한 c
'여기서 호출되는 것은 구성 요소의 Let 속성입니다.
obj.myName="토네이도"
obj.Age =20
c=obj.peopleInfo()
응답.쓰기 c
'여기서 호출되는 것은 구성 요소의 Get 속성입니다.
응답."<br>" 쓰기
응답.쓰기 obj.myName
응답."<br>" 쓰기
응답.쓰기 obj.나이
%>
</BODY>
</HTML>
가상 디렉터리를 구성하고 IE에서 이 asp 파일을 실행하면 결과는 다음과 같습니다.
이름: Tornado 연령: 20
폭풍
20
계속
Asp 컴포넌트 입문 및 숙달 시리즈 4
배열 문제
배열은 프로그램에서 많이 사용되며 문제를 일으킬 가능성이 더 높습니다.
vb6을 열고 새로 만들어
보겠습니다
.Activex DLL 프로젝트. 프로젝트 이름을 fCom으로, 클래스 이름을 fC4로 변경합니다.
메뉴->도구->프로세스 추가를 클릭합니다.
이름에 AcceptArray1을 입력하고 유형으로 서브루틴을 선택한 다음 범위로 public을 선택한 다음
작업을 다시 확인합니다. 이름에서 AcceptArray2를 선택하고 유형으로 함수를 선택하고 범위로 public을 선택한 다음 확인합니다.
프로그램 코드
'기능: 배열 주소를 구성 요소에 전달하고 ByRef 키워드를 사용하여 할당 및 반환
Public Sub AcceptArray1(ByRef varray As Variant) As Variant
varray(0) = "토네이도"
배열(1) = "20"
End Sub
'함수: 문자열 배열을 반환합니다.
공용 함수 AcceptArray2()를 변형으로 사용
a(2)를 변형으로 희미하게 표시
a(0) = "토네이도"
a(1) = "20"
AcceptArray2=a
End Function
메뉴->파일->fCom.dll 파일 생성을 클릭합니다
. 디렉토리에 fCom.dll 파일이 있는지
테스트
하고 asp 파일
프로그램 코드를 생성합니다.
<%@ 언어=VBScript %>
<HTML>
<본문>
<%
희미한 물체
set obj = server.createobject("fCom.fC4")
어둡게(2)
'첫 번째 구성 요소 메서드 테스트
obj.AcceptArray1(a)
응답.쓰기(0)
응답."<br>" 쓰기
응답.쓰기(1)
응답."<br>" 쓰기
'두 번째 구성 요소 메서드 테스트
희미한 b
b=obj.AcceptArray2()
i=0에서 ubound(b)까지
응답.쓰기 b(i)
응답."<br>" 쓰기
다음
%>
</BODY>
</HTML>
가상 디렉터리를 구성하고 IE에서 이 asp 파일을 실행하면 다음과 같습니다.
Tornado
20
폭풍
20
요약하면
문자열과 숫자는 값으로 전달되거나 반환 값으로 반환됩니다.
참조로 전달하는 경우 매개 변수 유형을 Variant로 설정합니다. 이렇게 하면 몇 가지 실수를 피할 수 있습니다. 그러나 참조로 전달되는 매개 변수를 최대한 줄이십시오.
계속하려면
Asp 구성 요소 입문 수준 소개 및 숙달 시리즈 5.
데이터베이스에 연결하고 레코드 세트를 열 때 다음과 같이 볼 수 있습니다.
프로그램 코드
rs.Open strsql, conn,adOpenDynamic,adLockPessimistic
","를 입력하면 선택할 수 있는 커서 유형 또는 잠금 유형 목록이 나타납니다.
때로는 단순화하기 위해 직접 rs.open strsql,conn,1,3을 사용합니다.
첫 번째 방법이 더 전문적인가요?ASP에서 vb6을 열고 새 Activex Dll 프로젝트를 만드는
방법을 살펴보겠습니다
.프로젝트 이름이 fCom으로 변경되고 클래스 이름이 fC5로 변경됩니다.
프로그램 코드
옵션 명시적
'열거형 정의
공개 열거형 인터페이스dig
IC첫번째 = 1
IC초 = 2
IC쓰리 = 3
IC4 = 4
IC5=5
icsix=6
아이서벤=7
얼음 높이 = 8
End Enum
'함수 정의
공개 함수 CallDat(ByVal idig As Integer, ByVal ics As Interfacedig) As Variant
CallDat = idig * ics
End Function
메뉴->파일->fCom.dll 파일 생성을 클릭합니다
. 디렉토리에 fCom.dll 파일이 있는지
테스트
하고 asp 파일
프로그램 코드를 생성합니다.
<%@ 언어=VBScript %>
<HTML>
<본문>
<%
'정의, ado의 레코드 세트 <!--#include file="adovbs.inc"-->처럼 이 부분을 파일에 넣을 수도 있습니다.
const icfirst = 1
const ic초 = 2
const ic3 = 3
const icfour = 4
const IC5 = 5
const icsix = 6
const icserven = 7
const iceight = 8
set obj=server.CreateObject("fCom.fc5")
'iceight 또는 8을 여기에 사용할 수 있지만 전자를 사용하면 코드를 더 읽기 쉽게 만들 수 있습니다.
a= obj.CallDat(4,iceight)
응답.작성
응답."<br>" 쓰기
a= obj.CallDat(4,8)
응답.작성
%>
<P> </P>
</BODY>
</HTML>
다음
과 같습니다.
32
Asp Component 기본 소개 및 숙달 시리즈 6
오류 처리
페이지에 오류가 있고 오류 처리가 없으면 페이지에는 사용자가 이해할 수 없는 오류가 표시됩니다.
ASP 스크립트에서 사용할 수 있습니다.
프로그램 코드
오류 발생 시 다음 재개
…
Err.Number<>0이면
응답.쓰기 오류.설명
다음과 같은 경우 종료
하지만 구성 요소에 문제가 발생하면 어떻게 될까요? 이 방법으로 오류를 잡을 수 있지만 구체적인 오류를 어떻게 알 수 있나요?
오류를 반환하는 구성 요소에 오류 처리를 추가하면 더 자세한 오류 정보를 쉽게 확인하고 오류 문제를 해결하는 데 도움이 됩니다.
Err.Raise를 사용하면 런타임 오류를 생성하는 데 사용됩니다.
vb6을 열고 새 Activex Dll 프로젝트를 만듭니다. 프로젝트 이름이 fCom으로 변경되고 클래스 이름이 fC6으로 변경됩니다.
프로그램 코드
옵션 명시적
공개 하위 showerror1()
오류 발생 시 ErrorHandle로 이동
Dim i As Double
나는=1/0
오류 핸들:
Err.Raise Err.Number, Err.Source, Err.Description
End Sub
'사용자 정의 오류 생성
공개 하위 showerror2()
Err.Raise 600, "자체 정의 오류 600", "귀하의 프로그램을 설명하는 오류입니다."
End Sub
메뉴->파일->fCom.dll 파일 생성을 클릭합니다
. 디렉토리에 fCom.dll 파일이 있는지
테스트
하고 asp 파일
프로그램 코드를 생성합니다.
<%@ 언어=VBScript %>
<HTML>
<본문>
<%
'다음 문장은 매우 중요합니다
오류 발생 시 다음 재개
set obj=server.CreateObject("fCom.fc6")
obj.showerror1()
'오류 처리가 없으면 오류 인터페이스가 생성되는데 이는 매우 비전문적입니다.
'0~512 범위는 시스템 오류용으로 예약되어 있으며 513~65535 범위는 사용자 정의 오류에 사용할 수 있습니다.
'보존된 오류인 경우 구성 요소의 오류 번호는 페이지 처리 오류 번호와 일치합니다.
err.number <>0이면
Response.Write "오류 메시지" & err.number & err.Description
종료하면
응답."<br>" 쓰기
'사용자가 정의한 오류인 경우 페이지에서 별도로 처리할 수 있습니다.
obj.showerror2()
err.number<>0이면
err.number =600이면
응답.쓰기 err.number & err.Source & err.Description
종료하면
종료하면
%>
</BODY>
</HTML>
가상 디렉터리를 구성하고 IE에서 이 asp 파일을 실행하면 결과는 다음과 같습니다.
오류 메시지 11은 0으로 나뉩니다.
600 자체 정의 오류 600 이는
Asp 구성 요소 초보자 소개 및 숙달 시리즈 7부
에서 자신의 프로그램을 설명하는 오류입니다. 이전 장의 예제를 실행할 때 다음과
같은 몇 가지 문제가 발생할 수 있습니다. 컴파일하면 수정이 필요합니다. "권한이 거부되었습니다. 'f:csdnfcom.dll'" 등의 오류가 발생합니다.
ASP 페이지를 탐색할 때 작업 관리자를 열면 사용자 이름이 IWAM_YANG인 dllhost.exe 프로세스가 표시됩니다. IWAM_YANG은 컴퓨터 이름에 따라 달라집니다.
1.다음 방법을 사용하여 해결할 수 있습니다
. iis를 다시 시작합니다.
관리 도구 찾기->인터넷 정보 서비스->제어판 왼쪽 트리의 두 번째 수준에서 로컬 컴퓨터를 마우스 오른쪽 버튼으로 클릭->모든 작업->IIS를 다시 시작하는 데 시간이 걸립니다.
이때 dllhost.exe 프로세스가 종료된 것을 확인할 수 있습니다
. 2. 위 방법의 단점은 다시 시작할 때까지 모든 웹 사이트가 현재 종료된다는 것입니다.
단일 웹 사이트나 가상 디렉터리에 대한 솔루션이 있습니까?
관리 도구찾기
-> 인터넷 정보 서비스 -> 제어판에서 구성 요소가 실행 중인 가상 디렉터리를 찾습니다. ->속성을 마우스 오른쪽 버튼으로 클릭->첫 번째 가상 디렉터리에서->응용 프로그램 보호->제거를 클릭합니다.
이때 dllhost.exe 프로세스가 종료된 것을 확인할 수 있습니다
. 3. 번거롭다면 Windows 작업 관리자
4에서 직접 프로세스를 종료하세요. 마지막 방법은
제어판에서 관리 도구 찾기 -> 구성 요소 서비스 -> 컴퓨터, 내 컴퓨터, 실행 중인 프로세스 클릭 -> IIS Out-Of-Process Pooled Application (2860) -> 마우스 오른쪽 버튼을 클릭하여 닫는 것입니다.
이때 dllhost.exe 프로세스가 종료된 것을 확인할 수 있습니다.