2011年11月24日 星期四

關於 Response 和 Request

◎以上程式範例AspNet10.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

Partial Class AspNET10
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ' ===== 關於 Response 和 Request =====
        ' ◎Response,Server給Client的回應,程式開發的第一支通常都是
        ' response: hello the world
        ' Response.Write,很方便,但多拿來偵錯
        ' 因它在執行的時候是寫在整個HTML的最外面的
        ' 所以無法「設計」它在畫面上的位置,影響美觀

        ' ◎Request,Client對Server的請求
        ' 當有一個資料要傳遞給server來處理時,有三個比較常用的Request方式:
        ' QueryString、Session、Form Submit…這裡討論的是QueryString
        ' QueryString 很便利, 但也同時是被攻擊的主要來源
        ' 因為它是露在網址列上的
        ' 所以有人建議不要使用傳統的QueryString方式
        ' 要嘛就用MD5加密這個request,要嘛就改用session
        ' 額外一提:google上搜尋功能中,Requset.QueryString的內容其實不是加密, 是把字元轉成萬國碼

        ' 這裡「故意」用同一頁來作「請求」和「回應」的頁面…事實上應用上不會是同一頁面的

        If Not Page.IsPostBack Then
            Me.Label1.Text = "請在空格輸入值(文字、數字…皆可)"
            Me.Button1.Text = "傳送一個值(注意網址)"
            Me.Button2.Text = "同時傳送二個值(注意網址)"
        End If

        ' Response的使用方式,以及承接值的方式
        If Request("num") <> "" Then
            Me.Response.Write("你填入的值是:" & Request.QueryString("num"))
        End If

        If Request("num1") <> "" And Request("num2") <> "" Then
            Me.Response.Write("你填入的第一個值是:" & Request.QueryString("num1") & "</br>你填入的第二個值是:" & Request.QueryString("num2"))
        End If
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' request 傳一個值的使用方式
        Response.Redirect("~/AspNET10.aspx?num=" & Me.TextBox1.Text)
    End Sub

    Protected Sub Button2_Click(sender As Object, e As System.EventArgs) Handles Button2.Click
        ' request 傳二個值的使用方式
        Response.Redirect("~/AspNET10.aspx?num1=" & Me.TextBox2.Text & "&num2=" & Me.TextBox3.Text)
    End Sub
End Class

◎附註:說說 request 和 response

image

簡單的說,HTTP (Hyper Text Transfer Protocol) 就是一種 request 和 response 的協議,HTTP 1.0 就有的協議,即便你換了不同的文件型式 (*.html、*.asp、*.aspx) ,換了不同的瀏覽器平台,request (請求) 和 response(回應),一來一往的,始終是網路傳輸的基本協定。
image

在 request-response 流程中,包含了input元素,這個input元素就是由Client端向Server端的request請求;其次是output元素,這個output元素則是Client對Server端的回應。
image

一來一往後,交易(Transaction)就結束了,而這個內存的資料也會被清除。

當有一個資料要傳遞給server來處理時,有三個比較常用的方式:
(1)QueryString:最簡單的方式,這篇文章主要的內容
(2)Session:是在IIS下該網站目錄下運作的,所以可以跨同一個網站下所有的aspx
(3)Form Submit

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...
// Dnow Function