Form表单 JSON Content-type解析
1 表单Form概述
在Form表单中,参数一般有: action 表单提交的url method 提交方式:post get name 表单的属性名 enctype 提交数据的编码格式
2 常见的编码方式与语法
在Form表单中,enctype表明提交数据的格式 用 enctype 属性指定将数据回发到服务器时浏览器使用的编码类型. 常见的编码方式: 1 application/x-www-form-urlencoded: 概述: 当action为get,数据被编码为名称/值对,是标准的编码格式,也是默认的编码格式 格式:name1=value1&name2&value2 把form数据转换成一个字串,然后把 这个字串append到url后面,用?分割,加载这个新的url 2 multipart/form-data: 概述:当action为post时,浏览器把form数据封装到http body中,然后发送到server。 如果没有type=file的控 件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到 multipart/form-data了。 浏览器会把整个表单以控件为单位分割,并为每个部分加上ContentDisposition(form- data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。 file或者img等发生上传文件时,设置entype = 'multipart/form-data',是上传二进制数据,它告诉我们传输的 数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的 type属性必须是file。form里面的input的值以2进制的方式传过去,所以request就得不到值了。
3 form表单提交方式
1 无刷新页面提交表单:表单可实现无刷新页面提交,无需页面跳转,如下,通过一个隐藏的iframe实现,form表单 的target设置为info,iframe的name名称也为info,form提交目标位当前页面iframe则不会刷新页面。 <form action="/url.do" method="post" target="targetIfr"> <input type="text" name="name"/> </form> <iframe name="targetIfr" style="display:none"></iframe> 2 通过type = submit 提交或者 <button type='submit'> :一般表单提交通过type=submit实现,input type="submit",浏览器显示为button按钮,通过点击这个按钮提交表单数据跳转到/url.do <form action="/url.do" method="post"> <input type="text" name="name"/> <input type="submit" value="提交"> </form> 3 js提交form表单:js事件触发表单提交,通过button、链接等触发事件,js调用submit()方法提交表单数据, jquery通过submit()方法 <form id="form" action="/url.do" method="post"> <input type="text" name="name"/> </form> js: document.getElementById("form").submit() jquery: $("#form").submit() 4 ajax异步提交表单数据 :采用ajax异步方式,通过js获取form中所有input、select等组件的值,组成Json格式, 通过异步的方式与服务器端进行交互,一般将表单数据传送给服务器端,服务器端处理数据并返回结果信息 <form id="form" method="post"> <input type="text" name="name" id="name"/> </form> var params = {"name", $("#name").val()} $.ajax({ type: "POST", url: "/url.do", data: params, dataType : "json", success: function(respMsg){ #处理函数 } }); 5 页面无跳转:如果通过form表单提交请求服务端去下载文件,这时当前页面不会发生跳转,服务端返回void,通过 response 去写文件数据,页面会显示下载文件。 <form action="/url.do" method="post"> <input type="text" name="name"/> <input type="submit" value="提交"> </form> @RequestMapping(value = "/url") public void exportFile(HttpServletRequest req, HttpServletResponse response, String rptId) throws Exception { OutputStream out = null; try { String rptName = "file"; String fileName = new String((rptName + excelAble.getFileSuffix()).getBytes("GBK"), "8859_1"); response.reset(); response.setContentType("application/octec-stream"); response.setHeader("Content-disposition", "attachment; filename=" + fileName); out = response.getOutputStream(); excelAble.exportFile(out); } catch (Exception e) { logger.error(e); } finally { if (out != null) { out.close(); } } } 6 form表单上传文件:使用form表单进行上传文件需要为form添加enctype="multipart/form-data" 属性,除此之 外还需要将表单的提交方法改成post,如下 method="post", input type的类型需要设置为file. <form action="/url.do" enctype="multipart/form-data" method="post"> <input type="file" name="name"/> <input type="submit" value="提交"> </form>
4 Content-type接口应用
一般的服务端语言如python,它们的 framework,都内置了自动解析常 见数据格式的功能。服务端通常是根据请求头(headers)中的 Content- Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。 所以POST 提交,包含了 Content-Type 和消息主体编码方式两部分。 Http Header里的Content-Type一般有: application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式 multipart/form-data: 数据被编码为一条消息,页上的每个控件对应消息中的一个部分 text/plain: 数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符 application/json:作为响应头Content-Type,用来告诉服务端消息主 数据。 form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data, 默认为application/x-www-form-urlencoded。
5 json概述
JSON:JAVAScript Object Notation是一种轻量级的数据交换格式 大致分为三种情况: 1.{} 解析'大括号'类型 2. [ ] 解析是'中括号'类型 3. 1与2的组合方法即"{’name’:’李书豪’ ,’hobby’:['编程','电竞','睡觉']}" //大括号对象类型object jsonObj = { 'name':'lishu', 'age':24 } //数组类型Array(数组) jsonArr = "['beijing','shanghai']" //组合形式 jsonObj = { 'name':'lishu', 'age':24, 'friend':{'name':'zuoshou','age':18} } JSON与Python默认类型转化: JSON Python object dict array list string unicode number int true True flase Flase
6 json用法
导入json import json JSON函数 json.dumps() 将 Python 对象编码成 JSON 字符串,类似编码 json.loads() 将已编码的 JSON 字符串解码为 Python 对象,类似解码 将Python的字典结构导出到json使用json.dumps() ,将json读成Python的字典结构,使用json.loads() json.dumps() 编码json数据,常见的属性列表 json.dumps(obj,ensure_ascii=True,encoding='utf-8',indent=4, separators=(',', ': ')) 例: data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] json = json.dumps(data) 输出json格式字符串:[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}] #注意的单引号变成标准双引号 #indent = 4 表示格式化数据 json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': ')) 输出标准Json格式字符串: { "a": "Runoob", "b": 7 } json.loads() 解码json数据,常见属性列表 例: jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; text = json.loads(jsonData) 输出结果:{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4} json数据格式的总结: 1. json序列化方法: dumps:无文件操作 dump:序列化+写入文件 2. json反序列化方法: loads:无文件操作 load: 读文件+反序列化 3. json模块序列化的数据 更通用 picle模块序列化的数据 仅python可用,但功能强大,可以序列号函数 4. json模块可以序列化和反序列化的 5. 格式化写入文件利用 indent = 4

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android apk反编译学习
动机 本周要和竞品做下对比,所以对软件破解需要了解下,简单的写下用到的工具和基本流程,方便同学们用的时候使用。除此之外,学习下破解知识还有以下好处: 深入了解android底层代码实现,有的时候做性能分析、或者学习多线程编程的时候,经常需要了解底层代码结构,但仅仅知道原理,没有自己动手做一次,还是很难有一个深切的感受。 学习下别人优秀的东西 竞品分析 这里我分两个层次来学习反编译,一个是仅仅反编译代码,看里面或者拿里面的代码&资源。另一个方向是进行代码注入,改变源程序运行逻辑。 apk包结构 首先了解下基本结构,apk本身是个压缩包,可以直接解压,其中META-INF是签名之后生成的签名内容,classes.dex是编译后的源代码,dex对接口个数、文件大小有限制,所以有的包里面会看到classes2.dex、classes3.dex等多个。接下来按照顺序了解下破解流程,其中每个工具在最后统一列出来。 反编译代码 jadx工具可以直接打开apk进行查看代码。 反编译成java 有的时候使用jadx会比较慢,尤其是搜索的时候都不是很方便,我们破解成class文件之后 提取dex文...
- 下一篇
一个Java架构进阶必修体系图(只要思想不滑坡,方法总比困难多)
工作一到五年的程序员朋友面对目前的技术无从下手,感到很迷茫可以加群744677563,里面有阿里Java高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知! 工作一到五年的程序员朋友面对目前的技术无从下手,感到很迷茫可以加群744677563,里面有阿里Java高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!
相关文章
文章评论
共有0条评论来说两句吧...