컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - 코드와 소스코드의 차이점

코드와 소스코드의 차이점

. 구성 요소의 특징은 무엇입니까?

l 장점:

n 간편한 호출, 코드 저장

n 높은 보안

n 트랜잭션 처리 지원, 다중 구성요소 결합

n 빠른 실행 속도

n 구성 요소 업그레이드 및 수정 시 페이지 수정이 필요하지 않으므로 확장성이 좋습니다.

l 단점:

n 개발 및 디버깅의 어려움

2. VB 개발을 사용하는 방법은 무엇입니까?

⑴. VBgt;gt;새 프로젝트gt;gt;ActiveX DLL 열기

⑵. 프로젝트 이름을 강좌

⑶로 수정합니다. 클래스 모듈의 이름을 conn_db

⑷로 수정합니다. 프로젝트>참조는 COM 서비스 유형 라이브러리와 Microsoft Active Server Pages 개체 라이브러리를 참조합니다.

⑸. 클래스 코드를 다음과 같이 수정합니다:

from www.knowsky.com

'데이터베이스 연결을 설정하고 데이터베이스 필드를 출력합니다.

응답을 응답으로 희미하게

p>

요청을 요청으로 희미하게

서버를 서버로 희미하게

응용 프로그램을 애플리케이션으로 희미하게

세션을 세션으로 희미하게

비공개 Sub Class_Initialize()

Dim objContext As ObjectContext

objContext = GetObjectContext() 설정

응답 설정 = objContext("Response")

요청 설정 = objContext("요청")

서버 설정 = objContext("서버")

응용 프로그램 설정 = objContext("응용 프로그램")

설정 Session = objContext( "Session")

End Sub

Sub conn_db()

Set conn = CreateObject("adodb.connection")

conn .open "course_dsn", "course_user", "course_password"

Set rs = CreateObject("adodb.recordset")

rs.open "user_info에서 * 선택 ", conn, 1, 1

If rs.recordcount gt; 0이면

For i = 1 To rs.recordcount

Response.write "lt; brgt;" amp ; rs("user_name") & "lt; brgt;"

만약 rs.EOF이면 종료

rs.movenext

다음

End If

rs.Close

rs = Nothing으로 설정

conn.Close

conn =로 설정 아무것도

자막 종료

⑹. 새로운 클래스 cutstr을 추가하세요

⑺. 클래스 코드를 다음과 같이 수정합니다:

'Intercept string

Function cutstr(str, length)

If Len(str) gt; >

cutstr = Left(str, length) amp; "..."

Else

cutstr = str

End If

기능 종료

⑻. 파일gt;gt;저장

⑼. 파일gt;gt;makecourse.dll

3.

구성 요소 등록: MTS 및 regsvr32.exe

구성 요소를 등록하는 방법에는 MTS와 regsvr32.exe를 사용하는 두 가지 방법이 있습니다. MTS는 다음과 같은 장점이 있기 때문에 권장됩니다.

n 동적 오프로드 밸런싱으로 구성 요소 및 구성 요소 기반 응용 프로그램의 업그레이드 가능성을 향상시킵니다.

n 이벤트 및 대기열 구성 요소를 게시하고 제출하는 기능이 포함되어 있어 여러 구성 요소와 더 쉽게 연합할 수 있습니다.

MTS의 특성을 컴포넌트에 담기 위해서는 컴포넌트에 몇 가지 변경이 필요합니다. NT 및 98에서 개발하는 경우 프로젝트에서 Microsoft Transaction Server 유형 라이브러리를 참조해야 합니다. Windows 2000에서 개발하는 경우 COM 서비스 유형 라이브러리를 참조해야 합니다.

⑴. Regsvr32 등록:

regsvr32.exe는 system32 아래의 실행 파일로 Asp 호출을 위해 레지스트리로 구성 요소 정보를 읽습니다.

명령줄을 사용하여 구성 요소 dll 파일이 있는 디렉터리로 들어가서 "regsvr32 dll_file_name"을 실행하세요.

