M0194 Web-based Programming Lanjut Session 1 

advertisement
M0194
Web-based Programming Lanjut
Session 1
 2004 Tau Yenny, SI - Binus
2
Active Server Pages (ASP)





ASP Object Model
Request Object
Response Object
Form and QueryString
ServerVariable Collection
 2004 Tau Yenny, SI - Binus
3
ASP Object Model
 2004 Tau Yenny, SI - Binus
4
ASP Objects

Request Object
Makes available to our script all the information
that the client provides when requesting a page or
submitting a form
Include :



the HTTP variables that identify the browser and the
user
the cookies that they have stored on their browser for
this domain
any values appended to the URL, either as a query
string or in HTML controls in a <FORM> section of the
page
 2004 Tau Yenny, SI - Binus
5
ASP Objects

Response Object
to access the response that we are creating to send back
to the client.
It makes available :
- to our script the HTTP variables that identify our server
and its capabilities
- information about the content we’re sending to the
browser
- any new cookies that will be stored on their browser for
this domain
Provides a series of method that we can use to create
output
 2004 Tau Yenny, SI - Binus
6
ASP Objects

Application Object
Created when the ASP DLL is loaded in response to
the first request for an ASP page.
Provides a repository for storing variables and object
references that are available to all the pages,
which any visitor can open.
 2004 Tau Yenny, SI - Binus
7
ASP Objects

Session Object
Created for each visitor when they first request an
ASP page from the Web site or Web application,
and it remains available until the default timeout
period expires.
Provides a repository for storing variables and object
references that are available only to the pages that
visitor opens during the lifetime of the session
 2004 Tau Yenny, SI - Binus
8
ASP Objects

Server Object
Provides us with a series of methods and properties
that are useful in scripting with ASP

ASPError Object
Provides a range of detailed information about the
last error that occurred in ASP.
 2004 Tau Yenny, SI - Binus
9
The ASP Request Object
The Request Object’s Collections
Collection Name
Description
ClientCertificate
A collection of the values of all the fields or entries in the client
certificate that the user presented to our server when accessing a
page or resource. Each member is read-only.
Cookies
A collection of the values of all the cookies sent from the user’s
system along with their request. Only cookies valid for the domain
containing the resource are sent to the server. Each member is readonly.
Form
A collection of the values of all the HTML control elements in the
<FORM> section that was submitted as the request, where the value
of the METHOD attribute is POST. Each member is read-only.
QueryString
A collection of all the name/value pairs appended to the URL in the
user’s request, or the values of all the HTML control elements in the
<FORM> section that was submitted as the request where the value
of the METHOD attribute is GET or the attribute is omitted. Each
member is read-only.
 2004 Tau Yenny, SI - Binus
10
The ASP Request Object
Collection Name
ServerVariables
Description
A collection of all the HTTP header values sent from the client with
their request, plus the values of several environment variables for the
Web server. Each member is read-only.
The Request Object’s Property
Property
TotalBytes
Description
Read-only. Returns the total number of bytes in the body of the
request sent by the client.
The Request Object’s Method
Method
Description
BinaryRead(count)
Retrieve count bytes of data from the client’s request when the data
is sent to the server as part of a POST request. It returns a Variant
array (or SafeArray). Cannot be used successfully if the ASP code
has already referenced the Request.Form collection. Likewise, the
Request.Form collection cannot be successfully accessed if you
have used the BinaryRead method.
 2004 Tau Yenny, SI - Binus
11
The ASP Response Object
The Response Object’s Collection
Collection Name
Cookies
Description
A collection containing the values of all the cookies that will be
sent back to the client in the current response. The collection is
write only.
The Response Object’s Properties
Property
Buffer = True | False
Description
Read/write. Boolean. Specifies if the output created by an ASP
page will be held in the IIS buffer until all of the server scripts in
the current page have been processed or until the Flush or End
method is called. It must be set before any output is sent to IIS,
including HTTP header information, so it should be the first line
of the .asp file after the <%LANGUAGE=..%> statement.
Buffering is on (True) by default in ASP 3.0, whereas it was off
(False) by default in earlier versions.
 2004 Tau Yenny, SI - Binus
