请求:
分:各种信息key=value
合:拼成1个字符串
分:拆分成各种信息
合:类(hashmap、list、自定义类)、数组、字符串
分:获取容器类的单个信息处理
响应:
分:各种响应信息
合:类、hashmap等
分:单个取出来处理
合:合成字符串,返回
一、请求和接收双方,达成一个协议
二、请求方,按照协议格式,把所有信息拼成1个字符串
1. 请求行格式:
请求方法 请求路径 协议版本
2. 其中请求路径格式
协议类型://IP地址:端口号/工程名/资源路径?参数名=参数值&参数名=参数值
3. 实例
get http://127.0.0.1:8080/NewWeb/login?name=guoyasoft&password=123456 HTTP1.1
三、接收方,按照协议格式,把字符串拆分成零散的信息
string常用方法
split("分隔符号");
indexOf("定位符号");
substring(开始下标,结束下标);
equals("要比较的串");
equalsIgnoreCase("要比较的串")
字符串切分完的小块,单个存放,打包存放
基本变量(单个,key=value,缺点,很多个的时候,传输特别麻烦)
字符串
数组(value,固定,缺点,多了记不住哪个位置是什么东西)
list(value,不固定,缺点,多了记不住哪个位置是什么东西)
hashmap(key=value,不固定,缺点背不住名字)
类(key=value,固定,有点很明显,缺点,属性是预先固定)
package com.guoyasoft.tomcat;
import java.util.HashMap;
import java.util.Map;
public class Request {
private String method;
private String url;
private String protocalVersion;
private String protocal;
private String ip;
private String port;
private String projectName;
private String resourcePath;
private Map<String,String> parameters=new HashMap<String, String>();
public Map<String, String> getParameters() {
return parameters;
}
public void setParameter(Map<String, String> parameter) {
this.parameters = parameters;
}
public String getParameter(String key){
return parameters.get(key);
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getProtocalVersion() {
return protocalVersion;
}
public void setProtocalVersion(String protocalVersion) {
this.protocalVersion = protocalVersion;
}
public String getProtocal() {
return protocal;
}
public void setProtocal(String protocal) {
this.protocal = protocal;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getResourcePath() {
return resourcePath;
}
public void setResourcePath(String resourcePath) {
this.resourcePath = resourcePath;
}
public void setParameters(Map<String, String> parameters) {
this.parameters = parameters;
}
}
package com.guoyasoft;
import java.util.HashMap;
import java.util.Map;
import org.testng.annotations.Test;
import com.guoyasoft.tomcat.Request;
public class StringTools {
@Test
public Request testString(String str){
/*
* 第1部分:请求行
* 1. 请求方法
* 2. 请求资源路径
* 3. 协议版本
*/
Request request=new Request();
// String str="get http://127.0.0.1:8080/NewWeb/login?name=guoyasoft&password=123456 HTTP1.1";
//切割:把一个大的字符串,按照分割符,切割成很多小的字符串
String[] firstLine=str.split(" ");
String method=firstLine[0];
System.out.println("请求方法:"+method);
request.setMethod(method);
String url=firstLine[1];
System.out.println("资源路径:"+url);
request.setUrl(url);
String protocalVersion=firstLine[2];
System.out.println("协议版本:"+protocalVersion);
request.setProtocalVersion(protocalVersion);
/*
* 资源路径
* 1. 协议:http或者https
* 2. ip:"//"开始,":"结束
* 3. 端口:":"开始,"/"第一个反斜杠结束
* 4. 工程名:第一个"/"开始,第二个反斜杠结束
* 5. 资源路径:第二个"/"开始,"?"结束,如果没有"?",直接到结尾
* 6. 参数:"?"开始,一直到结束
*/
int httpIndex=url.indexOf("://");
String protocal=url.substring(0,httpIndex);
System.out.println("协议:"+protocal);
request.setProtocal(protocal);
url=url.substring(httpIndex+3);
System.out.println(url);
int ipIndex=url.indexOf(":");
String ip=url.substring(0,ipIndex);
System.out.println("ip:"+ip);
request.setIp(ip);
url=url.substring(ipIndex+1);
System.out.println(url);
int portIndex=url.indexOf("/");
String port=url.substring(0,portIndex);
System.out.println("端口号:"+port);
request.setPort(port);
url=url.substring(portIndex+1);
System.out.println(url);
int prjIndex=url.indexOf("/");
String prj=url.substring(0,prjIndex);
System.out.println("工程名:"+prj);
request.setProjectName(prj);
url=url.substring(prjIndex+1);
int resIndex=url.indexOf("?");
String res=url.substring(0,resIndex);
System.out.println("资源路径:"+res);
request.setResourcePath(res);
url=url.substring(resIndex+1);
Map<String,String> parameters=new HashMap<String, String>();
String[] ps=url.split("&");
for(String s:ps){
System.out.println(s.split("=")[0]+"="+s.split("=")[1]);
parameters.put(s.split("=")[0], s.split("=")[1]);
}
request.setParameters(parameters);
return request;
}
}
测试类:
package com.guoyasoft.client;
import com.guoyasoft.StringTools;
public class TestString {
public static void main(String[] args) {
String url = "get http://127.0.0.1:8080/NewWeb/login?name=guoyasoft&password=123456 HTTP1.1";
StringTools.testString(url);
}
}