導航:首頁 > 操作系統 > androidform表單提交

androidform表單提交

發布時間:2023-04-20 01:06:13

1. android客戶端如何提交表單數據給web伺服器

1.伺服器端的准備
為了完成該實例,我們需要在伺服器端做以下准備工作:
(1)我們需要在MyEclipse中創建一個Web工程,用來模擬伺服器端的Web服務,這里,我將該工程命名為了「myhttp」。
(2)修改該工程的「index.jsp」文件,添加兩個輸入框和一個提交按鈕,作為該Web工程的顯示頁面。運行Tomcat,在瀏覽器中訪問該Web工程,可以看到如圖1所示的界面。

Web工程的顯示頁面
(3)在該Web工程中,創建一個繼承自HttpServlet的LoginAction類,並實現其中的doPost()方法,用來響應圖1所示頁面的用戶操作。具體實現如下:

由上述代碼可以看出,當我們在圖1所示的頁面輸入用戶名「admin」,密碼「123」時,點擊提交按鈕,會得到「Login succeeded!」的提示信息,如圖2所示。若用戶名、密碼錯誤,則會得到「Login failed!」的提示信息。
2.客戶端實現
在Android客戶端,我們需要完成的工作是:以POST方式發送用戶名密碼到上述伺服器,並獲得伺服器的驗證信息。
我們分以下幾個步驟來完成。
2.1 UI界面
在Android工程中,我們需要完成一個簡單的UI界面,用來完成用戶名密碼的輸入、發送POST請求、顯示伺服器的驗證結果,完成後的界面如圖3所示。
在MainActivity中,我們需要獲取兩個EditText控制項的輸入,「提交」按鍵的監聽,以及伺服器驗證結果的TextView內容顯示。具體實現代碼如下:

2.2發送POST請求到伺服器
可以看到上述代碼中,我們調用了HttpUtils類的靜態方法submitPostData()完成了發送POST請求到伺服器,並將該方法的返回值(伺服器的響應結果)顯示在了TextView控制項中。

通過以上的代碼可以看出,在該方法中,其實完成了3件事:
(1)將用戶名密碼封裝成請求體,這是通過調用getRequestData()方法來實現的(後面會講到這個方法的具體實現)。
(2)設置HttpURLConnection對象的各種參數(其實是設置HTTP協議請求體的各項參數),然後通過httpURLConnection.getOutputStream()方法獲得伺服器輸出流outputStream,再使用outputStream.write()方法將請求體內容發送給伺服器。
(3)判斷伺服器的響應碼,通過httpURLConnection.getInputStream()方法獲得伺服器的響應輸入流,然後再調用dealResponseResult()方法處理伺服器的響應結果。
2.3封裝請求體
使用POST請求時,POST的參數不是放在URL字元串里,而是放在HTTP請求數據中,所以我們需要對POST的參數進行封裝。
針對該實例而言,我們發送的URL請求是:http://192.168.1.101:8080/myhttp/servlet/LoginAction,但是我們需要將POST的參數(也就是username和password)封裝到該請求中,形成如下的形式:
2.4處理響應結果
最後,我們再來看一看對伺服器返回結果的處理是怎樣的。因為在本實例中,伺服器的返回結果是字元串「Login succeeded!」或「Login failed!」,所以這里我們需要做的就是將伺服器的返回結果輸入流轉化成字元串。當然了,如果伺服器返回的是圖片,那麼,我們就需要就得到的輸入流轉化成Bitmap圖片了。如下代碼是上面代碼中用到的dealResponseResult()方法的具體實現。
2.5運行效果

2. 為什麼form表單提交的數據 後台只接收到了一個

這里只介紹htt方面。網路請求方式可分為get請求,post兩種請求方式,GET方式在進行數據請求時,會把數據附加到URL後面傳遞給伺服器,比如常見的:http://XXX.XXX.XXX/XX.aspx?id=1,POST方式則是將請求的數據放到HTTP請求頭中,作為請求頭的一部分傳入伺服器。
所以,在進行HTTP編程前,首先要明確究竟使用的哪種方式進行數據請求的。

android中Http編程有兩種:1、HttpURLConnection;2、HttpClient

首先介紹一下HttpURLConnection方式的get請求和post請求方法:

[java] view
plainprint?

private Map<String, String> paramsValue;

String urlPath=null;// 發送地http://192.168.100.91:8080/myweb/login?username=abc&password=123

public void initData(){urlPath="http://192.168.100.91:8080/myweb/login";

paramsValue=new HashMap<String, String>();

paramsValue.put("username", "111");

paramsValue.put("password", "222");

}

private Map<String, String> paramsValue;
String urlPath=null;

// 發送地http://192.168.100.91:8080/myweb/login?username=abc&password=123
public void initData(){

urlPath="http://192.168.100.91:8080/myweb/login";
paramsValue=new HashMap<String, String>();
paramsValue.put("username", "111");
paramsValue.put("password", "222");
}
get方式發起請求:

[java] view
plainprint?