12
The ASP Response Object
Property
Description
CacheControl “setting”
Read/write. String. Set this property to “Public” to allow proxy
servers to cache the page, or “Private” to prevent proxy caching
taking place.
Charset = “value”
Read/write. String. Appends the name of the character set (for
example, ISO-LATIN-7) to the HTTP Content Type header created
by the server for each response.
ContentType = “MIME-type”
Read/write. String. Specifies the HTTP content type for the
response, as a standard MIME-type (such as “text/xml” or
image/gif”). If omitted, the MIME-type “text/html” is used. The
content type tells the browser what type of content to expect.
Expires minutes
Read/write. Number. Specifies the length of time in minutes that a
page is valid for. If the user returns to the same page before it
expires, the cached version is displayed. After that period, it expires,
and will not be held in a private (user) or public (proxy) cache.
ExpiresAbsolute
#date[time]#
Read/write. Date/Time. Specifies the absolute date and time when a
page will expire and no longer be valid. If the user returns to the
same page before it expires, the cached version displayed. After
that time, it expires, and should not be held in a private (user) or
public (proxy) cache.
 2004 Tau Yenny, SI - Binus
13
The ASP Response Object
Property
Description
IsClientConnected
Read-only. Boolean. Return an indication of whether the client is
still connected to and loading the page from the server. Can be
used to end processing (with the Response.End method) if a
client moves to another page before the current one has finished
executing.
PICS (“PICS-label-string”)
Write only. String. Creates a PICS headers define the content of
the page in terms of violence, sex, bad language, etc.
Status = ”code message”
Read/Write. String. Specifies the status value and message that
will be sent to the client in the HTTP headers of the response to
indicate an error or successful processing of the page. Example
are “200 OK” and “404 Not Found”.
 2004 Tau Yenny, SI - Binus
14
The ASP Response Object
The Response Object’s Methods
Method
Description
AddHeader (“name”,
“content”)
Creates a custom HTTP header using the name and content
values and adds it to the response. Will not replace an existing
header of the same name. Once a header has been added, it
cannot be removed. Must be used before any page content (i.e.
text and HTML) is sent to the client.
AppendToLog (“string”)
Adds a string to the end of the Web server log entry for this
request when W3C Extended Log File Format is in use.
Requires at least the URI Stem value to be selected in the
Extended Properties page for the site containing the page.
BinaryWrite (SafeArray)
Writes the content of a Variant-type SafeArray to the current
HTTP output stream without any character conversion. Useful for
writing non-string information, such as binary data required by a
custom application or the bytes to make up an image file.
Clear ( )
Erases any existing buffered page content from the IIS response
buffer when Response.Buffer is True. Does not erase HTTP
response headers. Can be used to abort a partly completed page.
 2004 Tau Yenny, SI - Binus
15
The ASP Response Object
Method
Description
End ( )
Stops ASP from processing the page script and returns the
currently created content, then aborts any further processing of
this page.
Flush ( )
Sends all currently buffered page content in the IIS buffer to the
client when Response.Buffer is True. Can be used to send parts
of a long page to the client individually.
Redirect (“url”)
Instructs the browser to load the page in the string url parameter
by sending a “302 Object Moved” HTTP header in the response.
Write (“string”)
Writes the specified string to the current HTTP response stream
and IIS buffer, so that it becomes part of the returned page.
 2004 Tau Yenny, SI - Binus
16
Working with Form and QueryString
Collection

ASP collection are an array of values, can be
accessed using a text string key (not case sensitive)
or an integer index.
For example, in default.html :
1.
2.
3.
4.
5.
6.
7.
8.
<HTML>
<BODY>
<FORM action = "show_request.asp" METHOD ="POST">
FirstName : <INPUT TYPE = "TEXT" NAME = "FirstName">
LastName : <INPUT TYPE = "TEXT" NAME ="LastName">
<INPUT TYPE = "SUBMIT" VALUE = "Send">
</FORM>
</BODY>
9.
</HTML>
 2004 Tau Yenny, SI - Binus
17
Working with Form and QueryString
Collection


