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

上海百姓网免费发布信息网seo整站优化多少钱

上海百姓网免费发布信息网,seo整站优化多少钱,html5网站特效,网站怎么做留言提交功能文章目录 1、创建HttpRequest对象2、创建HttpResponse对象 1、创建HttpRequest对象 HttpRequest对象中的属性与HTTP协议中的内容对应#xff0c;用于后序servlet从request中获取请求中的参数。 参照http请求报文#xff1a; import java.io.BufferedReader; import java… 文章目录 1、创建HttpRequest对象2、创建HttpResponse对象 1、创建HttpRequest对象 HttpRequest对象中的属性与HTTP协议中的内容对应用于后序servlet从request中获取请求中的参数。 参照http请求报文 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map;public class HttpRequest {private String method;private String url;private String version;// 存储请求头中的KVprivate MapString, String headers new HashMap();// url 中的参数和 body 中的参数都放到这个 parameters hash 表中.private MapString, String parameters new HashMap();// 存储Cookieprivate MapString, String cookies new HashMap();private String body;public static HttpRequest build(InputStream inputStream) throws IOException {HttpRequest request new HttpRequest();BufferedReader bufferedReader new BufferedReader(new InputStreamReader(inputStream));// 1. 处理首行 GET /url /HTTP/1.1String firstLine bufferedReader.readLine();String[] firstLineTokens firstLine.split( );request.method firstLineTokens[0];request.url firstLineTokens[1];request.version firstLineTokens[2];// 2. 解析 urlint pos request.url.indexOf(?);//2.1 如果有号也间接说明这是一个GET请求if (pos ! -1) {// 2.1.1截取出所有参数String queryString request.url.substring(pos 1);// 2.2.2将参数解析为KV后存储parseKV(queryString, request.parameters);}// 3. 循环处理 header 部分String line ;while ((line bufferedReader.readLine()) ! null line.length() ! 0) {String[] headerTokens line.split(: );request.headers.put(headerTokens[0], headerTokens[1]);}// 4. 解析 cookieString cookie request.headers.get(Cookie);if (cookie ! null) {// 把 cookie 进行解析parseCookie(cookie, request.cookies);}// 5. 解析 bodyif (POST.equalsIgnoreCase(request.method)|| PUT.equalsIgnoreCase(request.method)) {// 这两个方法需要处理 body, 其他方法暂时不考虑// 需要把 body 读取出来.// 需要先知道 body 的长度. Content-Length 就是干这个的.// 此处的长度单位是 字节int contentLength Integer.parseInt(request.headers.get(Content-Length));// 注意体会此处的含义~~// 例如 contentLength 为 100 , body 中有 100 个字节.// 下面创建的缓冲区长度是 100 个 char (相当于是 200 个字节)// 缓冲区不怕长. 就怕不够用. 这样创建的缓冲区才能保证长度管够~~char[] buffer new char[contentLength];// 把int len bufferedReader.read(buffer);request.body new String(buffer, 0, len);// body 中的格式形如: usernametanglaoshipassword123parseKV(request.body, request.parameters);}return request;}private static void parseCookie(String cookie, MapString, String cookies) {// 1. 按照 分号空格 拆分成多个键值对String[] kvTokens cookie.split(; );// 2. 按照 拆分每个键和值for (String kv : kvTokens) {String[] result kv.split();cookies.put(result[0], result[1]);}}private static void parseKV(String queryString, MapString, String parameters) {// 1. 按照 拆分成多个键值对String[] kvTokens queryString.split();// 2. 按照 拆分每个键和值for (String kv : kvTokens) {String[] result kv.split();parameters.put(result[0], result[1]);}}public String getMethod() {return method;}public String getUrl() {return url;}public String getVersion() {return version;}public String getBody() {return body;}public String getParameter(String key) {return parameters.get(key);}public String getHeader(String key) {return headers.get(key);}public String getCookie(String key) {return cookies.get(key);} } 2、创建HttpResponse对象 参照http请求报文 import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.util.HashMap; import java.util.Map;public class HttpResponse {private String version HTTP/1.1;private int status;private String message;private MapString, String headers new HashMap();private StringBuilder body new StringBuilder();private OutputStream outputStream null;public static HttpResponse build(OutputStream outputStream) {HttpResponse response new HttpResponse();response.outputStream outputStream;return response;}public void setVersion(String version) {this.version version;}public void setStatus(int status) {this.status status;}public void setMessage(String message) {this.message message;}public void setHeader(String key, String value) {headers.put(key, value);}public void writeBody(String content) {body.append(content);}public void flush() throws IOException {BufferedWriter bufferedWriter new BufferedWriter(new OutputStreamWriter(outputStream));bufferedWriter.write(version status message \n);headers.put(Content-Length, body.toString().getBytes().length );for (Map.EntryString, String entry : headers.entrySet()) {bufferedWriter.write(entry.getKey() : entry.getValue() \n);}bufferedWriter.write(\n);bufferedWriter.write(body.toString());bufferedWriter.flush();} }
http://www.hkea.cn/news/14444167/

相关文章:

  • 网站文本编辑器泉州建设系统培训中心网站
  • 物流网站怎么做的婚纱摄影照片
  • 京东如何进行网站建设专业建设总结
  • 网站开发中英文版如何写中国建设银行怎么查询余额
  • 网站服务内容网站建设建设官网兴田德润怎么联系
  • 公司网站建设费计入科目青岛房产信息网
  • 网站开发职业访谈做旅游网站当地人服务赚钱吗
  • 西宁网站推广网站后台程序开发
  • 网站推广优化淄博公司广州白云发布通告
  • 淄博网站优化公司开发定制制作app
  • 织梦网站每天被挂马贵州省住房和建设厅网网站首页
  • 高端定制网站设计公司网站如何定位
  • 长沙网站公司自媒体运营从入门到精通
  • 如何做网站结构优化艺术设计与制作
  • 宁波制作网站软件蛋糕网站源码
  • 自建网站外贸怎么做深圳专业的网站建设
  • 医院网站建设策划书仿站小工具下载
  • 怎么做 废旧回收网站做的网站怎么放到域名
  • 电子商务网站建设与管理教材企业在建设银行网站怎么发工资
  • 精品课程网站建设现状wordpress 维护页面
  • 兰州网站建设招聘最新网站建设营销模板
  • 标志设计欣赏网站wordpress文章打开慢
  • 网站建设定金做什么会计分录网站推广的优势
  • 哪些网站是响应式有哪些网站做自建房设计
  • 信誉好的东莞网站建设会员管理系统功能介绍
  • 宝应123网站建设网wordpress图片分离
  • 博客网站需要的功能广州招投标交易中心
  • 上海开发公司企业seo关键字优化
  • 免费做爰小说网站wordpress本地后台打开卡住
  • 济南专业做网站的公司哪家好网站虚拟空间作用