phpcms手机网站模板,网站建设平台 汉龙,图片扫一扫在线识别照片,广东网站建设定制目录 HTTP 请求1.请求组成2.请求方式与数据格式get 请求示例post 请求示例json 请求示例multipart 请求示例数据格式小结 3.表单3.1.作用与语法3.2.常见的表单项 4.session 原理5.jwt 原理 HTTP 请求
1.请求组成
请求由三部分组成
请求行请求头请求体
可以用 telnet 程序测… 目录 HTTP 请求1.请求组成2.请求方式与数据格式get 请求示例post 请求示例json 请求示例multipart 请求示例数据格式小结 3.表单3.1.作用与语法3.2.常见的表单项 4.session 原理5.jwt 原理 HTTP 请求
1.请求组成
请求由三部分组成
请求行请求头请求体
可以用 telnet 程序测试
2.请求方式与数据格式
get 请求示例
GET /test2?name%E5%BC%A0age20 HTTP/1.1
Host: localhost%E5%BC%A0 是【张】经过 URL 编码后的结果
post 请求示例
POST /test2 HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 21name%E5%BC%A0age18application/x-www-form-urlencoed 格式细节
参数分成名字和值中间用 分隔多个参数使用 进行分隔【张】等特殊字符需要用 encodeURIComponent() 编码为 【%E5%BC%A0】后才能发送
json 请求示例
POST /test3 HTTP/1.1
Host: localhost
Content-Type: application/json
Content-Length: 25{name:zhang,age:18}json 对象格式
{属性名:属性值}其中属性值可以是
字符串 “”数字true, falsenull对象数组
json 数组格式
[元素1, 元素2, ...]multipart 请求示例
POST /test2 HTTP/1.1
Host: localhost
Content-Type: multipart/form-data; boundary123
Content-Length: 125--123
Content-Disposition: form-data; namenamelisi
--123
Content-Disposition: form-data; nameage30
--123--boundary123 用来定义分隔符起始分隔符是 --分隔符结束分隔符是 --分隔符--
数据格式小结
客户端发送
编码 application/x-www-form-urlencoded url 编码application/jsonutf-8 编码multipart/form-data每部分编码可以不同 表单只支持以 application/x-www-form-urlencoded 和 multipart/form-data 格式发送数据文件上传需要用 multipart/form-data 格式js 代码可以支持任意格式发送数据
服务端接收
对 application/x-www-form-urlencoded 和 multipart/form-data 格式的数据Spring 接收方式是统一的只需要用 java bean 的属性名对应请求参数名即可对于 applicaiton/json 格式的数据Spring 接收需要使用 RequestBody 注解 java bean 的方式
3.表单
服务器常用表单向后端提交数据。
3.1.作用与语法
表单的作用收集用户填入的数据并将这些数据提交给服务器
表单的语法
form action服务器地址 method请求方式 enctype数据格式!-- 表单项 --input typesubmit value提交按钮
/formmethod 请求方式有 get 默认提交时数据跟在 URL 地址之后post 提交时数据在请求体内 enctype 在 post 请求时指定请求体的数据格式 application/x-www-form-urlencoded默认multipart/form-data 其中表单项提供多种收集数据的方式 有 name 属性的表单项数据才会被发送给服务器
3.2.常见的表单项
文本框
input typetext nameuesrname密码框
input typepassword namepassword隐藏框
input typehidden nameid日期框
input typedate namebirthday单选
input typeradio namesex value男 checked
input typeradio namesex value女多选
input typecheckbox namefav value唱歌
input typecheckbox namefav value逛街
input typecheckbox namefav value游戏文件上传
input typefile nameavatar代码小结
!DOCTYPE html
htmlheadmeta charsetutf-8title文件选择框和隐藏框的应用/titlestyle typetext/cssfieldset{width: 500px;height: 500px;margin: 20px;}/style/headbodyformfieldsetlegend文件选择框与隐藏框的应用/legendh4请输入个人信息/h4姓名input typetext namename size10/性别input typeradio namesex valuemale checked/男input typeradio namesex valuefemale/女nbsp;年龄input typetext nameage size8/br/h4请选择照片文件/h4input typefile namefile/br /input typehidden nameadmin valueABCD/h3请您填写宝贵意见/h3textarea nameinfo rows4 cols50 wrapvirtual/textareah4下拉框列表/h4select name size2 multiple !--规定可选多个选项--option valuec1 selectedc/c程序设计/optionoption valuec2计算机网络/optionoption valuec3数据结构/option/selectbutton typesubmit onclick$() value提交/buttoninput typereset value重置 onclick$()/input typebutton value注册新用户 onclickjavascript:alert(注册新用户);//fieldset/form/body
/html这段代码是一个简单的 HTML 表单用于展示文件选择框、隐藏框以及其他表单元素的应用。 fieldset: 用于将相关的表单元素组合在一起并创建边框。 legend: 定义字段集的标题。 h4: 表示一个小标题。 input typetext: 用于接收用户输入的文本。 input typeradio: 表示单选按钮。 input typefile: 创建一个文件选择框用于上传文件。 input typehidden: 创建一个隐藏的文本输入框用户无法看见或修改该值但会在提交表单时随表单数据一起被发送到服务器。 textarea: 创建多行输入框用于用户输入多行文本。 select: 创建一个下拉框选择框。 option: 定义下拉框中的选项。 button: 创建一个按钮用于触发表单的提交。 form: 创建一个表单用于包含表单元素。
接下来逐个介绍每个元素的属性。 fieldset 元素的属性: width: 设置字段集的宽度。height: 设置字段集的高度。margin: 设置字段集的外边距。 input typetext 元素的属性: type: 指定输入框的类型这里是文本输入框。name: 指定输入框的名称用于标识表单数据。size: 设置输入框的尺寸这里是可见字符数。 input typeradio 元素的属性: type: 指定输入框的类型这里是单选按钮。name: 指定一组单选按钮的名称用于标识表单数据。value: 指定单选按钮的值。checked: 设置单选按钮的初始选中状态。 input typefile 元素的属性: type: 指定输入框的类型这里是文件选择框。name: 指定输入框的名称用于标识选择的文件。 input typehidden 元素的属性: type: 指定输入框的类型这里是隐藏输入框。name: 指定输入框的名称用于标识隐藏的表单数据。value: 指定隐藏输入框的值。 textarea 元素的属性: name: 指定多行文本输入框的名称。rows: 设置多行文本框的行数。cols: 设置多行文本框的列数。wrap: 规定文本在多行文本框中的换行方式。 select 元素的属性: name: 指定选择框的名称。size: 设置选择框的可见选项数。multiple: 规定可同时选择多个选项。 option 元素的属性: value: 指定选项的值。selected: 设置选项的初始选中状态。 button 元素的属性: type: 指定按钮的类型这里是提交按钮。onclick: 指定按钮被点击时触发的函数。value: 指定按钮的值。 当您点击这两个按钮时将执行相应的操作。下面是对每个按钮的介绍 input typereset 元素的属性: type: 指定按钮的类型这里是重置按钮。value: 指定按钮上显示的文本内容。onclick: 指定按钮被点击时触发的函数。 当点击这个按钮时表单中的所有输入将被重置为初始值。并且如果定义了 onclick 函数将调用相应的 JavaScript 函数来处理重置按钮的点击事件。 input typebutton 元素的属性: type: 指定按钮的类型这里是普通按钮。value: 指定按钮上显示的文本内容。onclick: 指定按钮被点击时触发的函数。 当点击这个按钮时将弹出一个对话框显示 “注册新用户” 的提示信息。在这个示例代码中点击按钮将触发内联 JavaScript 代码 javascript:alert(注册新用户);弹出一个包含文本 “注册新用户” 的提示框。
效果如下
4.session 原理
Http 无状态有会话
无状态是指请求之间相互独立第一次请求的数据第二次请求不能重用有会话是指客户端和服务端都有相应的技术可以暂存数据让数据在请求间共享
服务端使用了 session 技术来暂存数据
存
GET /s1?namezhang HTTP/1.1
Host: localhost取
GET /s2 HTTP/1.1
Host: localhost
Cookie: JSESSIONID560FA845D02AE09B176E1BC5D9816A5Dsession 技术实现身份验证 #mermaid-svg-vKa9vcWO4THsdIMp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vKa9vcWO4THsdIMp .error-icon{fill:#552222;}#mermaid-svg-vKa9vcWO4THsdIMp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-vKa9vcWO4THsdIMp .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-vKa9vcWO4THsdIMp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-vKa9vcWO4THsdIMp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-vKa9vcWO4THsdIMp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-vKa9vcWO4THsdIMp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-vKa9vcWO4THsdIMp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-vKa9vcWO4THsdIMp .marker.cross{stroke:#333333;}#mermaid-svg-vKa9vcWO4THsdIMp svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-vKa9vcWO4THsdIMp .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-vKa9vcWO4THsdIMp text.actortspan{fill:black;stroke:none;}#mermaid-svg-vKa9vcWO4THsdIMp .actor-line{stroke:grey;}#mermaid-svg-vKa9vcWO4THsdIMp .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-vKa9vcWO4THsdIMp .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-vKa9vcWO4THsdIMp #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-vKa9vcWO4THsdIMp .sequenceNumber{fill:white;}#mermaid-svg-vKa9vcWO4THsdIMp #sequencenumber{fill:#333;}#mermaid-svg-vKa9vcWO4THsdIMp #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-vKa9vcWO4THsdIMp .messageText{fill:#333;stroke:#333;}#mermaid-svg-vKa9vcWO4THsdIMp .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-vKa9vcWO4THsdIMp .labelText,#mermaid-svg-vKa9vcWO4THsdIMp .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-vKa9vcWO4THsdIMp .loopText,#mermaid-svg-vKa9vcWO4THsdIMp .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-vKa9vcWO4THsdIMp .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-vKa9vcWO4THsdIMp .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-vKa9vcWO4THsdIMp .noteText,#mermaid-svg-vKa9vcWO4THsdIMp .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-vKa9vcWO4THsdIMp .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-vKa9vcWO4THsdIMp .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-vKa9vcWO4THsdIMp .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-vKa9vcWO4THsdIMp .actorPopupMenu{position:absolute;}#mermaid-svg-vKa9vcWO4THsdIMp .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-vKa9vcWO4THsdIMp .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-vKa9vcWO4THsdIMp .actor-man circle,#mermaid-svg-vKa9vcWO4THsdIMp line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-vKa9vcWO4THsdIMp :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Client LoginController LoginInterceptor Session 登录请求 检查用户名密码验证通过 存入用户名 登录成功 其它请求 获取用户名 用户名存在放行 Client LoginController LoginInterceptor Session 5.jwt 原理
jwt 技术实现身份验证 #mermaid-svg-MDB18omhwD4dSGKn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MDB18omhwD4dSGKn .error-icon{fill:#552222;}#mermaid-svg-MDB18omhwD4dSGKn .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MDB18omhwD4dSGKn .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-MDB18omhwD4dSGKn .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MDB18omhwD4dSGKn .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MDB18omhwD4dSGKn .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MDB18omhwD4dSGKn .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MDB18omhwD4dSGKn .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MDB18omhwD4dSGKn .marker.cross{stroke:#333333;}#mermaid-svg-MDB18omhwD4dSGKn svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MDB18omhwD4dSGKn .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-MDB18omhwD4dSGKn text.actortspan{fill:black;stroke:none;}#mermaid-svg-MDB18omhwD4dSGKn .actor-line{stroke:grey;}#mermaid-svg-MDB18omhwD4dSGKn .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-MDB18omhwD4dSGKn .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-MDB18omhwD4dSGKn #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-MDB18omhwD4dSGKn .sequenceNumber{fill:white;}#mermaid-svg-MDB18omhwD4dSGKn #sequencenumber{fill:#333;}#mermaid-svg-MDB18omhwD4dSGKn #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-MDB18omhwD4dSGKn .messageText{fill:#333;stroke:#333;}#mermaid-svg-MDB18omhwD4dSGKn .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-MDB18omhwD4dSGKn .labelText,#mermaid-svg-MDB18omhwD4dSGKn .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-MDB18omhwD4dSGKn .loopText,#mermaid-svg-MDB18omhwD4dSGKn .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-MDB18omhwD4dSGKn .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-MDB18omhwD4dSGKn .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-MDB18omhwD4dSGKn .noteText,#mermaid-svg-MDB18omhwD4dSGKn .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-MDB18omhwD4dSGKn .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-MDB18omhwD4dSGKn .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-MDB18omhwD4dSGKn .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-MDB18omhwD4dSGKn .actorPopupMenu{position:absolute;}#mermaid-svg-MDB18omhwD4dSGKn .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-MDB18omhwD4dSGKn .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-MDB18omhwD4dSGKn .actor-man circle,#mermaid-svg-MDB18omhwD4dSGKn line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-MDB18omhwD4dSGKn :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Client LoginController LoginInterceptor 登录请求 检查用户名密码验证通过 登录成功返回token 其它请求携带token 校验token校验无误放行 Client LoginController LoginInterceptor 生成 token
GET /j1?namezhangpass123 HTTP/1.1
Host: localhost校验 token
GET /j2 HTTP/1.1
Host: localhost
Authorization: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9._1-P_TLlzQPb1_lCyGwplMZaKQ8Mcw_plBbYPZ3OX28
文章转载自: http://www.morning.gnjkn.cn.gov.cn.gnjkn.cn http://www.morning.frpfk.cn.gov.cn.frpfk.cn http://www.morning.rwlsr.cn.gov.cn.rwlsr.cn http://www.morning.qhtlq.cn.gov.cn.qhtlq.cn http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn http://www.morning.mcqhb.cn.gov.cn.mcqhb.cn http://www.morning.dnconr.cn.gov.cn.dnconr.cn http://www.morning.fdrb.cn.gov.cn.fdrb.cn http://www.morning.gchqy.cn.gov.cn.gchqy.cn http://www.morning.nktgj.cn.gov.cn.nktgj.cn http://www.morning.pdghl.cn.gov.cn.pdghl.cn http://www.morning.svrud.cn.gov.cn.svrud.cn http://www.morning.mqlsf.cn.gov.cn.mqlsf.cn http://www.morning.glxmf.cn.gov.cn.glxmf.cn http://www.morning.nylbb.cn.gov.cn.nylbb.cn http://www.morning.hlwzd.cn.gov.cn.hlwzd.cn http://www.morning.ctlzf.cn.gov.cn.ctlzf.cn http://www.morning.cwrpd.cn.gov.cn.cwrpd.cn http://www.morning.tdxlj.cn.gov.cn.tdxlj.cn http://www.morning.nwljj.cn.gov.cn.nwljj.cn http://www.morning.zzqgc.cn.gov.cn.zzqgc.cn http://www.morning.gqhgl.cn.gov.cn.gqhgl.cn http://www.morning.gblrn.cn.gov.cn.gblrn.cn http://www.morning.drnjn.cn.gov.cn.drnjn.cn http://www.morning.frpm.cn.gov.cn.frpm.cn http://www.morning.csdgt.cn.gov.cn.csdgt.cn http://www.morning.qpqwd.cn.gov.cn.qpqwd.cn http://www.morning.kwblwbl.cn.gov.cn.kwblwbl.cn http://www.morning.hbqfh.cn.gov.cn.hbqfh.cn http://www.morning.rqrxh.cn.gov.cn.rqrxh.cn http://www.morning.myrmm.cn.gov.cn.myrmm.cn http://www.morning.fpryg.cn.gov.cn.fpryg.cn http://www.morning.lgsqy.cn.gov.cn.lgsqy.cn http://www.morning.lbggk.cn.gov.cn.lbggk.cn http://www.morning.twdwy.cn.gov.cn.twdwy.cn http://www.morning.sryyt.cn.gov.cn.sryyt.cn http://www.morning.xjpnq.cn.gov.cn.xjpnq.cn http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn http://www.morning.ptxwg.cn.gov.cn.ptxwg.cn http://www.morning.bwmm.cn.gov.cn.bwmm.cn http://www.morning.rmmz.cn.gov.cn.rmmz.cn http://www.morning.ndmh.cn.gov.cn.ndmh.cn http://www.morning.kmwbq.cn.gov.cn.kmwbq.cn http://www.morning.sffkm.cn.gov.cn.sffkm.cn http://www.morning.fksrg.cn.gov.cn.fksrg.cn http://www.morning.51meihou.cn.gov.cn.51meihou.cn http://www.morning.smszt.com.gov.cn.smszt.com http://www.morning.rszyf.cn.gov.cn.rszyf.cn http://www.morning.jzykw.cn.gov.cn.jzykw.cn http://www.morning.wqpm.cn.gov.cn.wqpm.cn http://www.morning.skmpj.cn.gov.cn.skmpj.cn http://www.morning.tdhxp.cn.gov.cn.tdhxp.cn http://www.morning.pffqh.cn.gov.cn.pffqh.cn http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn http://www.morning.btwlp.cn.gov.cn.btwlp.cn http://www.morning.cftkz.cn.gov.cn.cftkz.cn http://www.morning.fxwkl.cn.gov.cn.fxwkl.cn http://www.morning.xshkh.cn.gov.cn.xshkh.cn http://www.morning.njstzsh.com.gov.cn.njstzsh.com http://www.morning.nkjkh.cn.gov.cn.nkjkh.cn http://www.morning.gnkbf.cn.gov.cn.gnkbf.cn http://www.morning.ryxyz.cn.gov.cn.ryxyz.cn http://www.morning.qpntn.cn.gov.cn.qpntn.cn http://www.morning.syqtt.cn.gov.cn.syqtt.cn http://www.morning.wbrf.cn.gov.cn.wbrf.cn http://www.morning.djwpd.cn.gov.cn.djwpd.cn http://www.morning.jbqwb.cn.gov.cn.jbqwb.cn http://www.morning.xrlwr.cn.gov.cn.xrlwr.cn http://www.morning.kgxyd.cn.gov.cn.kgxyd.cn http://www.morning.ptlwt.cn.gov.cn.ptlwt.cn http://www.morning.jwmws.cn.gov.cn.jwmws.cn http://www.morning.mxmdd.cn.gov.cn.mxmdd.cn http://www.morning.jnbsx.cn.gov.cn.jnbsx.cn http://www.morning.gfprf.cn.gov.cn.gfprf.cn http://www.morning.rtkgc.cn.gov.cn.rtkgc.cn http://www.morning.xkpjl.cn.gov.cn.xkpjl.cn http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn http://www.morning.rsqpc.cn.gov.cn.rsqpc.cn http://www.morning.dnbhd.cn.gov.cn.dnbhd.cn http://www.morning.wdlg.cn.gov.cn.wdlg.cn