We can access the values by accessing the ASP Form Collection
We can also use the integer index of the control on the form. The range of
indexes starts at 1 for the 1st control defined in the HTML. This technique is
not recommended.
show_request.asp
1.
2.
3.
4.
5.
6.
7.
<HTML>
<BODY>
<%
strFirstName = Request.Form ("FirstName")
strLastName = Request.Form ("LastName")
Response.Write "Using text string key: <BR>"
Response.Write strFirstName & "<BR> " & strLastName & "<BR>"
8.
strFirstName2 = Request.Form(1)
9.
strLastName2 = Request.Form(2)
10.
Response.Write "<BR> Using index : <BR>"
11.
Response.Write strFirstName2 & "<BR> " & strLastName2
12. %>
13. </BODY>
14. </HTML>
 2004 Tau Yenny, SI - Binus
18
Working with Form and QueryString
Collection
 2004 Tau Yenny, SI - Binus
19
Working with Form and QueryString
Collection

It’s also possible to collect the entire set of values from the form into a single string
variable by just referencing the collection, and without providing a key or index.
strAllFormContent = Request.Form
If our text boxes contain the values Yos and Stefan Hideki, the Request.Form
statement will return the string:
FirstName=Yos&LastName=Stefan+Hideki
The values are provided in name/value pairs. Each name/value pair is separated
from the others with an ampersand (&) character.
1.
2.
3.
4.
5.
6.
7.
8.
<HTML>
<Body>
<%
strAllFormContent = Request.Form
Response.Write strAllFormContent
%>
</body>
</HTML>
 2004 Tau Yenny, SI - Binus
20
Working with Form and QueryString
Collection
 2004 Tau Yenny, SI - Binus
21
Iterating Through an ASP Collection

There are 2 ways to iterate through all the members of
an ASP collection.

We can using an For and integer index
For intLoop = 1 to Request.Form.Count
Response.Write Request.Form(intLoop) & “ <BR>”
Next

A better method is use the For Each.. Next construct
For Each objItem In Request.Form
Response.Write objItem & “ = “ & Request.Form(objItem) & “<BR>”
Next
 2004 Tau Yenny, SI - Binus
22
Iterating Through an ASP Collection
show_request.asp
1.
2.
3.
4.
5.
6.
7.
<HTML>
<BODY>
<%
Response.Write "Using counter : <BR>"
For intLoop = 1 to Request.Form.Count
Response.Write Request.Form(intLoop) & " <BR>"
Next
8.
Response.Write "<BR>Using For Each :<BR>"
9.
For Each objItem In Request.Form
10.
Response.Write objItem & " = " & Request.Form(objItem) & "<BR>"
11.
Next
12. %>
13. </BODY>
14. </HTML>
 2004 Tau Yenny, SI - Binus
23
Iterating Through an ASP Collection
 2004 Tau Yenny, SI - Binus
24
Multiple Value Collection Members

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1.
2.
3.
4.
5.
6.
7.
In some cases, an individual member of an ASP collection may be made up of more than
one value. This occurs when several controls have the same NAME attribute defined in the
HTML, for example:
default.html
<HTML>
<BODY>
<FORM ACTION = “show_request.asp” METHOD = “POST”>
<INPUT TYPE=“TEXT” NAME=“OtherHobby”>
<INPUT TYPE=“TEXT” NAME=“OtherHobby”>
<INPUT TYPE=“TEXT” NAME=“OtherHobby”>
<INPUT TYPE=“SUBMIT” VALUE=“Send”>
</FORM>
</BODY>
</HTML>
show_request.asp
<HTML>
<BODY>
<%
Response.Write Request.Form("OtherHobby")
%>
</BODY>
</HTML>
 2004 Tau Yenny, SI - Binus
25
Multiple Value Collection Members
 2004 Tau Yenny, SI - Binus
26
Multiple Value Collection Members

To be access individual values, we can use the rather
convoluted code :
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<HTML>
<BODY>
<%
For Each objItem In Request.Form
If Request.Form(objItem).Count > 1 Then 'If More than 1 value
Response.Write objItem & " : <BR>"
For intLoop = 1 to Request.Form(objItem).Count
Response.Write "Subkey " & intLoop & " value = " _
& Request.Form(objItem)(intLoop) & "<BR>"
Next
Else
Response.Write objItem & " = " & Request.Form(objItem) & "<BR>"
End If
Next
%>
</BODY>
</HTML>
 2004 Tau Yenny, SI - Binus
