导航:首页 > 操作系统 > 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表单提交相关的资料

热点内容
程序员试用期汇报问题协助怎么写 浏览:127
抖音算法到底是什么 浏览:126
哪个vlan技术对报文加密 浏览:570
单片机定时电路 浏览:672
山西平台服务器云主机 浏览:700
按摩肚脐解压视频 浏览:989
php55安装教程 浏览:137
云服务器怎么查找本机域名 浏览:22
qd123y压缩机参数 浏览:385
程序员妈妈怀孕 浏览:490
金普国际编程 浏览:537
java什么是引用类型 浏览:944
这是命令吗txt 浏览:314
支付宝android包名 浏览:154
eclipsemaven命令 浏览:68
24路服务器配什么cpu 浏览:466
压缩文件和解压文件哪个快 浏览:675
亚马逊云服务器视频通话 浏览:912
金融知识app哪个好 浏览:978
农行理财app收益在哪里 浏览:969