学习内容:将服务器展示的内容及标签写入文件中,响应给浏览器不是读取文件,而是读取文件中的字符串
    在浏览器的展示层解析服务器响应回来的内容及标签
    体会:解析过程中都是不停的拼串与逻辑,到后面就有点晕了,敲代码时还出现挺多Bug,今天的内容听得有点累0.0。。。。
    总结:String这块不扎实

    代码:
    //解析信息并展示
    public void responseExhibition(String responseContent){
    //创建两个新的变量 用于存储新一次的请求和参数
    String content = null;
    HashMap paramsMap = null;
    //解析
    标签 String的不可变特性
    responseContent = responseContent.replace(“
    “,”\r\n”);
    while(true){
    //解析其他的标签
    int lessThanIndex = responseContent.indexOf(“<”);
    int greaterThenIndex = responseContent.indexOf(“>”);
    //如果两个符号成对 证明存在一个有意义的标签
    if(lessThanIndex!=-1 && greaterThenIndex!=-1 && lessThanIndex //输出小于号前面的内容
    System.out.println(responseContent.substring(0,lessThanIndex));
    //分析标签是什么类型 做相应的处理
    String tag = responseContent.substring(lessThanIndex,greaterThenIndex+1);
    //在文件中通过这个形式拆分
    if(tag.contains(“input”)){
    String value = input.nextLine();
    if(paramsMap==null){
    paramsMap = new HashMap<>();
    }
    //将一个大的标记按照空格拆分
    String[] keyAndValues = tag.split(“ “);
    //循环每一组键值对
    for(String keyAndValue : keyAndValues){
    //如果当前的一组中包含有等号 证明是正常的参数
    if(keyAndValue.contains(“=”)){
    //按照等号拆分
    String[] KV = keyAndValue.split(“=”);
    if(“name”.equals(KV[0])){
    paramsMap.put(KV[1].substring(1,KV[1].length()-1),value);
    }
    }
    }
    //在文件中通过这个形式拆分


    }else if(tag.contains(“form”)){
    //将一个大的标记按照空格拆分
    String[] keyAndValues = tag.split(“ “);
    for(String keyAndValue : keyAndValues){
    //如果当前的一组中包含有等号 证明是正常的参数
    if(keyAndValue.contains(“=”)){
    String[] KV = keyAndValue.split(“=”);//按照等号拆分
    if(“action”.equals(KV[0])){
    //产生一个新的请求
    content = KV[1].substring(1,KV[1].length()-1);
    }
    }
    }
    }
    responseContent = responseContent.substring(greaterThenIndex+1);
    }else{
    //如果符号不成对 证明不存在其他标签
    //则直接输出全部的内容
    System.out.println(responseContent);
    break;
    }
    }
    //———至此将所有的响应信息解析完毕———————————————————
    //如果标签中遇到了表示我还有一次新的请求
    this.sendNewRequest(content,paramsMap);
    }
    private void sendNewRequest(String content,HashMap paramsMap){
    //遇到了一个form标签 还需要发送下一次请求
    if(content!=null){
    StringBuilder url = new StringBuilder(ip);
    url.append(“:”);
    url.append(port);
    url.append(“/“);
    url.append(content);
    //证明新情求还有参数
    if(paramsMap!=null){
    url.append(“?”);
    Iterator it = paramsMap.keySet().iterator();
    while(it.hasNext()){
    String key = it.next();
    String value = paramsMap.get(key);
    url.append(key);
    url.append(“=”);
    url.append(value);
    url.append(“&”);
    }
    //循环执行完毕后 最终多了一个&符号 将其删除
    url.delete(url.length()-1,url.length());
    }
    this.analysisURL(url.toString());
    }
    }