27
Multiple Value Collection Members
 2004 Tau Yenny, SI - Binus
28
Multiple Value Collection Members
1.
2.
3.
4.
5.
6.
7.
8.
9.
<HTML>
<BODY>
<FORM ACTION = "show_request.asp" METHOD = "POST">
<INPUT TYPE="SUBMIT" NAME = "btnSubmit" VALUE="Next">
<INPUT TYPE="SUBMIT" NAME = "btnSubmit" VALUE="Previous">
<INPUT TYPE="SUBMIT" NAME = "btnSubmit" VALUE="Cancel">
</FORM>
</BODY>
</HTML>
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<HTML>
<BODY>
<%
Select Case Request.Form("btnSubmit")
Case "Next"
Response.Redirect "page_3.html"
Case "Previous"
Response.Redirect "page_1.html"
Case "Cancel"
Response.Redirect "default.html"
End Select
%>
</BODY>
</HTML>
 2004 Tau Yenny, SI - Binus
29
Multiple Value Collection Members
 2004 Tau Yenny, SI - Binus
30
The Difference Between Forms and
QueryString

Append 1 or more name/value pair to the URL of the page we’re requesting, they
become the query string for the request, and are exposed to our ASP page in the
QueryString collection.

Therefore, the only way to send values to ASP from any of these actions is through the
QueryString collection, by appending them to the URL

The URL/query String combination cannot contain any spaces or other illegal
characters.
Illegal characters are those that are used to delimit parts of the URL and query string,
for example ‘/’, ‘:’, ‘?’, and ‘&’.
Spaces must be convert to ‘+’ format.
ASP Server object provides URLEncode method for handling this conversion.

The values appear in the Request.QueryString, and are accessed, in the same way as
the FORM collection examples.
The URL and query string combination :
http://localhost/ok/show_request.asp?FirstName=Yos&LastName=Stefan+Hideki
 2004 Tau Yenny, SI - Binus
31
QueryString
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<HTML>
<BODY>
<%
strFirstName = Request.QueryString ("FirstName")
strLastName = Request.QueryString ("LastName")
strAll = Request.QueryString
Response.Write "Using query string: <BR>"
Response.Write strFirstName & "<BR> " & strLastName & "<BR>"
Response.Write strAll
%>
</BODY>
</HTML>
URL and query string
 2004 Tau Yenny, SI - Binus
32
The GET and POST Methods of a
FORM

There are 2 common method for requesting a
page or resource from a Web server over
HTTP.


GET
To get the resource directly. Get is the default
method.
POST
To post values to a resource.
 2004 Tau Yenny, SI - Binus
33
The GET and POST Methods of a
FORM

Use “GET” or omit the attribute, the browser bundles
up the values in all the controls on the form into a
query string, and appends it to the URL of the page
being requested. The request is exposed through
the ASP Request.QueryString collection.

Use “POST”, the browser wraps the values up within
the HTTP headers it sends to the server, and they
are exposed to ASP via the Request.Form
collection.
 2004 Tau Yenny, SI - Binus
34
ServerVariables Collection

Contains a combination of values that represent the
HTTP headers sent from the client

Self-Referencing Pages
Detail of our Web server and path information of
the current page.
<FORM ACTION=" <% = Request.ServerVariables("PATH_INFO") %>" METHOD="POST">
The same effect is obtained with the HTTP “SCRIPT_NAME” value :
<FORM ACTION=" <% = Request.ServerVariables("SCRIPT_NAME") %>" METHOD="POST">
 2004 Tau Yenny, SI - Binus
