本次课程就是对HTML的标签进行处理,类似于定制一套浏览器服务器之间响应信息的规则。
//设计一个方法 解析响应信息并展示private void parseResponseContentAndShow(String responseContent){//创建两个新的变量 用于存储新一次的请求和参数String content = null;HashMap<String,String> paramsMap = null;//解析一个<br>标签responseContent = responseContent.replace("<br>","\r\n");while(true){//解析其他的标签int lessThanIndex = responseContent.indexOf("<");int greaterThenIndex = responseContent.indexOf(">");//如果两个符号成对 证明存在一个有意义的标签if(lessThanIndex!=-1 && greaterThenIndex!=-1 && lessThanIndex<greaterThenIndex){//输出小于号前面的内容System.out.println(responseContent.substring(0,lessThanIndex));//分析标签是什么类型 做相应的处理 <input name="" value="">String tag = responseContent.substring(lessThanIndex,greaterThenIndex+1);if(tag.contains("input")){String value = input.nextLine();if(paramsMap==null){paramsMap = new HashMap<String,String>();}// <input name="xxx" value="">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")){//<form action="" method="">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;}}//------至此将所有的响应信息解析完毕--------------------------------------//如果标签中遇到了<form>表示我还有一次新的请求this.sendNewRequest(content,paramsMap);}//设计一个新的方法 专门解析新的请求private void sendNewRequest(String content,HashMap<String,String> hashMap){//判断form标签是否存在//如果遇到证明存在一个新的请求if(content !=null){//拼接IPStringBuilder url = new StringBuilder(ip);url.append(":");url.append(port);url.append("/");url.append(content);//证明新情求还有参数if(hashMap!=null){url.append("?");//利用迭代器Iterator<String> it = hashMap.keySet().iterator();while(it.hasNext()){//获取键String key = it.next();//获取值String value = hashMap.get(key);url.append(key);url.append("=");url.append(value);url.append("&");}//循环执行完毕后 最终多了一个&符号 将其删除url.delete(url.length()-1,url.length());}//解析url 又调回去了this.parseUrl(url.toString());}
当然,这节课,我也懂了,当服务器给所有用户返回的是一样的结果,可以将信息写在文件中。
