2011-03-09 52 views
1

我有一個solr查詢「http:// localhost:8080/solr/select /?q = A」。我需要在我的java代碼中讀取參數「q」。如何得到它?如何使用java獲取http參數?

感謝, 元帥

+0

什麼樣的Java代碼在URL的'/ select'部分? Servlet的? JSP?過濾? – adarshr 2011-03-09 12:23:30

+0

Servlet的一部分 – Marshal 2011-03-09 12:48:19

回答

1

如果你在URL形式查詢,你可以使用URL.getQuery(),然後將不得不串在=&分裂找到合適的元素,像這樣:

public String getQueryPart(URL url, String key) { 
    String query = url.getQuery(); 
    if(query == null) 
     return null; 
    String[] parts = query.split("[&=]"); 
    for(int i = 0; i < parts.length; i+=2) { 
     if(parts[i].equals(key)) { 
      return parts[i+1]; 
     } 
    } 
} 

如果你想查詢多個參數,最好在地圖中存儲拆分字符串一次,並多次查詢。

當然,如果你在一個servlet或類似的服務器端代碼中使用這個URL,有更好的方法來獲取servlet API中的參數(比如Deepak寫的)。

+0

我認爲這不是做這件事的最好方法,因爲已經有servlet api乾淨利落的做法了。我建議使用@Deepak – ahvargas 2011-03-09 13:06:36

+0

的答案這個問題並沒有真正說他想在這個URL調用的代碼中做到這一點 - 當然,如果是這樣的話,最好使用Deepaks的答案。 – 2011-03-09 13:53:35

6

request.getParameter("q");會做的伎倆。

+0

我想我應該更具體一些。我正在嘗試定製solr的QueryElevationComponent.java。在那個java文件我需要得到q參數。當我試圖使用'request.getParameter(「q」)',它顯示error.Is有任何包,我應該導入或我應該擴展類? – Marshal 2011-03-10 08:32:21

0

取決於你的情況。
從哪裏試圖得到這個參數?你如何準確使用Solr?

BTW,/select只是一個用來請求映射到主要的Solr的servlet調用(等待它...)SolrServlet一個URL的一部分 - org.apache.solr.servlet.SolrServlet(從V4過時,現在solr.StandardRequestHandler使用),這是由於到它處理搜索請求的事實,有時也稱爲Solr服務器。