35
Self-Referencing Pages
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<HTML>
<BODY>
<FORM ACTION=" <% = Request.ServerVariables("SCRIPT_NAME") %>"
METHOD="POST">
</FORM>
<%
strFullPath = Request.ServerVariables ("PATH_INFO")
strPathOnly = Left(strFullPath, InStrRev(strFullPath, "/"))
strNextPage = strPathOnly & "page_3.html"
Response.Write "Full Path : " & strFullPath & "<BR> "
Response.Write "Path Only : " & strPathOnly & "<BR> "
Response.Write "Next Page : " & strNextPage & "<BR><BR> "
%>
<A HREF = " <% = strNextPage %> "> Next Page </A>
</BODY>
</HTML>
 2004 Tau Yenny, SI - Binus
36
Self-Referencing Pages
 2004 Tau Yenny, SI - Binus
37
ServerVariables Collection

Detecting the Browser Version
Another useful value is the user agent string
for our visitor’s browser.
In the Detecting Browser Type page (browsertype.asp), we
are using the “HTTP_USER_AGENT” value from the
ServerVariables collection to retrieve the user agent string,
and some script to parse this and look for a manufacturer
name and browser version.
 2004 Tau Yenny, SI - Binus
38
Detecting the Browser Version
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<HTML>
<BODY>
<H1>Detecting the Browser Type</H1>
<HR width=100%>
<BR>
<%
strUA = Request.ServerVariables("HTTP_USER_AGENT")
Response.Write "The User Agent string is <B>" & strUA & " </B><P>"
If InStr(StrUA, "MSIE") Then
Response.Write "To upgrade your browser go to " _
& "<A HREF=" & chr(34) & "http://www.microsoft.com/ie/" _
& chr(34) & ">http://www.microsoft.com/ie/</A></P>"
intVersion = CInt(Mid(strUA, InStr(StrUA,"MSIE") + 5, 1))
If intVersion >=4 then
Response.Write "You can use Microsoft Dynamic HTML"
End If
14.
15.
16.
17.
18.
19.
20.
End If
%>
</BODY>
</HTML>
 2004 Tau Yenny, SI - Binus
39
Detecting the Browser Version
 2004 Tau Yenny, SI - Binus
40
ServerVariables Collection

Detecting the Browser Language
“HTTP_ACCEPT_LANGUAGE” contains a language code, which
was selected when the browser was installed or is hard-coded
into the user’s locale-specific version.
Example of language code are en-us (English, United States),
de-at (German, Austrian) and es-pe (Spanish, Peru).
A language code can also be generic and omit the dialect
identifier.
We can detect the language code and load an appropriate localespecific, language-specific or geographically-specific version of
our pages automatically.
 2004 Tau Yenny, SI - Binus
1.
2.
3.
4.
5.
6.
7.
8.
<HTML>
<BODY>
<H1>Detecting the Browser Language</H1>
<HR width=100%>
<BR>
<%
strLocale = LCase(Request.ServerVariables("HTTP_ACCEPT_LANGUAGE"))
Response.Write "The Browser Language code is <B>" & strLocale & " - "
9.
10.
11.
12.
13.
14.
15.
Select Case strLocale
Case "en-gb" : Response.Write "English, United Kingdom"
Case "en-us" : Response.Write "English, United States"
Case "es-pe" : Response.Write "Spanish, Peru"
Case "id"
: Response.Write "Indonesian"
case Else
: Response.Write "Another Language"
End Select
16.
17.
18.
19.
Response.Write "</B>"
%>
</BODY>
</HTML>
 2004 Tau Yenny, SI - Binus
41
42
ServerVariables Collection

Other Useful ServerVariables Values


Check if the visitor accessed our site through the
default port 80 or a different one.
We can query the user name if we force our
users to log on and be authenticated by our
server.


“AUTH_USER”
Return the authenticated user string.
“SERVER_NAME”
Return the server name string.
 2004 Tau Yenny, SI - Binus
43
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<HTML>
<BODY>
<H1>Detecting the Browser</H1>
<HR width=100%>
<BR>
<%
Response.Write "PORT : " & Request.ServerVariables("SERVER_PORT") & "<BR>"
If Request.ServerVariables("SERVER_PORT") = "80" Then
Response.Write "Default PORT"
Else
Response.Write "Another PORT"
End If
%>
</BODY>
</HTML>
 2004 Tau Yenny, SI - Binus
Download