官網:https://www.jetbrains.com/help/idea/restful-webservices.html
1、在IntelliJ中創建新項目,選擇Java Enterprise -> RESTful Web Service -> Download
2、創建完項目JerseyDemo后,對項目點擊右鍵 -> Add Frameworks Support,分別勾選Web Application和Maven。其中,web appication為項目增加了web.xml,maven為構建工具。
完成之后項目的文件結構如下:
3、 在maven中加入jersey依賴

<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.9</version> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> <version>2.9</version> </dependency> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>2.9</version> </dependency> </dependencies>
此時,整個pom.xml文檔如下。另外使用maven默認的庫下載源文件很慢,可以使用國內鏡像,方法可見maven國內鏡像(maven下載慢的解決方法)。
4. 創建源文件
在src/java目錄下新建包,如com.test.jersey,在包下新建類HelloWorld.java,寫上代碼:

package com.test.jersey; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; @Path("/hello") public class HelloWorld { //GET注解設置接受請求類型為GET @GET //Produces表明發送出去的數據類型為text/plain // 與Produces對應的是@Consumes,表示接受的數據類型為text/plain @Produces("text/plain") public String getMessage() { return "Hello world!"; } }
5. 配置servlet
編輯web/WEB-INF/web.xml,加入代碼:
<servlet> <servlet-name>restful_service_test</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.test.jersey</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>restful_service_test</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping>
6、 配置Tomcat
點擊Run >Edit Configurations… > “+” > Tomcat Server > Local,加入Tomcat,選擇Deployment tab, 點擊 “+”, 選擇唯一的Artifact,點擊"OK"即可。
7、在輸出中加入庫文件
選擇Project Structure,點擊Artifacts,可以右側Available Elements下面有很多庫文件沒有包含在輸出中。依次雙擊各個文件即可。
8. 運行Tomcat
運行Tomcat,在瀏覽器中輸入http://localhost:8080/api/hello,即可看到以下輸出:
9、增加SolrService類,訪問solr服務

package com.solr.service; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.Cluster; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.ClusteringResponse; import org.apache.solr.common.SolrDocumentList; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * @Author:sks * @Description: * @Date:Created in 9:56 2018/2/26 * @Modified by: **/ public class SolrService { private SolrClient solr; // public SolrService(){ // String urlString = "http://localhost:8983/solr/test"; //// HttpSolrServer hs=new HttpSolrServer("http://localhost:8888/solr"); // // solr = new HttpSolrClient.Builder(urlString).build(); // } /** * @Author:sks * @Description:初始化solr客戶端 * @Date: */ public void Init(){ String urlString = "http://localhost:8983/solr/test"; solr = new HttpSolrClient.Builder(urlString).build(); } // public static void main(String[] args) throws SolrServerException,IOException { // //// String urlString = "http://localhost:8983/solr/mycore"; // String urlString = "http://localhost:8983/solr/test"; // String path = "D:/work/Solr/ImportData"; // // Init(urlString); // getAutoClusterInfo(); // System.exit(0); // } /** * @Author:sks * @Description:獲取文檔總數 * @Date: */ private long getDocTotalCount() { long num = 0; try { SolrQuery params = new SolrQuery(); params.set("q", "*:*"); //params.setQuery("*:*"); QueryResponse rsp = solr.query(params); SolrDocumentList docs = rsp.getResults(); num = docs.getNumFound(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return num; } /** * @Author:sks * @Description:獲取聚類數據 * @Date: */ public String getAutoClusterInfo() { //使用這個對象做查詢 SolrQuery params = new SolrQuery(); //查詢所有數據 params.set("qt", "/clustering"); params.setQuery("*:*"); params.setStart(0); params.setRows((int)getDocTotalCount()); // params.setRows(30); List<Cluster> list = null; try { QueryResponse queryResponse = solr.query(params); ClusteringResponse clr = queryResponse.getClusteringResponse(); list = clr.getClusters(); //拿到聚類數據集合,返回查詢結果 } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String txt = ""; List<String> lst = new ArrayList<String>(); for(Cluster c :list){ //類別標簽 List<String> lblist = c.getLabels(); for(String lb:lblist){ System.out.println(lb); } //聚類文檔ID List<String> doclist = c.getDocs(); for(String doc:doclist){ lst.add(doc); System.out.println(" " + doc); } } return "abc"; } }
在增加getSolrData方法
@GET @Produces("text/plain") @Path("/getSolrData") //api/solrData/getSolrData public String getSolrData() { SolrService ss = new SolrService(); ss.Init(); String s = ss.getAutoClusterInfo(); return s; }
運行tomcat,在瀏覽器輸入:http://localhost:8080/api/hello/getSolrData
原因找了半天是因為web.xml里面
改為 com.solr.service
重新運行tomcat 在瀏覽器輸入:http://localhost:8080/api/hello/getSolrData 還是報錯
原因是Artifacts新加入的jar包沒有包含在輸出中,依次雙擊各個文件即可加入到輸出中。
終於成功了