官網:https://www.jetbrains.com/help/idea/restful-webservices.htmlhtml
一、在IntelliJ中建立新項目,選擇Java Enterprise -> RESTful Web Service -> Downloadjava
二、建立完項目JerseyDemo後,對項目點擊右鍵 -> Add Frameworks Support,分別勾選Web Application和Maven。其中,web appication爲項目增長了web.xml,maven爲構建工具。web
完成以後項目的文件結構以下:apache
三、 在maven中加入jersey依賴json
<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下載慢的解決方法)。api
4. 建立源文件瀏覽器
在src/java目錄下新建包,如com.test.jersey,在包下新建類HelloWorld.java,寫上代碼:tomcat
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. 配置servletrestful
編輯web/WEB-INF/web.xml,加入代碼:app
<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>
六、 配置Tomcat
點擊Run >Edit Configurations… > 「+」 > Tomcat Server > Local,加入Tomcat,選擇Deployment tab, 點擊 「+」, 選擇惟一的Artifact,點擊"OK"便可。
七、在輸出中加入庫文件
選擇Project Structure,點擊Artifacts,能夠右側Available Elements下面有不少庫文件沒有包含在輸出中。依次雙擊各個文件便可。
8. 運行Tomcat
運行Tomcat,在瀏覽器中輸入http://localhost:8080/api/hello,便可看到如下輸出:
九、增長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包沒有包含在輸出中,依次雙擊各個文件便可加入到輸出中。
終於成功了