private boolean sendGETRequest(String path, Map<String, String> params) throws Exception {

boolean success=false;// StringBuilder是用來組拼請求地址和參數

StringBuilder sb = new StringBuilder();

sb.append(path).append("?");

if (params != null && params.size() != 0) {

for (Map.Entry<String, String> entry : params.entrySet()) {

// 如果請求參數中有中文,需要進行URLEncoder編碼 gbk/utf8

sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));

sb.append("&");

}

sb.deleteCharAt(sb.length() - 1);

}URL url = new URL(sb.toString());

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(20000);

conn.setRequestMethod("GET");
if (conn.getResponseCode() == 200) {

success= true;

}

if(conn!=null)

conn.disconnect();

return success;

}
private boolean sendGETRequest(String path, Map<String, String> params) throws Exception {
boolean success=false;

// StringBuilder是用來組拼請求地址和參數
StringBuilder sb = new StringBuilder();
sb.append(path).append("?");
if (params != null && params.size() != 0) {
for (Map.Entry<String, String> entry : params.entrySet()) {
// 如果請求參數中有中文,需要進行URLEncoder編碼 gbk/utf8
sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));
sb.append("&");
}
sb.deleteCharAt(sb.length() - 1);
}

URL url = new URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(20000);
conn.setRequestMethod("GET");

if (conn.getResponseCode() == 200) {
success= true;
}
if(conn!=null)
conn.disconnect();
return success;
}

3. From表單提交數據的幾種方式

1,Form表單的常用屬性
2,瀏覽器提交表單時執行步驟
3,提交方法
4,常見的幾種提交方式

enctype為 form 表單數據的編碼格式,Content-type為仔仿Http傳輸的數據的編碼格式。分清兩者

1, get: 表單數據會被 encodeURIComponent 後以參數的形式: name1=value1&name2=value2附帶在 url? 後面,再發送給伺服器,並在 url 中顯示出來
2, post: enctype 默認"application/x-www-form-urlencoded"對表單數據進行編碼,數據以鍵值對在http請求體重發送給伺服器;如果塵友enctype 屬性為"multipart/form-data",則以消息的形式發送給伺服器"

在js中定義了其它變數,需要提交的時候攜帶,這時可以不用表單直接提交(此方法念兄纖引用了jQuery插件)

4. 如何判斷form表單是否提交成功

form表單提交後,一般會彈出提交成功的字樣,如果沒有彈出,那麼很有可能沒有提交成功。輪好纖

form可臘仿以理解前台數據,如果真的想知道是否提交表格成功,那麼還可以藉助php,php可以理解為負責處理提交表格的後台。因此,要想最快知道是否提交form成功,最好就是查詢php的數據。

5. form 表單的提交按鈕怎麼寫

form表單的提交按鈕栗子
(備陸by三人仿纖頃行慕課豎談)

6. form表單的內容怎麼提交給一個普通action,表單中的action怎麼寫呢

form表單中action指的就是提交的URL,具體寫法如下:塵大襪
<form name="biaodan" method="post" action="index.php">
標題:<input type="text" name="title" value="">
<br>
內容:仿敏<textarea name="contents" cols="60" rows="10"></textarea>
<input type="submit"派激 value="提交">
</form>
代碼中的 action="index.php" 就是設置提交URL的,意思就是把表單提交到index.php進行處理。

7. form表單input組件的十種提交方式

1、文本

2、密碼

3、單選

4、多沒笑鎮選

5、選擇文件

6、圖片

7、隱藏組件

8、普通按鈕

9、重置按鈕

10、提交按鈕

若沒有添加升手name和value標簽的話,就無法往伺服器提交

則應該寫枯粗成如下

此時提交的話,可以加上一串參數

8. 安卓開發 怎麼避免重復提交請求

