表单提交和超链接请求传递参数的几种方式

article/2025/9/21 17:28:17

表单提交和超链接请求传递参数的几种方式

这段时间在使用easy-ui的datagrid,他有自己提交表单的方式,所以就整理整理页面对参数的提交方式:

注:下面代码都已经过测试。


1. HTML提交表单

HTML提交表单简单易操作,依靠在<form>标签对中的<input type='submit'>提交按钮进行请求发送和参数提交。其中form标签的post属性决定提交方式是get还是post。 
jsp代码

<form id="test" action="servlet/testServlet" method="post" name="test_form">账号:<input type="text" name="name_user" id="id_user">密码:<input type="password" name="name_pwd" id="id_pwd"><input type="submit" value="提交表单">
</form>
  • 1
  • 2
  • 3
  • 4
  • 5

servlet或者action根据name属性获取提交的参数 
java代码

String username = request.getParameter("name_user");
String password = request.getParameter("name_pwd");
  • 1
  • 2

2. HTML超链接请求

只使用html发送超链接请求的话,方式比较单一。传递参数值是被写死的,并且只能使用get方式去发送请求。如果不用javascript的话,超链接还是作为一个页面跳转按钮比较合适。 
jsp代码

<a href="servlet/TestServlet?name_user=aaa&name_pwd=bbb">超链接请求</a>
  • 1

java代码

String username = request.getParameter("name_user");
String password = request.getParameter("name_pwd");
  • 1
  • 2

3. Javascript提交表单

使用js和html提交表单的话就可以灵活很多,因为js不仅有针对页面很多的触发事件,而且可以获取到html页面元素的信息。看一下几个简单的例子。

3.1 form表单提交前触发事件

这里主要是介绍下在提交form表单之前的onsubmit事件,在很早以前学习的时候,这个事件会被作为用户输入数据校验的入口。不过仍然因为js使html页面的灵活性变高,这种前端校验用户输入的方式也不是那么唯一。 
jsp代码

<form id="test" onsubmit="test_onsubmit();">账号:<input type="text" name="name_user" id="id_user"/>密码:<input type="password" name="name_pwd" id="id_pwd"/><input type="submit" value="提交表单">
</form>
  • 1
  • 2
  • 3
  • 4
  • 5

javascript代码

