IDEA java開發 Restful 風格的WebService

  官網: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>
View Code

 

  此時,整個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!";
    }
}
View Code

  

  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";
    }
}
View Code

  在增長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包沒有包含在輸出中,依次雙擊各個文件便可加入到輸出中。

  

  終於成功了

  

相關文章
相關標籤/搜索