regedit를 실행하면 HKEY_CLASSES_ROOT 아래에서course.conn_db 항목과course.cutstr 항목을 찾을 수 있으며 이는 구성 요소 등록이 성공했음을 나타냅니다.

⑵. MTS를 사용하여 등록:

①. 시작gt;gt;프로그램gt;gt;관리 도구gt;gt;구성 요소 서비스

②. 디렉터리를 다음 상태로 확장합니다:

3. 다음 대화 상자가 나타날 때까지 마법사의 다음 단계를 따르세요. "빈 애플리케이션 만들기"를 클릭하세요:

4. 다음 대화 상자에서 애플리케이션 이름을 "course"로 지정하고 나머지는 완료될 때까지 기본값으로 둡니다

⑤. 강좌 애플리케이션을 확장하고 마우스 오른쪽 버튼을 클릭한 후 새 구성요소를 생성합니다

⑥. 프롬프트에 따라 계속 진행하십시오. 다음 대화 상자가 나타나면 "등록된 구성요소 가져오기"

⑦를 선택하십시오. 우리가 개발한 컴포넌트를 선택하고 완료될 때까지 다음 단계로 진행하세요

⑧. 현재 강좌 지원서에는 두 가지 구성 요소가 더 있는 것을 확인할 수 있습니다:

4. Asp에서 구성 요소 호출

asp_use_com.asp

lt;

'asp에서 com 구성 요소 호출

set cutstr_obj=server.createobject( " course.cutstr")

response.write cutstr_obj.cutstr("abcdefghijk",3)amp;"lt;brgt;"

cutstr_obj=nothing 설정

set conn_obj=server.createobject("course.conn_db")

conn_obj.conn_db()

set conn_obj=nothing

gt;

효과:

abc...

ahyi

tuth

호출이 성공했음을 나타냅니다.

5. 구성요소 제거

⑴. regsvr32를 사용하여 등록된 구성요소의 경우 -u 스위치를 사용하여 제거하십시오.

참고: 먼저 구성요소 dll이 있는 디렉토리를 입력한 다음 "regsvr32를 사용하십시오. –u dll_file_name"을 사용하여 제거합니다. 제거한 후 IIS를 다시 시작하면 됩니다.

⑵. MTS에 등록된 컴포넌트는 먼저 "컴포넌트 서비스"에서 해당 애플리케이션을 삭제한 후 ⑴단계를 수행하여 컴포넌트를 완전히 제거합니다.

6. DLL 구성 요소 저장 위치 및 권한 설정

⑴. 컴파일로 생성된 Dll 파일만 복사하면 되고, 다른 파일은 처리할 필요가 없습니다

⑵. Dll은 다운로드되는 것을 방지하기 위해 system32 디렉토리와 같은 웹 사이트 외부에 배치되어야 합니다

⑶. Dll의 파일 권한은 시스템 읽기로 설정되어 있으며, 인터넷 사용자는 폴더/실행 파일을 순회합니다

⑷. Dll은 읽기, 스크립트 자발적 액세스 등 IIS의 모든 권한을 제거합니다.

위 처리 후 Dll 파일의 보안이 보장될 수 있습니다.

7. 기타

구성 요소에서 Asp 개체를 사용하여 Asp 코드를 COM 구성 요소에 쉽게 이식하는 방법은 무엇입니까?

5. IIS 최적 구성

1. 웹사이트 탭: IP, 포트, 가상호스트, 연결, 로그

2. ISAPI 필터: PHP 및 JSP 지원 추가

3. 홈 디렉터리 구성 탭: I IS 권한 설정(파일 권한과 결합), 실행 권한, 애플리케이션 보호, 매핑, 버퍼링, 상위 경로, 오류 메시지

4. 기타 탭: 사용자 정의 오류, HTTP 헤더, 디렉토리 보안, 문서

5. 파일 압축의 장점과 단점

기타

1. 이메일 보내기(JMail, Ms smtp)

Microsoft Smtp를 사용하여 이메일 보내기

⑴. Microsoft SMTP 서비스 설치

⑵. Microsoft SMTP 서비스 설정

⑶. 코드 부분:

mail_smtp.asp

lt;

sub sendmail(fromwho, towho, 제목, 본문)

dim mymail

mymail 설정 = server.createobject("cdonts.newmail")

mymail.from = fromwho

mymail.to = towho

mymail.subject = 제목

mymail.body = 본문

mymail.send

mymail 설정 = 없음

end sub

gt;

이 서브루틴은 다음 항목에 해당하는 4개의 매개변수를 허용합니다.

l 이메일 보낸 사람의 이메일 주소

l 이메일 수신자의 이메일 주소

l 이메일 제목

l 이메일 내용

l p>

사용법:

lt;

fromWho=…

toWho=…

Subject=…

Body=…

IF toWho lt;gt; "" THEN

sendMail fromWho, toWho, Subject, Body

END IF

gt;

Jmail을 사용하여 이메일 보내기

관심이 있으시면 저와 논의해 보세요. Jmail 소프트웨어.

2. Zip 파일의 압축을 푼다(Wscript.Shell 및 Winzip 명령줄, Java 구성 요소)

⑴. Winzip 8.1 이상을 설치하세요

⑵. Winzip 명령줄 설치

⑶. 인터넷 사용자가 읽고, 쓰고, 수정할 수 있도록 작업 디렉터리의 파일 권한을 설정합니다

⑷. 코드 부분:

unzip_a_zipfile.asp

lt;

'셸 개체로 프로그램 시작

'zip_path는 c:\test.zip과 같은 특정 zip 파일

'path는 압축이 풀린 파일을 저장할 경로입니다.

'ond는 명령줄 매개변수입니다.

set wshshell = server.createobject ("wscript.shell")

issuccess = wshshell.run ("wzunzip -ond "amp;zip_pathamp;" "amp;path, 1, true)

'zip 파일 삭제

set myfileobject=server.createobject("scripting.filesystemobject")

myfileobject.deletefile zip_path

'성공 여부 확인 작업을 계속하려면

if issuccess = 0 then

'성공

...

else

'실패

...

끝나는 경우

gt;

3. XML 파일 운영

이 교환 시간은 제한되어 있으므로 시간이 나면 자세히 논의하겠습니다

4. 파일 업로드

⑴. 파일 업로드 구성 요소 Asp 파일업을 설치합니다(다중 파일 업로드 지원, 파일 유형 및 크기 판단, 업로드 후 파일 이름 바꾸기 등)

⑵. 업로드 구성 요소를 적용하려면 IIS를 다시 시작하세요.

⑶. 인터넷 사용자가 읽고 쓰고 수정할 수 있도록 업로드 디렉터리의 파일 권한을 설정합니다

⑷. 코드 부분

upload_file.htm

lt; 스타일 type="text/css"gt;

lt;!--

