有這樣乙個需求,當客戶輸入卡號,查詢出客戶的金額,如果金客大於等於1000,提示詢問客戶是否對帳,如果客戶選擇對帳,就改對客戶資料進行對帳操作(其實就是改丟這個客戶的對帳標誌),前提是在b/s架構下實現這個功能。
當看到這個需求時,先分解一下,來弄清資料的層次和操作的層次。
首先資料肯定是在伺服器端存放,客戶端需要的資料都需要從服務端得到。操作層次是客戶先把卡號送到服務端,讓服務判斷使用者金客是否大於等於1000,如果不滿足條件,就向客戶端提示使用者金客不足1000,不能對帳,如果滿足條件,就向客戶端詢問使用者是否對帳,如果客戶選擇確定對帳,就讓服務端更新資料標誌,如果客戶選擇不對帳,流程就此完結。
現在從技術角度分析一下這個過程,b/s架構是基於http協議,這個協議的特點是b端有請求,s端才有回應,一問一答的形式,當然不問,也就不答。現在就基於http來考慮一下,當客戶端提交卡號時,是客戶端的第一次請求;服務端得到卡號從資料庫中得到金額,然後跟據金額是否大於等於1000來向使用者傳送不同的請求,如果客戶端大於等於1000,向客戶端發的應答是帶有詢問提示框的,並有二次請求**,如果客戶金額少於1000,應答的是乙個提示金額不足的代。
提下來的焦就是怎麼在第一次應答中,帶有第二次請求的**,這裡的**是請求的**,一定是在客戶端,也當然是指令碼**了。
下面看一下**實現:
aspx**:
html xmlns="">
在aspx中用乙個hide標籤,是用來存放標誌的,在第二次客戶端提交是應用。
postpage方法是客戶端向後台提交請求的**。
c#**:
using system;
using system.collections.generic;
using system.data;
using system.data.sqlclient;
using system.web;
using system.web.ui;
using system.web.ui.webcontrols;
public partial class test : system.web.ui.page
} }
///
/// 更新資料庫,寫資料據對帳標誌
///
public void writemark()
catch
finally
} protected void sub_but_click(object sender, eventargs e)
catch
finally
//判斷金額是否大於500
if (amount > 500)
else
} }
資料庫結構:
列名資料型別
備註
id
int
編號主鍵,自動增長
number
varchar(50)
卡號
amount
float
金額
accmark
int
對帳標誌
乙個B S結構自動二次請求需求的實現
有這樣乙個需求,當客戶輸入卡號,查詢出客戶的金額,如果金客大於等於1000,提示詢問客戶是否對帳,如果客戶選擇對帳,就改對客戶資料進行對帳操作 其實就是改丟這個客戶的對帳標誌 前提是在b s架構下實現這個功能。當看到這個需求時,先分解一下,來弄清資料的層次和操作的層次。首先資料肯定是在伺服器端存放,...
乙個B S結構自動二次請求需求的實現
有這樣乙個需求,當客戶輸入卡號,查詢出客戶的金額,如果金客大於等於1000,提示詢問客戶是否對帳,如果客戶選擇對帳,就改對客戶資料進行對帳操作 其實就是改丟這個客戶的對帳標誌 前提是在b s架構下實現這個功能。當看到這個需求時,先分解一下,來弄清資料的層次和操作的層次。首先資料肯定是在伺服器端存放,...
自己手動寫乙個簡單的bs結構
拋去web框架,自己手寫乙個bs請求響應過程 自己建立乙個資料夾test,包含乙個hello.html 和乙個webserver.py 自己在html檔案裡面寫一些標籤 下面是webserver.py的主要內容 server obj.serve forever webserver.py主要是在本地啟...