1. ASP에 대한 기본 지식
1. ASP는 해석 된 스크립팅 로케일 인 활성 서버 페이지의 약어입니다.
2. ASP는 Windows 운영 체제가 실행되어야하며 PWS는 9x에서 설치해야합니다.
3. ASP 및 JSP의 스크립트 태그는 <%%>이고 PHP의 경우 여러 유형으로 설정할 수 있습니다.
4. ASP의 주석 기호는 ';
5. ADD-ONS를 사용하여 ASP의 함수를 확장하십시오.
www.knowsky.com에서
예:
helloworld_1.asp
<%= 안녕하세요, world%>
효과:
안녕하세요, 세상
Helloworld_2.asp
<%
i = 1 ~ 10의 경우
응답. 안녕하세요, 세계
다음
%>
효과:
안녕하세요, 세상
안녕하세요, 세상
안녕하세요, 세상
안녕하세요, 세상
안녕하세요, 세상
안녕하세요, 세상
안녕하세요, 세상
안녕하세요, 세상
안녕하세요, 세상
안녕하세요, 세상
참고 : ASP는 정의없이 사용될 수 있습니다.
2. ASP 내장 객체 사용 :
아래의 ASP 내장 객체는 ASP 스크립트에서 구체적으로 선언하지 않고도 사용할 수 있습니다.
1. 요구:
정의 :이 객체는 브라우저에서 서버로 전송 된 요청 정보에 액세스하는 데 사용될 수 있습니다.
세트:
쿠키 : 브라우저 쿠키가 포함 된 가치
형태 : HTML 양식 필드에 값이 포함되어 있습니다
쿼리 스트링 : 쿼리 문자열이 포함 된 값
ServerVariables : 헤더 및 환경 변수에 값이 포함되어 있습니다
예:
request_url.asp
<%
'사용자 입력 및 저장 변수를 얻으십시오
user_id = request.querystring (user_id)
user_name = request.querystring (user_name)
'사용자 입력이 올바른지 판단하십시오
user_id =이면
response.write user_id는 null입니다. 확인하십시오
응답. 엔드
끝 If
user_name = 인 경우
response.write user_name은 null입니다. 확인하십시오
응답. 엔드
끝 If
'인쇄 변수
response.write user_id & <br>
response.write user_name
%>
효과:
http://10.1.43.238/course/request_url.asp?user_name=j에 액세스 할 때 :
user_id는 null입니다. 확인하십시오
http://10.1.43.238/course/request_url.asp?user_name=j&user_id=my_id에 액세스 할 때 :
my_id
J.
생각 : 변수는 URL에서 어떻게 전달되고 ASP 페이지에서 얻을 수 있습니까?
request_form.htm
<스타일 유형 = 텍스트/CSS>
<!-
.input {back : 조지아; 글꼴 크기 : 9pt; 컬러 : Midnightblue;}
A : 링크 {색상 : #1B629C;
A : hover {컬러 : #ff6600;
A : 방문 {Text-Decoration : None}
->
</스타일>
<centre>
<양식 이름 = 코스 동작 = request_form.asp 메서드 = post>
user_id : <입력 유형 = 텍스트 이름 = user_id maxlength = 20 class = input> <br> <br>
user_name : <입력 유형 = 텍스트 이름 = user_name maxlength = 30 class = input>
</form>
<br> <br>
<a href = javaScript : document.course.submit ();> 제출 </a>
</센터>
request_form.asp
<%
'사용자 입력 및 저장 변수를 얻으십시오
user_id = request.form (user_id)
user_name = request.form (user_name)
'사용자 입력이 올바른지 판단하십시오
user_id =이면
response.write user_id는 null입니다. 확인하십시오
응답. 엔드
끝 If
user_name = 인 경우
response.write user_name은 null입니다. 확인하십시오
응답. 엔드
끝 If
'인쇄 변수
response.write user_id & <br>
response.write user_name
%>
참고 : 소스 코드에서 양식, request_form.asp 및 request_url.asp의 조치 포인팅의 차이점은 무엇입니까?
2. 응답:
정의 : 정보를 브라우저로 전송 하고이 개체를 사용하여 스크립트에서 출력을 브라우저로 보냅니다.
세트:
쿠키 : 브라우저에 쿠키를 추가하십시오
방법:
끝 : 스크립트 처리를 종료하십시오
리디렉션 : 브라우저를 새 페이지로 부팅하십시오
쓰기 : 브라우저에 문자열을 보냅니다
재산:
버퍼 : ASP를 캐시합니다
CacheControl : 캐시는 프록시 서버에 의해 제어됩니다
ContentType : 응답의 내용 유형을 지정합니다
만료 : 브라우저는 상대 시간을 사용하여 캐시를 제어합니다
expripersabsolute : 브라우저는 절대 시간을 사용하여 캐시를 제어합니다
예:
Response_Redirect.asp
<%
'구글로 가서 살펴보십시오
Response.Redirect http://www2.google.com
응답. 엔드
%>
응답 _cookies.asp
<%
'쿠키를 설정하고 읽으십시오
응답 .cookies (time_now) = now ()
response.write request.cookies (time_now)
%>
효과:
http://10.1.43.238/course/response_cookies.asp에 액세스 할 때 :
2002-9-1 16:20:40
응답 _buffer.asp
<%'response.buffer = true%>
<a href = a> a </a>
<%response.redirect request_form.htm%>
효과:
①. IIS의 버퍼링 기능이 꺼지면이 페이지에 액세스하는 동안 오류가 발생했습니다.
에이
응답 객체 오류 'ASP 0156 : 80004005'
헤더 잘못
/course/response_buffer.asp, 3 행
HTTP 헤더는 클라이언트 브라우저에 기록되었습니다. HTTP 헤더의 모든 수정은 페이지 컨텐츠가 작성되기 전에 있어야합니다.
②. IIS의 버퍼링 기능이 꺼지고 파일의 첫 번째 줄에 대한 주석이 제거되면 페이지 리디렉션이 성공합니다.
③. IIS의 버퍼링 기능이 켜지면 파일의 첫 번째 줄에 대한 주석이 제거되었는지 여부에 관계없이 페이지 리디렉션이 성공합니다.
3. 섬기는 사람
정의 : 서버에서 다른 엔티티 기능을 사용할 수 있으며, 예를 들어 시간이 도착하기 전에 스크립트 실행 시간을 제어하는 것과 같은 다른 엔티티 기능을 사용할 수 있습니다. 다른 객체를 만드는 데 사용될 수도 있습니다.
방법:
CreateObject : 객체 인스턴스를 만듭니다
htmlencode : 특수 HTML 문자를 사용하도록 문자열을 변환하십시오
Mappath : 가상 경로를 물리적 경로로 변환합니다
urlencode : 문자열을 URL 인코딩으로 변환합니다
ScriptTimeout : 종료 전에 스크립트를 실행할 수있는 초 수
예:
server_htmlencode.asp
<%
'html encode
response.write server.htmlencode (atime_now)
%>
효과:
atime_now
소스 파일을 볼 때는 다음과 같이 나타납니다
생각 : Atime_now와 같은 효과가없는 이유는 무엇입니까? 소스 파일에 무슨 문제가 있습니까?
server_mappath.asp
<%
'Mappath
response.write server.mappath (server_mappath.asp)
%>
효과:
g : /asp_www/test/course/server_mapath.asp
생각 : 사이트의 루트 디렉토리로 실제 경로를 얻는 방법은 무엇입니까? 디렉토리로가는 실제 경로를 얻는 방법은 무엇입니까?
server_urlencode.asp
<%
'URL 인코딩
response.write server.urlencode (a/time_now)
%>
효과:
%5ctime%5fnow
4. 애플리케이션
정의 : 예를 들어 사용자가 공유하는 응용 프로그램 정보를 저장하고 읽는 데 사용됩니다.
방법:
잠금 : 다른 사용자가 응용 프로그램 세트에 액세스하지 못하도록합니다
잠금 해제 : 다른 사용자가 응용 프로그램 세트에 액세스 할 수 있습니다
이벤트:
Onend : 네트워크 서버를 종료하고 Global.asa 파일을 변경하여 트리거
onstart : 응용 프로그램의 웹 페이지 첫 번째 응용 프로그램에 의해 트리거되었습니다.
예:
application_counter.asp
<%
'응용 프로그램을 사용하여 만든 간단한 카운터
application.lock
응용 프로그램 (클릭) = 응용 프로그램 (클릭) +1
application.unlock
응답.이 사이트의 첫 번째 & 응용 프로그램 (클릭) 및 방문자입니다!
response.write <br> <br> 당신은 & request.servervaribles (remote_addr)입니다.
%>
효과:
당신은이 사이트의 첫 방문자입니다!
당신은 10.1.43.238입니다
생각 :이 예에서 잠금 및 잠금 해제 기능은 무엇입니까?
5. 세션
정의 : 사용자 액세스 정보를 웹 사이트에 저장하는 것과 같은 특정 사용자 대화 정보를 저장 및 읽고 서버가 다시 시작된 후에 정보가 손실됩니다.
방법:
포기 : 현재 페이지를 처리 한 후 사용자 세션을 종료하십시오.
재산:
시간 초과 : 사용자 세션 지속 시간 (분)
이벤트:
Onend : 외부 세션 타임 아웃 시간, 사용자는 더 이상 페이지가 이벤트를 트리거하기 위해 페이지에 적용되지 않습니다.
onstart : 웹 페이지에 대한 사용자의 첫 번째 응용 프로그램에 의해 트리거되었습니다.
예:
session_counter.asp
<%
'세션을 사용하여 만든 간단한 카운터
세션 (클릭) = 세션 (클릭) +1
Response.Write 귀하는이 사이트 및 세션의 첫 방문자입니다 (CLICKS) &!
response.write <br> <br> 당신은 & request.servervaribles (remote_addr)입니다.
%>
효과:
당신은이 사이트의 첫 방문자입니다!
당신은 10.1.43.238입니다
생각 : 세션과 응용 프로그램 모두 계산할 수 있기 때문에 그들 사이의 차이점은 무엇입니까? 100 이상을 얻으려면 다시 계산을 시작하는 방법은 무엇입니까?
3. ASP를 사용하여 데이터베이스를 작동하십시오.
1. ODBC 또는 OLE을 통한 연결의 차이점은?
이제 데이터베이스에 연결하는 두 가지 방법이 있습니다. 한편, ODBC를 사용하여 연결을 생성 할 수 있으며, 이는 ODBC 드라이브가있는 데이터베이스와 호환됩니다 (즉, 기본적으로 시장의 모든 데이터베이스).
어떤 공급자를 사용해야합니까? 데이터에 대한보다 효율적인 액세스를 제공하므로 가능할 때마다 원래 OLE DB 제공 업체를 사용하십시오. Microsoft는 ODBC 표준을 OLE DB로 점차 교체하고 있으며 Original OLE DB 제공 업체없이 ODBC를 사용해야합니다.
⑴. ODBC를 사용하여 SQL Server에 연결하십시오.
①. ODBC를 구성합니다
②. 연결 코드 :
conn_odbc.asp
<%
set conn = server.createobject (adodb.connection)
'conn.open dsn = course_dsn; uid = course_user; pwd = course_password; database = course
Conn.Open Course_dsn, Course_user, Course_password
%>
참고 : MyDSN을 구성하면 기본 데이터베이스가 코스로 지정되면 위의 코드가 동일합니다. 전제는 Course_user 가이 데이터베이스에 대한 운영 권한이 있다는 것입니다).
⑵. OLE을 사용하여 SQL Server에 연결하십시오.
conn_ole.asp
<%
set conn = server.createobject (adodb.connection)
Conn.open 제공자 = SQLOLEDB; 데이터 소스 = 10.1.43.238,2433;
%>
2. 작업 데이터베이스 : 연결 및 레코드 세트
연결 및 레코드 세트를 사용하여 데이터베이스를 작동하거나 연결을 사용하여 데이터베이스를 작동하십시오.
예:
⑴. 연결 및 레코드 세트를 사용하여 데이터베이스를 함께 작동하십시오
use_db_1.asp
<%
conn = server.createobject (adodb.connection) '데이터베이스에 연결하는 객체를 만듭니다
Conn.open Course_dsn, Course_user, Course_password '이 개체를 사용하여 데이터베이스에 연결하십시오.
rs = server.createobject (adodb.recordset) 'set recordset 객체를 작성하십시오
rs. open select * from user_info, conn, 1,1 '레코드 세트 객체를 사용하여 데이터베이스 열기
rs.recordCount> 0이면 레코드가 있으면
response.write user_iduser_name <br>
i = 1 ~ rs.recordCount '루프의 경우 모든 레코드를 읽습니다
응답. rs (id) && rs (user_name) & <br> write
'출력 레코드 필드 브라우저
rs.movenext '포인터가 한 줄을 아래로 이동합니다
rs.eof 인 경우 레코드 세트의 하단에 도달하면 루프를 종료합니다.
다음
끝 If
%>
효과:
user_iduser_name
1AHYI
3 검사
⑵. 연결을 사용하여 데이터베이스를 작동합니다.
use_db_2.asp
<%
conn = server.createobject (adodb.connection) '데이터베이스에 연결하는 객체를 만듭니다
Conn.open Course_dsn, Course_user, Course_password '이 개체를 사용하여 데이터베이스에 연결하십시오.
conn.execute user_info에서 삭제합니다
%>
효과:
user_info 테이블의 모든 데이터가 삭제됩니다
생각 : 두 방법 사이에 차이가 있습니까? 그들은 어떤 경우에 그들이 사용됩니까?
3. 거래, 저장된 절차 및보기를 사용하는 방법은 무엇입니까?
⑴. 저장된 절차 사용
①. 저장된 절차를 정의합니다
프로 시저 작성 [output_1]
@SID int 출력
처럼
@sid = 2를 설정하십시오
프로 시저 작성 [return_1]
(@user_name varchar (40),@password varchar (20))
처럼
존재하는 경우 (user_name =@user_name 및 password =@password에서 user_info에서 id를 선택하십시오)
반환 1
또 다른
반환 0
프로 시저 작성 [user_info_1]
(@user_name varchar (40),@password varchar (20))
처럼
user_name =@user_name 및 password =@password에서 user_info에서 id를 선택하십시오
프로 시저 작성 [user_info_2]
(@user_name varchar (40),@password varchar (20))
처럼
xact_abort를 켜십시오
거래를 시작하십시오
user_info user_name =@user_name 및 password =@password에서 삭제합니다
거래를 커밋합니다
xact_abort를 설정하십시오
절차 [user_info_3] AS를 작성하십시오
user_info에서 *를 선택하십시오
②. ASP에서 호출되었습니다
use_proc.asp
<!-#include virtual =/adovbs.inc->
<%
set conn = server.createobject (adodb.connection)
Conn.Open Course_dsn, Course_user, Course_password
'2 개의 입력 매개 변수와 레코드 세트를 사용하여 레코드 세트가있는 통화 저장 절차
'절차 만들기 [user_info_1]
'(@user_name varchar (40),@password varchar (20))
'처럼
'user_name =@user_name 및 password =@password에서'user_info에서 id를 선택하십시오
응답. 정상 호출 방법을 작성하십시오 : <br>
set rs = server.createobject (adodb.recordset)
sql = user_info_1 '& request.querystring (user_name) &', '& request.querystring (password) &'
Rs. Open SQL, Conn, 1,1
응답. rs (id) & <br>
Rs.Close
'입력 매개 변수없이 저장된 프로 시저를 호출하려면 RecordSet을 사용하고 RecordSet을 반환하면 RecordCount 및 기타 속성을 사용할 수 있습니다.
'절차를 만들어 [user_info_3] AS를 작성하십시오
'select * from user_info
response.write <br> 레코드 세트를 반환하고 RecordCount 및 기타 속성을 사용할 수 있습니다.
sql = exec user_info_3
Rs. Open SQL, Conn, 1,1
i = 1 ~ rs.recordCount의 경우
response.write <br> & rs (user_name)
rs.movenext
다음
Rs.Close
RS = 아무것도 설정하지 않습니다
'명령을 사용하여 출력 매개 변수가있는 저장 프로 시저를 호출하십시오
'절차 만들기 [output_1]
'@sid int 출력
'처럼
' @sid = 2 세트
응답 <br> <br> 출력 매개 변수가 포함 된 저장된 절차 : <br>
cmd = server.createobject (adodb.command) set
cmd.activeconnection = conn
cmd.commandText = output_1
cmd.parameters.append cmd.createparameter (@sid, adinteger, adparamoutput)
CMD (@SID) = 10
cmd.execute ()
bbb = cmd (@sid)
응답. bbb & <br>
CMD = 아무것도 설정하지 않습니다
'두 개의 입력 매개 변수와 반환 값으로 저장된 프로 시저를 호출하려면 명령 사용
'절차 만들기 [return_1]
'(@user_name varchar (40))
'처럼
'존재하는 경우 (user_info user_name =@user_name)에서 id를 선택하십시오)
'반환 1
'또 다른
'반환 0
응답 <br> 두 개의 입력 매개 변수와 반환 값으로 저장된 절차 호출 : <br>
cmd = server.createobject (adodb.command) set
cmd.activeconnection = conn
cmd.commandtype = adcmdstordproc
cmd.commandText = return_1
cmd.parameters.append cmd.createparameter (@return_value, adinteger, adparamreturnvalue)
cmd.parameters.append cmd.createparameter (@user_name, advarchar, adparaminput, 40)
cmd.parameters.capend cmd.createparameter (@password, advarchar, adparaminput, 20)
cmd (@user_name) = tuth
CMD (@Password) = yyuyu
cmd.execute ()
rrr = cmd (@return_value)
응답. rrr
CMD = 아무것도 설정하지 않습니다
conn.close
Conn = 아무것도 설정하지 않습니다
%>
효과:
http://10.1.43.238/course/use_proc.asp?user_name=ahyi&password=tt를 방문하면 다음이 나타납니다
일반적인 통화 방법 :
12
레코드 세트로 돌아 가면 RecordCount 및 기타 속성을 사용할 수 있습니다.
아하이
테트
Tuth
출력 매개 변수가 포함 된 통화 저장 절차 :
2
두 개의 입력 매개 변수와 리턴 값으로 저장된 절차를 호출하십시오.
1
참고 : 저장된 절차에 매개 변수가 없으면 SQL 문은 직접 저장 프로 시저 이름이며, 하나의 매개 변수는 저장된 프로 시저 이름 매개 변수가있는 경우 저장된 프로 시저 이름 매개 변수 1, 매개 변수 2, .. ., 매개 변수 n; SQL 문에 exec를 추가하면 반환 된 레코드 세트에서 RecordCount와 같은 속성을 사용할 수 있습니다. .
⑵. 트랜잭션 처리를 사용하십시오
①. ASP 임베디드 트랜잭션 지원
예:
use_transaction_1.asp
<%
'ASP에서 트랜잭션 사용
set conn = server.createobject (adodb.connection)
Conn.Open Course_dsn, Course_user, Course_password
Conn.BeginTrans'Start 거래
sql = user_info에서 삭제합니다
set rs = server.createobject (adodb.recordset)
Rs. Open SQL, Conn, 3,3
conn.errors.count> 0 인 경우 오류가 있습니다
Conn.RollbackTrans의 롤백
RS = 아무것도 설정하지 않습니다
conn.close
Conn = 아무것도 설정하지 않습니다
응답. 트랜잭션이 실패하고 수정되기 전에 주로 롤백되었습니다!
응답. 엔드
또 다른
Conn.CommitTrans의 커밋 거래
RS = 아무것도 설정하지 않습니다
conn.close
Conn = 아무것도 설정하지 않습니다
응답. 트랜잭션이 성공했습니다!
응답. 엔드
끝 If
%>
②. 데이터베이스 수준 트랜잭션
나. 저장된 절차를 만듭니다
프로 시저 작성 [user_info_2]
(@user_name varchar (40),@password varchar (20))
처럼
xact_abort를 켜십시오
거래를 시작하십시오
user_info user_name =@user_name 및 password =@password에서 삭제합니다
거래를 커밋합니다
xact_abort를 설정하십시오
II. ASP에서 호출되었습니다
use_transaction_2.asp
<%
set conn = server.createobject (adodb.connection)
Conn.Open Course_dsn, Course_user, Course_password
sql = user_info_2 '& request.querystring (user_name) &', '& request.querystring (password) &'
set rs = server.createobject (adodb.recordset)
Rs. Open SQL, Conn, 1,1
RS = 아무것도 설정하지 않습니다
conn.close
Conn = 아무것도 설정하지 않습니다
%>
토론 : 두 방법의 장점과 단점?
⑶. 보기 사용
데이터베이스에서보기를 정의한 후 테이블을 사용하는 것처럼 ASP의보기를 사용하십시오.
4. 데이터베이스 페이징의 예
db_page.asp
<%
다음에 오류가 재개됩니다
conn = server.createobject (adodb.connection) '데이터베이스에 연결하는 객체를 만듭니다
Conn.open Course_dsn, Course_user, Course_password '이 개체를 사용하여 데이터베이스에 연결하십시오.
set rs = server.createobject (adodb.recordset)
sql = select *에서 us user_info order by id desc
Rs. Open SQL, Conn, 1,1
rs.recordCount> 0이면 레코드가 있으면
Rs.Pagesize = 2'A 페이지 당 최대 2 개의 레코드가 표시됩니다
'URL에서 페이지를 표시 할 페이지를 가져옵니다
page = cint (요청 (페이지))
'페이지 매개 변수 예외 처리
page = page = 1 인 경우
Page <1 인 경우 페이지 = 1입니다
page> = rs.pagecount 인 경우 page = rs.pagecount
rs.absolutepage = page' page '현재 페이지는 페이지 매개 변수로 지정된 페이지입니다.
i = 1 ~ rs.pagesize'Cycle의 경우 현재 페이지의 레코드는 페이지 크기 매개 변수의 크기에 따라
response.write user_id : & rs (id) & <br>
response.write user_name : & rs (user_name) & <br> <br>
rs.movenext의 레코드 포인터가 아래로 이동합니다
rs.eof 인 경우 레코드 세트의 하단에 도달하면 루프를 종료합니다.
다음
끝 If
'페이지 페이지 회전 버튼 표시
Page> 1 인 경우
response.write <a href = & request.servervariables (document_name) &? page = 1> page 1 </a>
response.write <a href = & request.servervariables (document_name) &? page = & (page-1) &> 이전 페이지 </a>
끝 If
Page <> rs.pagecount 인 경우
response.write <a href = & request.servervariables (document_name) &? page = & (page+1) &> 다음 페이지 </a>
response.write <a href = & request.servervariables (document_name) &? page = & rs.pagecount &> 마지막 페이지 </a>
끝 If
응답. 페이지 번호 : & page &/& rs.pagecount
'물체를 닫고 메모리를 해제하십시오
Rs.Close
RS = 아무것도 설정하지 않습니다
conn.close
Conn = 아무것도 설정하지 않습니다
%>
생각 : 페이징 프로세스 중에 어떤 추가 속성이 사용됩니까?