.input {배경 색상: #FFFFFF; 테두리 하단: 검정 1px 단색; 테두리 상단: 검정 1px 색상: #000000 : 조지아; 글꼴 크기: 9pt; 색상: Midnightblue;}

a: 링크 {색상: #1B629C; 텍스트 장식: 없음}

a: hover {색상: # FF6600; 텍스트 장식: 밑줄}

a: 방문함 {텍스트 장식: 없음}

--gt;

lt;/stylegt; p>

lt;

gt;

lt; 양식 enctype="multipart/form-data" method="post" action="upload_file.asp" name="Upload"gt; type="hidden" name="CopyrightInfo" value=""gt;

파일을 선택하세요: lt; input type="file" name="file1" class="input"gt; brgt ;lt;brgt;

파일을 선택하세요:lt;input type="file" name="file2" class="input"gt;lt;brgt;lt;brgt;

lt;/formgt;

lt;brgt;lt;brgt;

lt;a href="javascript:document.Upload.submit();"gt; ; /agt;

lt;/centergt;

upload_file.asp

lt;

오류 발생 시 다음 재개

'파일 접미사를 가져오는 함수 정의

function getfileextname(filename)

pos=instrrev(filename, ".")

if posgt ; 0이면

getfileextname=mid(filename, pos 1)

else

getfileextname=""

end if

end function

'파일의 올바른 이름을 가져오는 함수 정의

function getfilename(filename)

lens=len(filename) -len(getfileextname(filename)) -1

getfilename=left(filename, lens)

end function

'파일 업로드 구성 요소의 객체 생성

set fileup= server.createobject("chinaasp.upload")

'사용자가 업로드한 파일을 읽고 서버에 저장하는 루프

f in fileup.files

'사용자가 파일을 선택하지 않거나 파일 크기가 10m를 초과하는 경우 업로드된 파일이 선택된 페이지로 돌아갑니다.

if f.filename= "" 또는 f.filesizegt; 10485500 이후 response.redirect "upload_file.htm"

'저장된 경로 가져오기

path=server.mappath("upload_file.asp")

path=left(path,len(path)-15 )

'파일 저장

f.saveas pathamp;getfilename(f.filename)amp;". "amp;getfileextname(f.filename)

다음

response.r

edirect "upload_file.htm"

gt;

5. 드라이브/디렉터리/파일 작업

이번 교환에는 시간이 제한되어 있으므로 시간이 나면 자세히 논의하겠습니다

6. Asp 작성 및 디버깅 경험: 쿠키 및 세션 선택 방법, 쿠키 수량 트랩, 페이지 만료 및 버퍼링 설정, 이식성 보장 방법, 내부 서버 500 오류 처리 방법...

1. 쿠키 및 세션 선택:

⑴. ***동일한 특성

⑵. 차이점:

①. 업무방식

②. 만료 조건

3. 서버 성능에 미치는 영향

2. 쿠키 수 트랩:

IIS는 20개 이하의 일반 쿠키를 저장할 수 있습니다. 새 쿠키를 정의하면 이전 쿠키의 값이 손실됩니다. 이는 대규모 애플리케이션의 경우 분명히 매우 제한적입니다. 이게 문제야?

답은 2D 쿠키를 사용하는 것입니다.

예:

1차원 쿠키 수 제한 테스트:

test_cookies_1.asp

lt; >

i=1~50

response.cookies("cookies_"amp;i)=i

다음

gt;

test_cookies_2 .asp

lt;

i=1~50의 경우

response.write request.cookies("cookies_"amp;i) amp;"lt; brgt;"

다음

gt;

효과:

먼저 test_cookies_1.asp를 방문한 다음 test_cookies_2를 방문하세요. ASP를 찾아 무엇을 찾았나요?

test_cookies_3.asp

lt;

i=1~50의 경우

response.cookies("cookies_"&i) =i

다음

i=1 ~ 50의 경우

response.write request.cookies("cookies_"amp;i)amp;"lt;brgt ;"

다음

gt;

효과:

쿠키가 손실되지 않습니다! ! ! !

2차원 쿠키 수 제한 테스트:

test_cookies_4.asp

lt;

for i=1 to 301

response.cookies("tuht")("cookies_"amp;i)=i

다음

gt;

test_cookies_5.asp

p>

lt;

i=1 ~ 301의 경우

response.write request.cookies("tuht")("cookies_"amp ;i)amp;"lt ;brgt;"

다음

gt;

효과:

이 방법을 사용하면 201을 사용할 수 있습니다. *20=4020 쿠키! ! ! !

3. 페이지 만료 및 버퍼링 설정

lt;

'만료 및 버퍼링 처리

response.buffer=true

response.cachecontrol= " no-chache"

response.expiresabsolute=now()-1

response.expires=0

gt;

html 당신 다음에서도 설정할 수 있습니다:

lt; Meta content="no-cache" 맨드 라인 소프트웨어를 직접 다운로드하세요.

4. 데이터베이스 스크립트 파일:

존재하는 경우(dbo.sysobjects에서 * 선택, 여기서 id = object_id(N'[dbo].[output_1]') 및 OBJECTPROPERTY(id, N'IsProcedure') = 1)

프로시저 삭제 [dbo].[output_1]

GO

존재하는 경우(id가 있는 dbo.sysobjects에서 * 선택) = object_id(N'[dbo].[return_1]') 및 OBJECTPROPERTY(id, N'IsProcedure') = 1)

프로시저 삭제 [dbo].[return_1]

GO

존재하는 경우(id = object_id(N'[dbo].[user_info_1]') 및 OBJECTPROPERTY(id, N'IsProcedure') = 1인 dbo.sysobjects에서 * 선택)

프로시저 삭제 [dbo].[user_info_1]

GO

존재하는 경우(id = object_id(N'[dbo].[user_info_2]인 dbo.sysobjects에서 * 선택) ') 및 OBJECTPROPERTY(id, N'IsProcedure') = 1)

프로시저 삭제 [dbo].[user_info_2]

GO

존재하는 경우(선택 * dbo.sysobjects에서 id = object_id(N'[dbo].[user_info_3]') 및 OBJECTPROPERTY(id, N'IsProcedure') = 1)

삭제 ​​절차 [dbo].[user_info_3]

GO

존재하는 경우(dbo.sysobjects에서 * 선택, 여기서 id = object_id(N'[dbo].[user_info]') 및 OBJECTPROPERTY(id, N'IsUserTable') = 1)

테이블 삭제 [dbo].[user_info]

GO

CREATE TABLE [dbo].[user_info] (

[id] [int] IDENTITY (1, 1) NOT NULL,

[user_name] [varchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL,

[password] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[user

_info] NOCHECK 추가

제약 조건 [PK_user_info] 기본 키 클러스터됨

(

[user_name]

) ON [PRIMARY]

GO

QUOTED_IDENTIFIER 설정 끄기

GO

ANSI_NULLS 설정 끄기

GO

절차 생성 [output_1]

@sid int 출력

AS

@sid=2 설정

GO

QUOTED_IDENTIFIER 설정 끄기

GO

ANSI_NULLS 설정 켜기

GO

QUOTED_IDENTIFIER 설정 끄기

GO

p>

ANSI_NULLS 설정 끄기

GO

프로시저 생성 [return_1]

(@user_name varchar(40), @password varchar(20))

AS

존재하는 경우(user_name=@user_name 및 비밀번호=@password인 user_info에서 ID 선택)

1을 반환

else

0을 반환

GO

QUOTED_IDENTIFIER 설정 끄기

GO

ANSI_NULLS 설정 켜기

GO

QUOTED_IDENTIFIER 설정 ON

GO

ANSI_NULLS 설정 OFF

GO

프로시저 생성 [user_info_1 ]

(@user_name varchar(40), @password varchar(20))

AS

user_name=@user_name 및 비밀번호=인 user_info에서 ID를 선택하세요. @password

GO

QUOTED_IDENTIFIER 설정 끄기

GO

ANSI_NULLS 설정 켜기

GO

QUOTED_IDENTIFIER 설정 끄기

GO

ANSI_NULLS 설정 끄기

GO

프로시저 만들기 [user_info_2]

(@user_name varchar(40), @password varchar(20))

AS

SET XACT_ABORT ON

트랜잭션 시작

user_na가 있는 user_info에서 삭제

me=@user_name 및 비밀번호=@password

트랜잭션 커밋

XACT_ABORT 설정 끄기

GO

QUOTED_IDENTIFIER 설정 끄기

GO

ANSI_NULLS 설정 ON

GO

QUOTED_IDENTIFIER 설정 OFF

GO

ANSI_NULLS 설정 OFF

GO

[user_info_3] AS 절차 생성

user_info에서 * 선택

GO

QUOTED_IDENTIFIER 끄기 설정

GO

ANSI_NULLS를 ON으로 설정하세요

GO

上篇: yunhai Xiantao 가 업데이트를 중지하는 이유 下篇: 서재 문화
관련 내용