2013-03-13 66 views
-1

假设我不关心这个安全性方面,客户端计算机调用的网址:提取参数,并将它们传递到数据库

myurl.com/file.ext?Param1=value&param2=value2&param3=value3 

然后,我想做一个简单的插入到数据库

Insert into myDB(Col1, Col2, Col3)VALUES(Param1, Param2, Param3) 

我会做我自己的焦炭剥离输入,我无法找到任何关于如何做到这一点简洁。

+1

'我将在输入端做我自己的字符剥离'不要。做。那。期。有工具!永远不要“不关心安全方面”。即使它只在一个混凝土石棺底下100英尺的隔离电脑上运行...... – ppeterka 2013-03-13 14:57:41

+0

计算机运行在Intranet上,只能通过登录脚本访问该URL。 – Vivisection 2013-03-13 15:20:06

+0

有可能真的_accidentally_粘贴具有';'的字符串。 DROP TABLES;在那里...我真的是意外的错误! – ppeterka 2013-03-13 15:41:13

回答

2

URL.getQuery() 它将返回URL的查询部分,然后用这个方法

URl u = new URL("myurl.com/file.ext?Param1=value&param2=value2&param3=value3"); 
Map<String, String> params = getQueryMap(u.getQuery()); 

public static Map<String, String> getQueryMap(String query) 
{ 
    String[] params = query.split("&"); 
    Map<String, String> map = new HashMap<String, String>(); 
    for (String param : params) 
    { 
     String[] parts = param.split("="); 
     String name = parts[0]; 
     String value = parts[1]; 
     map.put(name, value); 
    } 
    return map; 
} 

现在你必须在地图中,可以访问所有的参数。使用JDBC格式化并执行查询。

+0

真棒回答,我很遗憾,我只有一个upvote给。 – Vivisection 2013-03-13 15:53:43

0
String s = "myurl.com/file.ext?Param1=value&param2=value2&param3=value3"; 
    int index = s.indexOf("Param1"); 
    String ss = s.substring(index); 
    String[] arr = ss.split("&"); 
    for(int i=0; i < arr.length; i++){ 
     String[] value= arr[i].split("=");//value[i] will be value i+1th value 
    } 
相关问题