java語(yǔ)法:java_解析字符串

請(qǐng)求:
分:各種信息key=value
合:拼成1個(gè)字符串
分:拆分成各種信息
合:類(hashmap碰逸、list、自定義類)倡蝙、數(shù)組旅敷、字符串
分:獲取容器類的單個(gè)信息處理

響應(yīng):
分:各種響應(yīng)信息
合:類、hashmap等
分:?jiǎn)蝹€(gè)取出來(lái)處理
合:合成字符串冬阳,返回

一蛤虐、請(qǐng)求和接收雙方,達(dá)成一個(gè)協(xié)議

二肝陪、請(qǐng)求方驳庭,按照協(xié)議格式,把所有信息拼成1個(gè)字符串

1. 請(qǐng)求行格式:

請(qǐng)求方法 請(qǐng)求路徑 協(xié)議版本

2. 其中請(qǐng)求路徑格式

協(xié)議類型://IP地址:端口號(hào)/工程名/資源路徑?參數(shù)名=參數(shù)值&參數(shù)名=參數(shù)值

3. 實(shí)例

get http://127.0.0.1:8080/NewWeb/login?name=guoyasoft&password=123456 HTTP1.1

三、接收方饲常,按照協(xié)議格式蹲堂,把字符串拆分成零散的信息

string常用方法

split("分隔符號(hào)");
indexOf("定位符號(hào)");
substring(開(kāi)始下標(biāo),結(jié)束下標(biāo));
equals("要比較的串");
equalsIgnoreCase("要比較的串")

字符串切分完的小塊贝淤,單個(gè)存放柒竞,打包存放

  1. 基本變量(單個(gè),key=value霹娄,缺點(diǎn),很多個(gè)的時(shí)候鲫骗,傳輸特別麻煩)

  2. 字符串

  3. 數(shù)組(value犬耻,固定,缺點(diǎn)执泰,多了記不住哪個(gè)位置是什么東西)

  4. list(value枕磁,不固定,缺點(diǎn)术吝,多了記不住哪個(gè)位置是什么東西)

  5. hashmap(key=value计济,不固定,缺點(diǎn)背不住名字)

  6. 類(key=value排苍,固定沦寂,有點(diǎn)很明顯,缺點(diǎn)淘衙,屬性是預(yù)先固定)

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部分:請(qǐng)求行
         *      1. 請(qǐng)求方法
         *      2. 請(qǐng)求資源路徑
         *      3. 協(xié)議版本
         */
        Request request=new Request();
        
//      String str="get http://127.0.0.1:8080/NewWeb/login?name=guoyasoft&password=123456 HTTP1.1";
        //切割:把一個(gè)大的字符串传藏,按照分割符,切割成很多小的字符串
        String[] firstLine=str.split(" ");
        String method=firstLine[0];
        System.out.println("請(qǐng)求方法:"+method);
        request.setMethod(method);
        
        String url=firstLine[1];
        System.out.println("資源路徑:"+url);
        request.setUrl(url);
        
        String protocalVersion=firstLine[2];
        System.out.println("協(xié)議版本:"+protocalVersion);
        request.setProtocalVersion(protocalVersion);
        
        /*
         * 資源路徑
         *      1. 協(xié)議:http或者h(yuǎn)ttps
         *      2. ip:"http://"開(kāi)始彤守,":"結(jié)束
         *      3. 端口:":"開(kāi)始毯侦,"/"第一個(gè)反斜杠結(jié)束
         *      4. 工程名:第一個(gè)"/"開(kāi)始,第二個(gè)反斜杠結(jié)束
         *      5. 資源路徑:第二個(gè)"/"開(kāi)始具垫,"?"結(jié)束侈离,如果沒(méi)有"?",直接到結(jié)尾
         *      6. 參數(shù):"?"開(kāi)始筝蚕,一直到結(jié)束
         */
        int httpIndex=url.indexOf("://");
        String protocal=url.substring(0,httpIndex);
        System.out.println("協(xié)議:"+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("端口號(hào):"+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;
    }
}

測(cè)試類:

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);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卦碾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子起宽,更是在濱河造成了極大的恐慌蔗坯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燎含,死亡現(xiàn)場(chǎng)離奇詭異宾濒,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)屏箍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門绘梦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)橘忱,“玉大人,你說(shuō)我怎么就攤上這事卸奉《鄢希” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵榄棵,是天一觀的道長(zhǎng)凝颇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)疹鳄,這世上最難降的妖魔是什么拧略? 我笑而不...
    開(kāi)封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮瘪弓,結(jié)果婚禮上垫蛆,老公的妹妹穿的比我還像新娘。我一直安慰自己腺怯,他們只是感情好袱饭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著呛占,像睡著了一般虑乖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晾虑,一...
    開(kāi)封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天决左,我揣著相機(jī)與錄音,去河邊找鬼走贪。 笑死佛猛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坠狡。 我是一名探鬼主播继找,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逃沿!你這毒婦竟也來(lái)了婴渡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凯亮,失蹤者是張志新(化名)和其女友劉穎边臼,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體假消,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柠并,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臼予。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸣戴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粘拾,到底是詐尸還是另有隱情窄锅,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布缰雇,位于F島的核電站入偷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏械哟。R本人自食惡果不足惜疏之,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望戒良。 院中可真熱鬧体捏,春花似錦冠摄、人聲如沸糯崎。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沃呢。三九已至,卻和暖如春拆挥,著一層夾襖步出監(jiān)牢的瞬間薄霜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工纸兔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惰瓜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓汉矿,卻偏偏與公主長(zhǎng)得像崎坊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子洲拇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354