?? form.java
字號:
package spider;
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
public class Form
{
private String formString;//form表單流
private String url;//地址
// private int ID;//類型編號1號--高級搜索,0號--多文本框和單文本框,3--下拉表select,4--選擇radio
private int type;//類型編號1號--多文本框接口,2號--簡單接口,3號--文本框+select/radio的接口
private int urlID;//地址
private String action;//提交地址
private String method="get";//提交方法,get,post,默認是get提交
private Map hiddensMap=new HashMap();//hidden,隱藏框
private Map inputsMap=null;//普通,選擇
private Map selectMap=null;//下拉表
private Map radiotMap=null;//下拉表
private Form GreatSearch=null;//高級搜索
public void makeFormMessage()//組裝接口信息
{
//System.out.println(formString);
System.out.println("this.getUrl()");
this.makeAction();//提取action中的內容
this.makeMethod();//提取method中的內容
this.makeType();//設置接口類型并提取其內容
this.makeHiddens();//設置hidden隱藏框中內容
}
public void makeXml()//生成xml文檔
{
}
private void makeType()//設置接口類型并提取其內容
{
if(formString.toLowerCase().indexOf("type=\"radio\"")!=-1 || formString.toLowerCase().indexOf("type='radio'")!=-1 || formString.toLowerCase().indexOf("type=radio")!=-1)
{
this.type=3;
this.makeRadio();//提取radio中的內容
}
else if(formString.toLowerCase().indexOf("<select")!=-1)
{
this.type=3;
this.makeSelect();//提取select中的內容
}
else
{
int InputhasNoTypeNumber=0;
String[] formInputArray=formString.split("<input");//用<input></input>標簽分割
for(int sia=1;sia<formInputArray.length;sia++)
{
String formInputString=null;//select中的<input>標簽中的內容
int beginIndex=0;
int endIndex=formInputArray[sia].toLowerCase().indexOf(">");
formInputString=this.pointThing(beginIndex, endIndex, formInputArray[sia]);//取出select中的<input>標簽中的內容
System.out.println("form中的<input>標簽中內容是----"+formInputString);
//提取form中的<input>標簽中的text文本框name屬性的值
if(formInputString!=null)
{
//判斷是否是text文本框
if(formInputString.indexOf("type=\"text\"")!=-1 || formInputString.indexOf("type='text'")!=-1 || formInputString.indexOf("type=text")!=-1)
{
InputhasNoTypeNumber++;
}
else
{
if(formInputString.toLowerCase().indexOf("type=")!=-1)
{
System.out.println("form中的<input>標簽中不是text文本框");
}
else
{
InputhasNoTypeNumber++;
}
}
}
else
{
System.out.println("form中的<input>標簽為空");
}
}
if(1==InputhasNoTypeNumber)
{
this.type=2;//單文本框
this.makeInputs();//提取文本框中的內容
}
else
{
this.type=1;//多文本框
this.makeInputs();//提取文本框中的內容
}
}
System.out.println("表單類型為------"+this.type);
}
private void makeAction()//提取action中的內容
{
if(formString.indexOf("action=")!=-1)//<form></form>標簽中有action
{
//System.out.println(formString);
int beginIndex=formString.indexOf("action=")+7;
int endIndex=formString.length();
this.action=this.lotsPointThing(beginIndex, endIndex, formString);
if(this.action.indexOf("http://")!=-1)//action中有http://
{
System.out.println("action是----"+this.action);
}
else
{
if(this.action.startsWith("/"))//action中不是以/開頭
{
this.action=this.url+this.action;//action等于首地址加action中的內容
System.out.println("action是----"+this.action);
}
else
{
this.action=this.url+"/"+this.action;
System.out.println("action是----"+this.action);
}
}
if(this.action.indexOf("?")!=-1)//action有?號
{
this.makeActionHidden();//調用操作action中的去除&號的函數
}
else
{
this.action=this.action+"?";
System.out.println("action是----"+this.action);
}
}
else
{
System.out.println("創造action失敗");
}
}
private void makeActionHidden()//操作action中的去除&號的函數
{
if(this.action.indexOf("?")!=-1)//action有?號
{
List hiddensList=new ArrayList();
Map hiddensValueMap=new HashMap();
String formInputTextName=null;
String formInputTextNameValue=null;
String[] actionHasHiddenNameValue=this.action.split("\\?");
System.out.println("actionHasHiddenNameValue.length----"+actionHasHiddenNameValue.length);
for(int ahhnv=0;ahhnv<actionHasHiddenNameValue.length;ahhnv++)//問號后面有字符串
{
System.out.println("actionHasHiddenNameValue[1]----"+actionHasHiddenNameValue[ahhnv]);
if(actionHasHiddenNameValue[ahhnv].indexOf("&")!=-1)//問號后面有&
{
String[] hasDengHao=actionHasHiddenNameValue[ahhnv].split("&");
for(int u=0;u<hasDengHao.length;u++)
{
System.out.println("hasDengHao[u]----"+hasDengHao[u]);
if(hasDengHao[u].indexOf("=")!=-1)//用&號分割后面沒有=號
{
String[] dengHaoSplit=hasDengHao[u].split("=");
if(2==dengHaoSplit.length)
{
formInputTextName=dengHaoSplit[0];
formInputTextNameValue=dengHaoSplit[1];
hiddensList.add(formInputTextName);
hiddensValueMap.put(formInputTextName, formInputTextNameValue);
}
}
else
{
System.out.println("用&號分割后面沒有=號");
}
}
}//問號后面沒有&
else
{
if(actionHasHiddenNameValue[ahhnv].indexOf("=")!=-1)//有=號
{
String[] dengHaoSplit=actionHasHiddenNameValue[ahhnv].split("=");
if(2==dengHaoSplit.length)
{
formInputTextName=dengHaoSplit[0];
formInputTextNameValue=dengHaoSplit[1];
hiddensList.add(formInputTextName);
hiddensValueMap.put(formInputTextName, formInputTextNameValue);
}
}
else//沒有=號
{
System.out.println("用&號分割后面沒有=號");
}
}
}
if(hiddensList.size()>0)
{
hiddensMap.put("hiddensList", hiddensList);
hiddensMap.put("hiddensValueMap", hiddensValueMap);
}
else
{
System.out.println("form中的<input>標簽中沒有hidden文本框");
}
this.action=actionHasHiddenNameValue[0]+"?";
System.out.println("action是----"+this.action);
}
else//action中沒有?
{
this.action=this.action+"?";
System.out.println("action是----"+this.action);
}
}
private void makeMethod()//提取method中的內容
{
if(formString.indexOf("method=")!=-1)
{
//System.out.println(formString);
int beginIndex=formString.indexOf("method=")+7;
int endIndex=formString.length();
this.method=this.lotsPointThing(beginIndex, endIndex, formString);
}
else
{
System.out.println("創造method失敗");
}
}
private void makeHiddens()//設置接口類型并提取其內容
{
if(formString.indexOf("type=\"hidden\"")!=-1 || formString.indexOf("type='hidden'")!=-1 || formString.indexOf("type=hidden")!=-1)
{
List hiddensList=new ArrayList();
Map hiddensValueMap=new HashMap();
String[] formInputArray=formString.split("<input");//用<input></input>標簽分割
//System.out.println(formInputArray.length);
for(int sia=1;sia<formInputArray.length;sia++)
{
String formInputString=null;//form中的<input>標簽中的內容
int beginIndex=0;
int endIndex=formInputArray[sia].indexOf(">");
formInputString=this.pointThing(beginIndex, endIndex, formInputArray[sia]);//取出select中的<input>標簽中的內容
System.out.println("form中的<input>標簽中內容是----"+formInputString);
//提取form中的<input>標簽中的hidden文本框name屬性和它的值的值
if(formInputString!=null)
{
//判斷是否是text文本框
if(formInputString.indexOf("type=\"hidden\"")!=-1 || formInputString.indexOf("type='hidden'")!=-1 || formString.indexOf("type=hidden")!=-1)
{
String formInputTextName=null;//form中的<input>標簽中的hidden文本框name
String formInputTextNameValue=null;//form中的<input>標簽中的hidden文本框name屬性的值
beginIndex=formInputString.indexOf("name=")+5;
endIndex=formInputString.length();
formInputTextName=this.lotsPointThing(beginIndex, endIndex, formInputString);
System.out.println("form中的<input>標簽中的hidden文本框name是----"+formInputTextName);
hiddensList.add(formInputTextName);
if(formInputString.indexOf("value=")!=-1)
{
beginIndex=formInputString.indexOf("value=")+6;
endIndex=formInputString.length();
formInputTextNameValue=this.lotsPointThing(beginIndex, endIndex, formInputString);
hiddensValueMap.put(formInputTextName, formInputTextNameValue);
System.out.println("form中的<input>標簽中的hidden文本框name屬性的值是----"+formInputTextNameValue);
}
}
else
{
System.out.println("form中的<input>標簽中沒有hidden文本框");
}
}
else
{
System.out.println("form中的<input>標簽為空");
}
}
if(hiddensList.size()>0)
{
hiddensMap.put("hiddensList", hiddensList);
hiddensMap.put("hiddensValueMap", hiddensValueMap);
}
else
{
System.out.println("form中的<input>標簽中沒有hidden文本框");
}
}
}
private void makeInputs()//提取文本框中的內容
{
int InputhasNoTypeNumber=0;
inputsMap=new HashMap();
List inputsList=new ArrayList();
String[] formInputArray=formString.split("<input");//用<input></input>標簽分割
//System.out.println(formInputArray.length);
for(int sia=1;sia<formInputArray.length;sia++)
{
String formInputString=null;//select中的<input>標簽中的內容
int beginIndex=0;
int endIndex=formInputArray[sia].indexOf(">");
formInputString=this.pointThing(beginIndex, endIndex, formInputArray[sia]);//取出select中的<input>標簽中的內容
System.out.println("form中的<input>標簽中內容是----"+formInputString);
//提取form中的<input>標簽中的text文本框name屬性的值
if(formInputString!=null)
{
//判斷是否是text文本框
if(formInputString.indexOf("type=\"text\"")!=-1 || formInputString.indexOf("type='text'")!=-1 || formInputString.indexOf("type=text")!=-1)
{
String formInputTextName=null;//form中的<input>標簽中的text文本框name屬性的值
beginIndex=formInputString.indexOf("name=")+5;
endIndex=formInputString.length();
formInputTextName=this.lotsPointThing(beginIndex, endIndex, formInputString);
System.out.println("form中的<input>標簽中的text文本框name屬性的值是----"+formInputTextName);
inputsList.add(formInputTextName);
}
else
{
if(formInputString.indexOf("type=")!=-1)
{
System.out.println("form中的<input>標簽中不是text文本框");
}
else
{
String formInputTextName=null;//form中的<input>標簽中的text文本框name屬性的值
System.out.println("------------"+formInputString);
if(formInputString.indexOf("name=")!=-1)//有name
{
beginIndex=formInputString.indexOf("name=")+5;
endIndex=formInputString.length();
formInputTextName=this.lotsPointThing(beginIndex, endIndex, formInputString);
System.out.println("form中的<input>標簽中的text文本框name屬性的值是----"+formInputTextName);
inputsList.add(formInputTextName);
}
InputhasNoTypeNumber++;
}
}
}
else
{
System.out.println("form中的<input>標簽為空");
}
}
inputsMap.put("inputsList", inputsList);
}
private void makeRadio()//提取select中的信息
{
radiotMap=new HashMap();
List radioList=new ArrayList();
if(formString.indexOf("type=\"radio\"")!=-1 || formString.indexOf("type='radio'")!=-1 ||formString.indexOf("type=radio")!=-1)
{
//提取<form></form>中的<input>標簽中的內容
String[] formInputArray=formString.split("<input");//用<input標簽分割
for(int sia=1;sia<formInputArray.length;sia++)
{
String formInputString=null;//select中的<input>標簽中的內容
int beginIndex=0;
int endIndex=formInputArray[sia].indexOf(">");
formInputString=this.pointThing(beginIndex, endIndex, formInputArray[sia]);//提取<form></form>標簽中的<input>標簽中的內容
//System.out.println("form中的<input>標簽中的值是----"+formInputValue);
//<form></form>中的<input>標簽中的內容不為空
if(formInputString!=null)
{
//提取form中的<input>標簽中的text文本框value屬性的值
if(formInputString.indexOf("type=\"text\"")!=-1 || formInputString.indexOf("type='text'")!=-1 || formInputString.indexOf("type=text")!=-1)
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -