1. 소개
서버 측 스크립트 실행 환경은 간단하고 사용하기 쉽고, 컴파일 및 연결이 필요하지 않으며, 서버 측에서 직접 스크립트를 실행할 수 있으며, 다중 사용자 및 다중 스레드를 지원하며 널리 사용되었습니다. 웹 개발에서. 서버 측 구성 요소는 클라이언트 측 구성 요소와 다릅니다. 클라이언트 측 구성 요소는 네트워크를 통해 전송되고 HTML을 사용하여 작동하며 IE에서만 사용할 수 있습니다. 그러나 서버 측 구성 요소는 서버 측에서 실행되며 서버에서 다양한 작업을 수행합니다. 따라서 모든 브라우저에서 즐길 수 있으며 브라우저가 아닌 서버에 의존합니다. 그러나 ASP 스크립트는 일반 텍스트 형식이므로 악의적인 행위자가 소스 코드를 통해 보면 안 되는 페이지 콘텐츠를 쉽게 볼 수 있습니다. 따라서 ASP 소스 코드를 보호하는 것은 매우 중요합니다. ASP 코드를 DLL로 캡슐화하면 ASP 코드 실행 속도가 빨라질 뿐만 아니라 원본 코드도 보호됩니다. IIS가 ASP 프로그램 실행을 요청하면 먼저 ASP 파일의 태그 사이에 있는 코드를 찾아서 실행합니다(그 사이의 코드일 수도 있음). 이 ASP 프로그램이 이전에 호출된 경우 메모리에 있는 컴파일된 프로그램을 사용하여 HTML 코드를 사용자에게 반환합니다. 그렇지 않은 경우 다시 컴파일됩니다. 이를 통해 서버 리소스가 크게 절약됩니다.
2. 구현 방법
VB를 시작하고 ActiveX 아이콘을 선택합니다. 이 아이콘은 새 프로젝트에서 찾을 수 있습니다. VB는 기본 프로젝트 이름(project1)과 클래스 이름(class1)을 제공합니다. 시작하기 전에 먼저 우리 프로그램에 매우 유용한 Microsoft ActiveX Data Object 2.0 Library가 있는지 확인하십시오. 메뉴에서 "프로젝트"를 선택한 다음 거기에서 "참조"를 선택하면 "참조" 창이 나타나고 Microsoft ActiveX Data Object 2.0 Library를 선택합니다.
이제 우리는 자체 프로젝트(project1)와 클래스 이름(class1)을 갖게 되었습니다. 앞으로 ASP 코드에서 이 구성 요소를 참조하기 위해 해당 이름을 사용할 것입니다. ASP에서는 다음과 같이 인용합니다.
Set ObjReference = Server.CreateObject("ProjectName.ClassName")
클래스에서 ASP 메서드를 사용하려면 이 클래스에 초기화 및 종료 함수를 작성해야 합니다. 다음 코드를 입력하세요: 프로그램 목록에
Class1.cls의 Private Sub Class_Initialize() 및 Private Sub Class_Terminate()는
ASP 코드의 주요 기능을 동적 링크 라이브러리(.dll)로 만들어 ASP 소스 코드를 부분적으로 숨깁니다. 예: 프로그램 목록의 Global.bas 및 Class1.cls에 입력된 코드(코드의 주요 기능은 데이터베이스의 레코드를 검색하여 표시하는 것입니다).
파일 선택 → Article.dll 생성 → VB의 드롭다운 메뉴에서 저장할 디렉터리를 선택합니다. item.dll을 찾아 시스템 디스크의 system32 폴더에 복사합니다. 마지막 단계는 DLL 파일을 등록하는 것입니다. 시작 메뉴에서 실행을 선택하고 regsvr32 c:winntsystem32article.dll을 입력합니다.
3.
프로그램 목록 Global.bas의 코드:
Public objContext As ObjectContext
Public Application As ASPTypeLibrary.Application
Public Server as ASPTypeLibrary.Server
Public Session As ASPTypeLibrary.Session
Public Response As ASPTypeLibrary.Response
Public Request As ASPTypeLibrary.Request
Class1.cls의 코드:
Private Sub Class_Initialize()
오류 시 재개 다음
Set objContext = GetObjectContext
Set Application = objContext.Item("Application")
Set Server = objContext.Item("Server")
Set Session = objContext.Item("Session")
Set Request = objContext .Item("요청")
Set Response = objContext.Item("응답")
End Sub
Private Sub Class_Terminate()
오류 시 재개 다음
설정 애플리케이션 = 없음
설정 서버 = 없음 설정
세션 = 없음
설정 요청 = 없음
설정 응답 = 없음
설정 objContext = 없음
End Sub
Public Sub AspClassInit()
On Error GoTo Err
Set conn = Server.CreateObject("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("Article .mdb")
conn.Open strcon
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "아티클 ID별로 기사 순서에서 * 선택"
rs.Open sql, conn, 1, 1
Response.Write "<html> " & vbCrLf
응답."<head>" 및 vbCrLf 쓰기
Response.Write "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">" & vbCrLf
Response.Write "<title>기사 관리 시스템-CSSTUDIO</title>" & vbCrLf
Response.Write "</head>" & vbCrLf
Response.Write "<body bgcolor=""#FFFFFF"" topmargin=""0"">" & vbCrLf
Response.Write "<table width=""100%"" border=""0"" cellpadding=""2"" cellpacing=""0"">" & vbCrLf
Response.Write " <tr>" & vbCrLf
Response.Write " <td width=""742"" height=""20"">기사 제목</td>" & vbCrLf
Response.Write " <td width=""90"">클릭</td>" & vbCrLf
Response.Write " <td width=""145"">날짜 추가</td>" & vbCrLf
Response.Write " </tr>" & vbCrLf
Response.Write "</table>" & vbCrLf
rs.EOF 및 행이 아닌 경우 < rs.PageSize
Response.Write "<table width=""100%"" border=""0"" cellpacing=""0"" cellpadding=""0"">" & vbCrLf
Response.Write " <tr>" & vbCrLf
Response.Write " <td width=""747"" height=""20"">☆<a href=""view.asp?id="
Response.Write rs("ArticleID")
Response.Write """>" & vbCrLf
응답.쓰기 " "
Response.Write rs("제목")
Response.Write "</a></td>" & vbCrLf
응답.쓰기 " <td width=""94"">"
응답.쓰기 rs("클릭")
Response.Write "</td>" & vbCrLf
응답.쓰기 " <td width=""148"">"
Response.Write rs("날짜 추가")
Response.Write "</td>" & vbCrLf
Response.Write " </tr>" & vbCrLf
Response.Write "</table>" & vbCrLf
rs.이동다음
향하게 하다
Response.Write "</body>" & vbCrLf
Response.Write "</html>" & vbCrLf
rs.Close
Set rs = 아무것도 없음
conn.Close
Set conn = 아무것도
Exit Sub
오류:
Err.Number = -13572468이면 Sub 종료
다음
Sub
재개
Article.dll을 사용한 후 index.asp의 코드:
<%Dim AspTransBuilderObject
Set AspTransBuilderObject = Server.CreateObject("article.Class1")
AspTransBuilderObject.AspClassInit
Set AspTransBuilderObject = Nothing%>
Article.dll을 사용하기 전에 index.asp에 코드를 입력하세요.
<% Set conn=Server.CreateObject("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("Article.mdb")
conn.Open strcon %>
<% Set rs = Server.CreateObject ("ADODB.Recordset")
sql="select * from Article order by ArticleID desc"
rs.Open sql, Conn,1,1 %>
<html>
<머리>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>글 관리 시스템-CSSTUDIO</title>
</head>
<body bgcolor="#FFFFFF" topmargin="0">
<테이블 너비="100%" border="0" cellpadding="2"
셀 간격="0">
<tr>
<td width="742" height="20">기사 제목</td>
<td width="90">클릭</td>
<td width="145">날짜 추가</td>
</tr>
</table>
<% Rs.Eof 및 행이 아닌 경우<Rs.PageSize %>
<테이블 너비="100%" 경계="0" 셀 간격="0"
셀패딩="0">
<tr>
<td width="747" height="20">☆<a href="view.asp?id=<%
= rs("문서 ID") %>">
<% =rs("제목") %></a></td>
<td width="94"><% = rs("click") %></td>
<td width="148"><% = rs("추가된 날짜") %></td>
</tr>
</table>
<% Rs.MoveNext
웬드 %>
</body>
</html>
<% RS.닫기
rs=아무것도 설정하지 않음
연결 닫기
conn=아무것도 설정하지 않음 %>
4. 결론
이 코드는 서버 측에서 실행되기 때문에 클라이언트는 아무것도 설치할 필요가 없습니다. 이는 ActiveX DLL을 사용하여 달성할 수 있는 작업의 작은 예일 뿐입니다. 더 큰 구성 요소를 직접 작성할 수 있으며 VB에서 많은 컨트롤을 사용할 수도 있습니다. 우리 프로그램의 기능을 확장하기 위해 구성 요소를 사용합시다. 또한 중국 사람들로부터 더 많은 구성 요소를 볼 수 있기를 바랍니다. 이 글이 출발점이 되기를 바랍니다.