idea写java webservice_IDEA java开发 Restful 风格的WebService

本文介绍了如何在IntelliJ IDEA中使用Java和Jersey框架开发RESTful风格的Web Service,并连接到Solr进行数据操作。通过创建项目,配置Maven,添加Jersey依赖,编写HelloWorld服务,配置Servlet,设置Tomcat,以及处理SolrService类,实现了Solr数据的查询和展示。
摘要由CSDN通过智能技术生成

1、在IntelliJ中创建新项目,选择Java Enterprise -> RESTful Web Service -> Download

61deaa10d44ea4e7608f9db3192874065c9.jpg

759d51f1315b9c471a7cc694084a6ee5.png

2、创建完项目JerseyDemo后,对项目点击右键 -> Add Frameworks Support,分别勾选Web Application和Maven。其中,web appication为项目增加了web.xml,maven为构建工具。

a708698cec2bb8089eec8ac7e0b8c1da740.jpg

61da6482da0752afaa0d54947b9386661c3.jpg

完成之后项目的文件结构如下:

08666f92a832d0f5917e1cc6884e68c3.png

3、 在maven中加入jersey依赖

4a2e45a9b59b45d72b88e489d6bc10ec93d.jpg

cf7338380809fe8390d378147fd9be4c9ef.jpg

1.8

1.8

org.glassfish.jersey.containers

jersey-container-servlet

2.9

org.glassfish.jersey.core

jersey-client

2.9

org.glassfish.jersey.media

jersey-media-json-jackson

2.9

View Code

此时,整个pom.xml文档如下。另外使用maven默认的库下载源文件很慢,可以使用国内镜像,方法可见maven国内镜像(maven下载慢的解决方法)。

4. 创建源文件

在src/java目录下新建包,如com.test.jersey,在包下新建类HelloWorld.java,写上代码:

7ac51c4749c4255330ae825fd3813aa4530.jpg

8566bb9afa17cf4337f96f2c37b04888fbd.jpg

packagecom.test.jersey;importjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.Produces;

@Path("/hello")public classHelloWorld {//GET注解设置接受请求类型为GET

@GET//Produces表明发送出去的数据类型为text/plain//与Produces对应的是@Consumes,表示接受的数据类型为text/plain

@Produces("text/plain")publicString getMessage() {return "Hello world!";

}

}

View Code

5. 配置servlet

编辑web/WEB-INF/web.xml,加入代码:

restful_service_test

org.glassfish.jersey.servlet.ServletContainer

jersey.config.server.provider.packages

com.test.jersey

1

restful_service_test

/api/*

6、 配置Tomcat

点击Run >Edit Configurations… > “+” > Tomcat Server > Local,加入Tomcat,选择Deployment tab, 点击“+”, 选择唯一的Artifact,点击"OK"即可。

e928f3f9dc5a4363d005084c3df44829.png

7、在输出中加入库文件

选择Project Structure,点击Artifacts,可以右侧Available Elements下面有很多库文件没有包含在输出中。依次双击各个文件即可。

58a1708b98a9d5c57bdb82bacbf4522f.png

8. 运行Tomcat

运行Tomcat,在浏览器中输入http://localhost:8080/api/hello,即可看到以下输出:

cd5923c774e86a66b024b82416e5c123.png

9、增加SolrService类,访问solr服务

4d614f2fe09c45b9ba8acfee57f1c8ad86a.jpg

e069f7dd48d3cce09760770ca1beb1abe3b.jpg

packagecom.solr.service;importorg.apache.solr.client.solrj.SolrClient;importorg.apache.solr.client.solrj.SolrQuery;importorg.apache.solr.client.solrj.SolrServerException;importorg.apache.solr.client.solrj.impl.HttpSolrClient;importorg.apache.solr.client.solrj.response.Cluster;importorg.apache.solr.client.solrj.response.QueryResponse;importorg.apache.solr.client.solrj.response.ClusteringResponse;importorg.apache.solr.common.SolrDocumentList;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;/*** @Author:sks

* @Description:

* @Date:Created in 9:56 2018/2/26

* @Modified by:

**/

public classSolrService {privateSolrClient 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 voidInit(){

String urlString= "http://localhost:8983/solr/test";

solr= newHttpSolrClient.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 longgetDocTotalCount() {long num = 0;try{

SolrQuery params= newSolrQuery();

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();

}returnnum;

}/*** @Author:sks

* @Description:获取聚类数据

* @Date:*/

publicString getAutoClusterInfo() {//使用这个对象做查询

SolrQuery params = newSolrQuery();//查询所有数据

params.set("qt", "/clustering");

params.setQuery("*:*");

params.setStart(0);

params.setRows((int)getDocTotalCount());//params.setRows(30);

List 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 lst = new ArrayList();for(Cluster c :list){//类别标签

List lblist =c.getLabels();for(String lb:lblist){

System.out.println(lb);

}//聚类文档ID

List 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

publicString getSolrData() {

SolrService ss= newSolrService();

ss.Init();

String s=ss.getAutoClusterInfo();returns;

}

运行tomcat,在浏览器输入:http://localhost:8080/api/hello/getSolrData

8cfaf9c2729e05b91edededc0eba72fc.png

原因找了半天是因为web.xml里面

64e8205002c3b3ed69766b90c9eef66c.png

改为 com.solr.service

df1bc03bd66201610ba6d969924b1dce.png

重新运行tomcat 在浏览器输入:http://localhost:8080/api/hello/getSolrData 还是报错

927f4e5db4d238da51d61ce044580b57.png

原因是Artifacts新加入的jar包没有包含在输出中,依次双击各个文件即可加入到输出中。

6707a18851423d4862acbc930e16aadd.png

终于成功了

f587492eb9e86a8ac6e9a5de9d825e50.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值