web前端數據請求或者表單提交往往通過對dom的點擊事件來操作,但是往往因為認為點擊過快(少年手速挺快的嘛),或者因為響應等待使得用戶誤人為沒操作而重復很多次點擊,造成表單數據的連續重復提交,造成用戶體檢的不好,甚至影響到整個系統的安全性。而前端的防治重復提交至少很有效的防治了人為正常操作下的很多不必要麻煩。下面就來講講如何有效避免前端的表單重復提交 表單提交有以下幾種方式: <form name=」form」 method=」post」 action=」#"> <input type=」submit」 name=」submit」 value=」提交"> </form> 另外,還有一種常用的方法是使用圖片: 代碼如下: <form name=」form」 method=」post」 action=」# "> <input type=」image」 name=」submit」 src=」btnSubmit.jpg」> </form> 第三種是使用鏈接來提交表單,用到了javascript的DOM模型: 代碼如下: <form name=」form」 method=」post」 action=」#」> <a href=」javascript:form.submit();」陸槐粗>提交</a> </form> 實際上這一種是通過js 進行提交。可以理解成 $("form").find("a").click(function(){ $("form").submit(); }); 第一種和第二種可以用js來: $("input[type='submit']").click(function(){ $("form").submit(); }); $("input[name='submit']").click(function(){ $("form").submit(); }); 總之,都是對form進行提交,當然還有出了表單提交還有些請求也要防治重復,比如響應某個事件的ajax請求(提交早鎮數據) $.ajax({ url: url, type: "post", data: data, success: function (data) { callback; } }); 那麼前面這些提交和請求在網路和性能因素上導致不能及時網路響應並且在事件多次響應時造成的重復,除非在提交響應完成前的點擊(觸發事件)視為無明數效,等當前響應完了再去響應下一個請求 如果是表單按鈕我們可以這樣在點擊後將按鈕disabled掉 $("input[type='submit']").click(function(){ $(this).attr("disabled",true); $("form").submit(); }); 按道理來說,將點擊後將按鈕disabled設為true時按鈕就不能點擊了那麼第二次以後點擊就無效了,但這樣做你會發現同時第一次點擊的表單也無法正常提交了(好像是h5的標准後才不行的,無論怎樣h5標準的瀏覽器我試了試都不行),看來是disabled影響了表單的提交,那麼先提交後disabled看行不行 $("input[type='submit']").click(function(){ $("form").submit(); $(this).attr("disabled",true); }); 實驗結果 ,這樣也不行,我們不能猜想submit()回調在click函數最後執行並且.submit()函數內部應該對disabel做了判斷(假設這是瀏覽器內部機制原理),反正在當前這個交互周期里disabled了就不能submit 那麼我們可以拋開disabled用代碼邏輯來防治重復 $("input[type='submit']").click(function(){ if(!$(this)[0].repeat){ $(this)[0].repeat=true; $("form").submit(); } }); 在當前點擊的按鈕如果沒有repeat的話就進入提交並且設置個值為true的repeat屬性,當第二次進來的時候發現有這個屬性就不提交,看似這樣的邏輯會防治重復提交了,但是事實永遠都是殘酷的! 是的,當點擊過快的時候還是會重復提交,這是因為,如果click里沒執行submit的時候html默認的type=submit 的input點擊操作會提交表單,舉個完整的例子 <form name=」form」 method=」post」 action=」#"> <input type=」submit」 name=」submit」 value=」提交"> </form> <form name=」form」 method=」post」 action=」#"> <input type=」submit」 name=」submit」 value=」提交"> </form> $("input[type='submit']").click(function(){ console.log("here is click too!"); }); <form name=」form」 method=」post」 action=」#"> <div>提交</div> </form> $("form").find("div").click(function(){ $("form").submit(); }); 這三個代碼都是一個效果提交表單,但是!!!!!!!!!!我們發現阻止表單提交的不就是在當前交互周期(一次點擊-》響應-》回調)里,將submit按鈕disabled掉嗎,好的,少年上代碼 $("form").find("div").click(function(){ if(!$(this)[0].repeat){ $(this)[0].repeat=true; $(this).closest("form").submit(); }else{ $(this).attr("disabled",true); } }); 看到沒有,第二次點擊的時候就disabeld掉了,所以只有第一次成功,第二次的就不會提交了! 當然,如果是其他dom元素防治重復點擊那就更簡單了 $("div").click(function(){ if(!!$(this)[0].isRepeat){ return; } $(this)[0].isRepeat=1; $.ajax({ url: url, type: "post", data: data, success: function (data) { $(this)[0].isRepeat=0; callback; } }); }); 因為submit()會刷新試圖,而ajax不會,所以在回調後需要把判斷重復的那個屬性賦值為false 這是不是就更簡單?我想你會這樣認為的! 以上所述是小編給大家介紹的JS WEB 前端開發中防治重復提交的實現方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

9. 微信小程序form如何提交表單

用表單form的bindsubmit事件提交表單。

需要滿足:1輸入表單中需要有"name",沒有"name"值後台列印為空。仔如頃

2點擊的button按鈕,念陸橡槐需要設置:form-type="submit"。

index.wxml

index.js

閱讀全文

與androidform表單提交相關的資料

熱點內容
會聲會影如何壓縮視頻 瀏覽:57
閱讀app小說怎麼轉換成txt 瀏覽:65
c語言編程數字變時間 瀏覽:655
迷你編程第五天初級寶箱怎麼弄 瀏覽:839
刺激體驗服如何更新伺服器 瀏覽:934
怎麼把照片做成新的文件夾 瀏覽:466
安卓手機沒有聲音均衡器怎麼辦 瀏覽:506
吃雞國際服為什麼會伺服器匆忙 瀏覽:248
微信中如何打開定位伺服器 瀏覽:203
java並發編程書籍 瀏覽:280
android601源碼 瀏覽:788
程序員離職了還能幹嘛 瀏覽:156
少林功法pdf 瀏覽:471
安卓80版本小游戲怎麼玩 瀏覽:632
奇書pdf 瀏覽:836
伺服器的管理口有什麼用 瀏覽:643
澳洲加密資產新政策 瀏覽:157
哈利波特連接伺服器失敗什麼意思 瀏覽:234
提取手機上安裝的app並反編譯 瀏覽:966
人工智慧演算法書 瀏覽:604