form表单
post 和 get 方式提交数据有什么区别
1.最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数;
2.GET能被缓存,POST不能缓存 。
3.GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。
4.GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。
5.GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。
6 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。
GET的数据在 URL 中对所有人都是可见的。POST的数据不会显示在 URL 中。
7.GET方法请求资源。POST的语义是上传数据。
8.POST不安全,不幂等,
在input里,name 有什么作用?
-
用途1: name 属性用于对提交到服务器后的表单数据进行标识,或者在客户端通过 JavaScript 引用表单数据。只有设置了 name 属性的表单元素才能在提交表单时传递它们的值。比如input、select、textarea、和button等。我们可以在服务器端根据其Name通过Request.Params取得元素提交的值。
-
用途2: HTML元素Input type='radio'分组,我们知道radio button控件在同一个分组类,check操作是mutex的,同一时间只能选中一个radio,这个分组就是根据相同的Name属性来实现的。
placeholder 属性有什么作用?
该提示会在输入字段为空时显示,并会在字段获得焦点时消失。
label 有什么作用?如何使用?
- <label> 标签为 input 元素定义标注(标记)。
label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在 label 元素内点击文本,就会触发此控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。
- <label> 标签的 for 属性应当与相关元素的 id 属性相同。
<div class="username">
<label for="username">姓名</label>
<input id="username" type="text" name="username"/>
</div>
type=hidden隐藏域有什么作用?
1.隐藏域的作用是帮助表单收集和发送信息,便于后端处理数据。用户点击提交数据的时候,隐藏域的信息也被一起发送到了后端。
2.后端接收前端传来的数据,需要确认前端的身份,是本公司的网页传来的数据,而不是其他黑客知道后端地址后传来的假数据。那么就加一个隐藏域,验证value里的值和数据库里name的值是不是对应的。
3.有时候一个表单里有多个提交按钮,后端怎么知道用户是点击哪个按钮提交过来的呢?这时候我们只要加隐藏域,对每一个按钮起个名字(value值),后端接收到数据后,检查value值,就能知道是哪个按钮提交的了。
4.有时候一个网页中有多个form,我们知道多个form是不能同时提交的,但有时这些form确实相互作用,我们就可以在form中添加隐藏域来使它们联系起来。
5.防范CRSF攻击
5.表单范例
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div class="login">
<form action="/getInfo" method="post">
<div class="username">
<label for="username">姓名:</label>
<input id="username" type="text" name="username" placeholder="用户名"/>
</div>
<div class="password">
<label for="password">密码:</label>
<input id="password" type="password" name="password" placeholder="请输入密码" value="56767889"/>
</div>
<div class="sex">
<label for="">性别</label>
<input type="radio" name="sex1" value="男" checked/>男
<input type="radio" name="sex1" value="女"/>女
</div>
<div class="sex">
<label for="">取向</label>
<input type="radio" name="sex2" value="男" />男
<input type="radio" name="sex2" value="女" checked/>女
</div>
<div class="hobby">
<label >爱好</label>
<input type="checkbox" name="hobby" value="data"/>data
<input type="checkbox" name="hobby" value="旅游" checked/>旅游
<input type="checkbox" name="hobby" value="宠物" checked/>宠物
</div>
<div class="textarea">
<label for=" review">评论:</label>
<textarea name="review" id=" review" cols="30" rows="10">
ddd
</textarea>
<input type="hidden" name="csrf" value="123456"/>
</div>
<div class="select">
<label for="car">我的car:</label>
<select name="car" id="car">
<option selected value="萨博" >萨博</option>
<option value="奔驰">奔驰</option>
<option value="宝马">宝马</option>
</select>
<span class="submit">
<input type="submit" value="提交">
</span>
</div>
</form>
</div>
</body>
</html>
1.png