📄 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 + -