当前位置: 首页 > news >正文

宁波企业网站排名优化公司电影网站做cpa

宁波企业网站排名优化公司,电影网站做cpa,外包的优缺点,山东网站设计公司HTTP请求中#xff0c;如果是get请求#xff0c;那么表单参数以namevaluename1value1的形式附到url的后面#xff0c;如果是post请求#xff0c;那么表单参数是在请求体中#xff0c;也是以namevaluename1value1的形式在请求体中。通过chrome的开发者工具可以看… HTTP请求中如果是get请求那么表单参数以namevaluename1value1的形式附到url的后面如果是post请求那么表单参数是在请求体中也是以namevaluename1value1的形式在请求体中。通过chrome的开发者工具可以看到如下这里是可读的形式不是真正的HTTP请求协议的请求格式 get请求 [plain] view plain copy RequestURL:http://127.0.0.1:8080/test/test.do?namemikanaddressstreet   Request Method:GET   Status Code:200 OK       Request Headers   Accept:text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8   Accept-Encoding:gzip,deflate,sdch   Accept-Language:zh-CN,zh;q0.8,en;q0.6   AlexaToolbar-ALX_NS_PH:AlexaToolbar/alxg-3.2   Connection:keep-alive   Cookie:JSESSIONID74AC93F9F572980B6FC10474CD8EDD8D   Host:127.0.0.1:8080   Referer:http://127.0.0.1:8080/test/index.jsp   User-Agent:Mozilla/5.0 (Windows NT 6.1)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.149 Safari/537.36       Query String Parameters   name:mikan   address:street       Response Headers   Content-Length:2   Date:Sun, 11 May 2014 10:42:38 GMT   Server:Apache-Coyote/1.1   Post请求 [plain] view plain copy RequestURL:http://127.0.0.1:8080/test/test.do   Request Method:POST   Status Code:200 OK       Request Headers   Accept:text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8   Accept-Encoding:gzip,deflate,sdch   Accept-Language:zh-CN,zh;q0.8,en;q0.6   AlexaToolbar-ALX_NS_PH:AlexaToolbar/alxg-3.2   Cache-Control:max-age0   Connection:keep-alive   Content-Length:25   Content-Type:application/x-www-form-urlencoded   Cookie:JSESSIONID74AC93F9F572980B6FC10474CD8EDD8D   Host:127.0.0.1:8080   Origin:http://127.0.0.1:8080   Referer:http://127.0.0.1:8080/test/index.jsp   User-Agent:Mozilla/5.0 (Windows NT 6.1)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.149 Safari/537.36       Form Data   name:mikan   address:street       Response Headers   Content-Length:2   Date:Sun, 11 May 2014 11:05:33 GMT   Server:Apache-Coyote/1.1   这里要注意post请求的Content-Type为application/x-www-form-urlencoded参数是在请求体中即上面请求中的Form Data。 在servlet中可以通过request.getParameter(name)的形式来获取表单参数。 而如果使用原生AJAX POST请求的话 [javascript] view plain copy function getXMLHttpRequest() {             var xhr;             if(window.ActiveXObject) {                      xhr new ActiveXObject(Microsoft.XMLHTTP);             }else if (window.XMLHttpRequest) {                      xhr new XMLHttpRequest();             }else {                      xhr null;             }             return xhr;   }      function save() {             var xhr  getXMLHttpRequest();             xhr.open(post,http://127.0.0.1:8080/test/test.do);             var data  namemikanaddressstreet...;             xhr.send(data);             xhr.onreadystatechange function() {                      if(xhr.readyState  4  xhr.status  200) {                               alert(returned: xhr.responseText);                      }             };   }   通过chrome的开发者工具看到请求头如下 [plain] view plain copy RequestURL:http://127.0.0.1:8080/test/test.do   Request Method:POST   Status Code:200 OK       Request Headers   Accept:*/*   Accept-Encoding:gzip,deflate,sdch   Accept-Language:zh-CN,zh;q0.8,en;q0.6   AlexaToolbar-ALX_NS_PH:AlexaToolbar/alxg-3.2   Connection:keep-alive   Content-Length:28   Content-Type:text/plain;charsetUTF-8   Cookie:JSESSIONIDC40C7823648E952E7C6F7D2E687A0A89   Host:127.0.0.1:8080   Origin:http://127.0.0.1:8080   Referer:http://127.0.0.1:8080/test/index.jsp   User-Agent:Mozilla/5.0 (Windows NT 6.1)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.149 Safari/537.36       Request Payload   namemikanaddressstreet       Response Headers   Content-Length:2   Date:Sun, 11 May 2014 11:49:23 GMT   Server:Apache-Coyote/1.1   注意请求的Content-Type为text/plain;charsetUTF-8而请求表单参数在RequestPayload中。 那么servlet中通过request.getParameter(name)却是空。为什么呢而这样的参数又该怎么样获取呢 为了搞明白这个问题查了些资料也看了Tomcat7.0.53关于请求参数处理的源码终于搞明白了是怎么回事。 HTTP POST表单请求提交时使用的Content-Type是application/x-www-form-urlencoded而使用原生AJAX的POST请求如果不指定请求头RequestHeader默认使用的Content-Type是text/plain;charsetUTF-8。 由于Tomcat对于Content-Type multipart/form-data文件上传和application/x-www-form-urlencodedPOST请求做了“特殊处理”。下面来看看相关的处理代码。 Tomcat的HttpServletRequest类的实现类为org.apache.catalina.connector.Request实际上是org.apache.coyote.Request而它对处理请求参数的方法为protected void parseParameters()这个方法中对Content-Type multipart/form-data文件上传和application/x-www-form-urlencodedPOST请求的处理代码如下 [java] view plain copy protectedvoid parseParameters() {              //省略部分代码......              parameters.handleQueryParameters();// 这里是处理url中的参数              //省略部分代码......              if (multipart/form-data.equals(contentType)) { // 这里是处理文件上传请求                   parseParts();                   success  true;                   return;              }                  if(!(application/x-www-form-urlencoded.equals(contentType))) {// 这里如果是非POST请求直接返回不再进行处理                   success  true;                   return;              }              //下面的代码才是处理POST请求参数              //省略部分代码......              try {                   if (readPostBody(formData, len)! len) { // 读取请求体数据                       return;                   }              } catch (IOException e) {                   // Client disconnect                   if(context.getLogger().isDebugEnabled()) {                       context.getLogger().debug(                               sm.getString(coyoteRequest.parseParameters),e);                   }                   return;              }              parameters.processParameters(formData, 0, len); // 处理POST请求参数把它放到requestparameter map中即request.getParameterMap获取到的Maprequest.getParameter(name)也是从这个Map中获取的              // 省略部分代码......   }          protected int readPostBody(byte body[], int len)          throws IOException {              int offset  0;          do {              int inputLen  getStream().read(body, offset, len - offset);              if (inputLen  0) {                   return offset;              }              offset  inputLen;          } while ((len - offset)  0);          return len;       }   从上面代码可以看出Content-Type不是application/x-www-form-urlencoded的POST请求是不会读取请求体数据和进行相应的参数处理的即不会解析表单数据来放到request parameter map中。所以通过request.getParameter(name)是获取不到的。那么这样提交的参数我们该怎么获取呢 当然是使用最原始的方式读取输入流来获取了如下所示 [java] view plain copy privateString getRequestPayload(HttpServletRequest req) {             StringBuildersb  new StringBuilder();             try(BufferedReaderreader  req.getReader();) {                      char[]buff  new char[1024];                      intlen;                      while((len  reader.read(buff)) ! -1) {                               sb.append(buff,0, len);                      }             }catch (IOException e) {                      e.printStackTrace();             }             returnsb.toString();   }   当然设置了application/x-www-form-urlencoded的POST请求也可以通过这种方式来获取。 所以在使用原生AJAX POST请求时需要明确设置Request Header即 [javascript] view plain copy xhr.setRequestHeader(Content-Type,application/x-www-form-urlencoded);   另外如果使用jquery我使用1.11.0这个版本来测试$.ajax post请求是不需要明确设置这个请求头的其他版本的本人没有亲自测试过。相信在1.11.0之后的版本也是不需要设置的。不过之前有的就不一定了。这个没有测试过。 2015-04-17后记 最近在看书时才真正搞明白服务器为什么会对表单提交和文件上传做特殊处理因为表单提交数据是名值对的方式且Content-Type为application/x-www-form-urlencoded而文件上传服务器需要特殊处理普通的post请求Content-Type不是application/x-www-form-urlencoded数据格式不固定不一定是名值对的方式所以服务器无法知道具体的处理方式所以只能通过获取原始数据流的方式来进行解析。 jquery在执行post请求时会设置Content-Type为application/x-www-form-urlencoded所以服务器能够正确解析而使用原生ajax请求时如果不显示的设置Content-Type那么默认是text/plain这时服务器就不知道怎么解析数据了所以才只能通过获取原始数据流的方式来进行解析请求数据。
http://wiki.neutronadmin.com/news/347472/

相关文章:

  • 南京网站优化建站沈阳专业的网站设计公司
  • 手机网站建设的公司排名做自媒体在哪个网站好
  • 游戏网站推广中国建设银行官网站u盾证书
  • 深圳网站建设 推荐xtdseowordpress4.7.5
  • 内蒙建设厅投诉网站网站视觉风格
  • 龙岗网站建设 公司推广罗田建设局网站
  • 线上推广有哪些平台效果好常德百度seo
  • 如何组建做网站的团队公司网站做排名用什么搜索好点
  • 高端网站建设制作怎样为网站做推广
  • 梦之翼wordpress主题站北京网站关键字优化
  • 做网站如何用代码把字体变大seo工作室合作
  • 微网站开发技巧wordpress电商模板
  • 福州市住房和城乡建设网站西安高校网站建设
  • 泉州市网站api建设知识问答网站开发
  • 个性化网站成功的案例手机如何开发软件
  • 辽宁省建设网站地推app推广赚佣金
  • 开贴纸网站要怎么做网站推广的方式包括哪些
  • 河南营销网站建设联系方式江苏建设类高级工程师在那个网站公示
  • 郑州网站公司哪家好中国住房与城乡建设部官方网站
  • 新网站备案直播间网站开发
  • 网站制作公司有没有版权jquery插件 wordpress
  • 自己搞个网站需要多少钱做网站怎么跟客户谈话
  • 公司网站制作需要什么django商城网站开发的功能
  • 综合门户类网站有哪些尚海整装装修怎么样
  • 建设个人博客网站制作我的世界做壁纸网站打不开
  • 杭州网站建设费用多少如何建立一个微信公众号平台
  • 如何做优酷网站赚钱网站建设心得体会
  • 企业网站怎么制作流程网站信息内容建设局通报
  • 网站策划初级方案模板wordpress为什么放弃
  • 长沙中小企业网站建设建设网站怎么提需求