function test_onsubmit(){alert("提交表单前先进入到这个js函数");//使用js获取到id为test的这个表单var frm = document.getElementById("test");//设置这个表单的提交路径   frm.action = "servlet/TestServlet";//设置这个表单提交的方式  frm.method = "post";//提交表单                   frm.submit();                        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在test_onsubmit()函数中,可以选择进行任意其他操作,包括设置post还是get方式去提交表单,或者说获取用户输入内容,对其内容进行前端校验。 
java代码

String username = request.getParameter("name_user");
String password = request.getParameter("name_pwd");
  • 1
  • 2

3.2 使用button或者超链接标签提交表单

使用button或者超链接去提交表单的话,主要是利用onclick触发事件去调用一个js函数,然后在函数中去进行表单提交。这时候就不需要<input type='submit'>标签去提交表单了。 
jsp代码

<form id="test">账号:<input type="text" name="name_user" id="id_user"/>密码:<input type="password" name="name_pwd" id="id_pwd"/>
</form><input type="button" value="input_button标签" onclick="submit_frm();">   
<button onclick="submit_frm();">button标签</button>    
<a onclick="submit_frm();" href="#">a标签</a>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注意: a标签的href属性必须设置为#,因为a标签默认会发生跳转。

javascript代码

function submit_frm(){var frm = document.getElementById("test");  frm.action = "servlet/TestServlet";  frm.method = "post";                 frm.submit();                        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

java代码

String username = request.getParameter("name_user");
String password = request.getParameter("name_pwd");
  • 1
  • 2

4. Javascript超链接请求

使用js去处理html的超链接请求时,就可以动态的设置传递参数,以及传递参数的数值。由于<a>标签请求的提交需要window.location对象,提交超链接请求仍是get方式。

注意: 直接使用js,也可以将超链接请求参数提交方式修改为post,由于jQuery中封装的要好很多,这里就不记了。点这里可以看到实现。

jsp代码

账号:<input type="text" name="name_user1" id="id_user"/>
密码:<input type="password" name="name_pwd1" id="id_pwd">
<a href="#" onclick="submit_a();">提交这两个参数的值</a>
  • 1
  • 2
  • 3

注意: a标签的href属性必须设置为#,因为a标签默认会发生跳转。

javascript代码

function submit_a(){//获取用户输入的值var username = document.getElementById("id_user").value;var password = document.getElementById("id_pwd").value;//拼接urlvar url = "servlet/TestServlet?";url += "username="+username+"&password="+password;//重新定位urlwindow.location = url;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

java代码

String username = request.getParameter("username");
String password = request.getParameter("password");
  • 1
  • 2

5. jQuery提交表单

jQuery提交表单有两种,第一种就是只提交表单中的内容,没有额外数据提交,这种比较简单。还有一种就是不仅提交表单的内容,而且增加一些额外的参数与表单内容一起提交。

5.1 只提交表单内容

jsp代码

<form id="test">账号:<input type="text" name="name_user" id="id_user"/>密码:<input type="password" name="name_pwd" id="id_pwd"/>
</form>
<button id="sub_jQuery">jQuery</button> 
  • 1
  • 2
  • 3
  • 4
  • 5

jQuery代码

$(document).ready(function(){//创建id为sub_jQuery的button的单击事件   $("#sub_jQuery").click(function(){//设置表单id为test的请求路径和方式$("#test").attr("action","servlet/TestServlet");$("#test").attr("method","post");//提交id为test的表单$("#test").submit();}); });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

注意:这里写法就很灵活,比如用bind去创建click事件,用其他的html标签触发事件,获取表单中的用户输入数据之类进行处理什么的都可以。

java代码

String username = request.getParameter("name_user");
String password = request.getParameter("name_pwd");
  • 1
  • 2

5.2 提交表单以及额外内容

这种提交方式就是所有表单提交和超链接请求中最为灵活的提交方式了,也是目前做的项目中最常见的页面提交方式。

jsp代码

<form id="test">账号:<input type="text" name="name_user" id="id_user">密码:<input type="password" name="name_pwd" id="id_pwd">
</form><p id="id_p" name="name_p">p标签中的内容</p>
<p><input type="checkbox" name="name_checkbox" value="A">A选项</p>
<p><input type="checkbox" name="name_checkbox" value="B">B选项</p>
<p><input type="checkbox" name="name_checkbox" value="C">C选项</p>
<button id="sub_jQuery">jQuery</button>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

jQuery代码

$(document).ready(function(){//创建id为sub_jQuery的button的单击事件   $("#sub_jQuery").bind("click",function(){//获取表单外的段落内容和checkbox复选框的选中值var p_value = $("#id_p").html();var check_value = [];       $("input[name='name_checkbox']:checked").each(function(){check_value.push($(this).val());});//将id为test的表单提交的input参数进行序列化var form_value = $("#test").serialize();//拼接提交的路径var url = "servlet/TestServlet";//将表单外的提交内容拼接到路径中url += "?url_p="+p_value+"&url_check="+check_value;//使用post方式提交表单以及额外的参数$.post(url,form_value);});});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

java代码

    String username = request.getParameter("name_user");String password = request.getParameter("name_pwd");String pValue = request.getParameter("url_p");String urlCheck = request.getParameter("url_check");
  • 1
  • 2
  • 3
  • 4

注意:

1. 这里写的这个小例子中,对于表单外的参数提交是靠拼接url完成的。

2. 这个checkbox主要是作为个js数组参数传递的示例,不同于在form表单中提交的checkbox,后台java获取数组的方式是:

request.getParameterValues("param_name");

然而拼接成url之后,后台获取方式变成了字符串获取,得到的是带逗号分隔的数组字符串数值,那么后台java获取只能是:

request.getParameter("param_name");

3. 在现在做的项目中,既然拼接字符串无法传递数组给后台,所以正常都传递JSON字符串。页面创建的JSON对象转化为字符串,然后后台通过JSON的解析包去解析。千万别忘了js转换JSON对象为字符串:

var json_str = JSON.stringify(json_object);

4. 针对$.post( )函数,详细的可以看看这里。

jQuery超链接请求

jQuery对超链接请求的操作,就有点像上面这个提交表单和额外参数的demo,不过因为没有表单,所以超链接请求提交的参数都是额外的参数,或者说是任意想要提交的参数。 
jsp代码

账号:<input type="text" name="name_user" id="id_user">
密码:<input type="password" name="name_pwd" id="id_pwd">
<a href="#" id = "id_a">jQuery提交这两个input的值</a>
  • 1
  • 2
  • 3

注意: a标签的href属性必须设置为#,因为a标签默认会发生跳转。

jQuery代码

$(document).ready(function(){//创建id为id_a的超链接标签单击事件$("#id_a").bind("click",function(){//获取想要传递参数的数值var url_user = $("#id_user").val();var url_pwd = $("#id_pwd").val();//拼接urlvar url = "servlet/TestServlet?";url += "url_user="+url_user+"&url_pwd="+url_pwd;//使用post方式提交请求和参数$.post(url);});});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

java代码

String username = request.getParameter("url_user");
String password = request.getParameter("url_pwd");
  • 1
  • 2

easy-ui的datagrid请求提交

这里写一个简单datagrid的提交,在datagrid的提交中,由于又有一层封装好的方法,所以使用起来更为简单明了。 
jsp代码

    <div style="height:340px;"><table id="id_table" fit="true"></table></div><div id="footer" style="padding:4px;text-align:right">查询条件1:<input type="text" id="id_queryparams_1">查询条件2:<input type="text" id="id_queryparams_2"><a href="#" class="easyui-linkbutton" onclick="querydata();">提交查询条件</a></div>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

jQuery代码

$(document).ready(function(){//创建datagrid数据表格$('#id_table').datagrid({loadMsg:'正在加载...',url: '',//使用datagrid的分页功能pagination: true,pageSize: 10,pageList: [10, 15, 20, 25, 30],fit:true,rownumbers:true,striped:true,toolbar:'#c',showFooter:true,singleSelect:true,checkOnSelect: true,selectOnCheck:true,//测试显示的数据域名称,不用关心columns:[[{field:'sid',title:'sid',checkbox:true},{field:'producer',title:'PRODUCER'},{field:'drug_code',title:'DRUG_CODE'},{field:'drug_name',title:'DRUG_NAME'},{field:'act_quanity',title:'ACT_QUANIYT'},field:'drug_name',title:'DRUG_NAME'}]]});});function querydata(){//获取用户输入的数据     var query_params1 = $("#id_queryparams_1").val();var query_params2 = $("#id_queryparams_2").val();      //设置提交的路径$("#id_table").datagrid("options").url="servlet/TestServlet";//提交请求-也就是给datagrid加载数据     $('#id_table').datagrid('load',{//提交获取的参数query_params_dg_1 : query_params1,query_params_dg_2 : query_params2,comments : "测试数据"});            
}

注意: 在确认使用datagrid的分页功能之后,也就是pagination的属性为true,提交参数时,easy-ui会多封装2个参数传递到后台。分别是page(当前第几页)和rows(每页记录数)。

java代码

String qp1 = request.getParameter("query_params_dg_1");
String qp2 = request.getParameter("query_params_dg_2");
String comments = request.getParameter("comments");
//获取datagrid当前第几页
int page = Integer.parseInt(request.getParameter("page"));
//获取datagrid每页记录数
int rows = Integer.parseInt(request.getParameter("rows"));
原文地址:https://blog.csdn.net/qq_20128967/article/details/52847518?locationNum=8&fps=1

最后给大家推荐一个专门查找淘宝天猫优惠券的网站, 喜欢网购的朋友不妨去看看, 上面有不少商品的优惠券,可以帮大家购物省钱, 去了不会让你失望的, 感谢大家的支持! 点击打开链接   


如果大家觉得进网站有点麻烦,毕竟我们使用手机购物还是占大多数, 那我直接给大家推荐一个手机APP软件吧, 
注册下载一个花生日记,直接复制商品标题,自动搜索淘宝天猫优惠券!先领券,再购物,更划算!
-------------

识别下面的二维码下载:

注册邀请码 WZXMITO    填写邀请码自动升级为代理商 !
自用省钱,分享赚钱。活动期间免费升级代理商,成为超级会员分享宝贝即可赚高佣

http://chatgpt.dhexx.cn/article/oHg3HSqP.shtml

相关文章

模拟html post表单提交

一、打开自动提交访问 设置好表单账号密码&#xff0c;然后访问指定地址。就能自动提交登录并跳转到首页 1、填写访问表单信息 设置好表单账号密码 <input name"account" <input id"password" name"password" 然后填上访问地址action …

02 Ajax表单提交

目录 一、表单概念 1.表单 2.提交的两种方式 二、form-serize与FormData 1.form-serize 2.FormData 三、文件上传案例分析 以下的既为本文的核心概括 一、表单概念 1.表单 form标签&#xff08;表单&#xff09;是用来收集用户输入的信息。 表单构成&#xff1a; 表单标签&a…

Form表单提交

Form表单提交 form表单提交&#xff0c;表单提交分两种&#xff1a;自动提交 和 手动提交&#xff0c; form表单提交又分&#xff1a;post提交和get提交&#xff0c;以下用的都是post提交 一.自动提交表单&#xff1a; 自动提交表单&#xff0c;我们可以通过框架引用&#…

html 提交form表单提交数据格式,form表单提交数据

form表单提交的几种方法 HTML表单提交的几种方式方式一:通过submit按钮提交方式二:通过一般按钮button提交1/3javascript">functionsubmit1(){varform1=document.getElementById("form1");form1.action="bjpowernode.html";form1.submit();方式三…

JavaScript表单提交

表单提交在前端编程阶段中也是一个重点。它是由页面数据保存到后台数据库的重要枢纽&#xff0c;通过表单提交的方式将数据上传到数据库进行保存。同时这些数据也包含用户信息、统计信息、日志信息等等。 数据的信息不同&#xff0c;上传的方式也不同。在JavaScript中有四种种表…

表单提交的四种方式

表单提交的四种方式开发工具与关键技术&#xff1a;VS &#xff0c;JavaScript &#xff0c;Ajax 作者&#xff1a;刘任锋 撰写时间&#xff1a;2021年5月7日内容&#xff1a;将from表单里的内容提交到控制器上。 HTML布局 JS&#xff1a;先获取姓名&#xff0c;性别&#xff0…

表单的提交方式

表单有两个较特殊的属性&#xff0c;一个是method&#xff0c;是规定用于发送表单的HTTP方法&#xff08;提交表单的方式&#xff09;&#xff1b;还有一个是action&#xff0c;是规定当提交时向何处发送表单的数据&#xff08;要提交表单的地址&#xff09;。Form表单有一个自…

InputStream的read()读取机制

public void readArr() {// 明确文件File file new File("D:/net.txt");// 构建流的对象InputStream inputStream null;try {inputStream new FileInputStream(file);// 声名缓冲数组int i;byte[] bytes new byte[5];while ((i inputStream.read(bytes)) ! -1) …

java中的InputStream,OutputStream,Read,Writer

Java 中定义了两种类型的流&#xff1a;字节型&#xff0c;和字符型。 字节流&#xff1a;处理字节的输入和输出。包括读写二进制数据等方面的内容。 字符流&#xff1a;处理字符的输入和输出。他采用的是 Unicode 编码&#xff0c;可以实现国际化。使用字符流的另外一个好处…

InputStreamReader和OutputStreamWriter 的区别和用法

一、InputStreamReader 用于将一个字节流中的字节解码成字符 &#xff0c; 用法如下 Testpublic void Test19() throws Exception {InputStream in new FileInputStream("C:/hello.txt");// 读取文件的数据,注意文件编码为UTF-8,防止读取乱码// 将输入的字节流 ---…

InputStream.read() 和 OutputStream.write()方法

InputStream.read() 和 OutputStream.write()方法组合使用可以完成文件的复制功能。 先贴出代码 InputStream inputStream new FileInputStream(file);OutputStream os response.getOutputStream();byte[] b new byte[2048];int size;while ((size inputStream.read(b)) &…

InputStream 、 InputStreamReader和BufferedReader

在Java中&#xff0c;上述三个类经常用于处理数据流&#xff0c;下面介绍一下三个类的不同之处以及各自的用法。 InputStream &#xff1a; 是所有字节输入流的超类&#xff0c;一般使用它的子类&#xff1a;FileInputStream等&#xff0c;它能输出字节流&#xff1b;InputStre…

Java转换流(InputStreamReader/OutputStreamWriter)

文章目录 概述为什么会有转换流&#xff1f;InputStreamReaderOutputStreamWriter 概述 转换流是字节流到字符流的桥梁&#xff0c;在转换的过程中&#xff0c;可以指定编码。转换流也是一种处理流&#xff0c;它提供了字节流和字符流之间的转换。 转换流的两个类 InputStrea…

InputStream read()方法详解

在Java7中&#xff0c;InputStream被定义为一个抽象类&#xff0c;相应的&#xff0c;该类下的read()方法也是一个抽象方法&#xff0c;这也就意味着必须有一个类继承InputStream并且实现这个read方法。   查阅Java7 API&#xff0c;我们可以看到&#xff0c;在InputStream中…

【Java学习笔记】InputStreamReader的理解

一、InputStreamReader类 API文档说明&#xff1a;InputStreamReader类是从字节流到字符流的桥接器&#xff1a;它使用指定的字符集读取字节并将它们解码为字符。 它使用的字符集可以通过名称指定&#xff0c;也可以明确指定&#xff0c;或者可以接受平台的默认字符集。每次调…

InputStreamReader介绍使用

InputStreamReader类&#xff1a; java.io.InputStreamReader extends Reader InputStreamReader:是字节流通向字符流的桥梁&#xff1a;他使用指定的charset读取字节并将其解码为字符。(解码&#xff1a;把看不懂的变为能看懂的) 继承自父类的共性成员方法&#xff1a;int r…

jconsole工具监测jvm

背景 本篇文章为了记录如何使用jconsole工具。 jconsole工具使用环境是windows&#xff0c;监控服务端在linux上。 如何启动jconsole 找到你本地jdk的目录&#xff0c;进入bin目录&#xff0c;找到jconsole.exe程序双击启动即可 本地进程 如果是想调试本地程序的话&#xf…

jconsole远程连接服务器失败,提示“连接失败:是否重试“

操作步骤: 运行程序的时候加上参数: -Djava.rmi.server.hostname****** -Dcom.sun.management.jmxremotetrue -Dcom.sun.management.jmxremote.port9991 -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse 服务器打开端口:效果就…

java jconsole 远程连接_jconsole连接远程tomcat

咱们先说怎么做&#xff0c;然后再聊聊一些原理&#xff0c;当然&#xff0c;本人技术能力有限&#xff0c;有错误的地方&#xff0c;欢迎指正。 1.本机环境&#xff0c;远程环境 本机环境:windows 7 java version "1.8.0_121" 远程环境:centos 6.5 java…

jconsole远程连接的使用

背景 在项目做性能压测的时候&#xff0c;对程序进行分析&#xff0c;需要用到jconsole工具&#xff0c;以前都没用过&#xff0c;学习了一下 连接步骤 1. 打开工具 打开jdk安装目录 -> bin &#xff0c;找到jconsole.exe 双击打开 2. 到服务器中&#xff0c;加入以下…