首先看web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>solr_service</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.solr.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>solr_service</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>

  

  1、无参数

package com.solr.service;
import javax.ws.rs.*; import javax.ws.rs.core.MediaType;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
import java.util.List; @Path("/solr_Data")
public class solrData { @GET
@Path("/getMessage")
//api/solr_Data/getMessage
@Produces(MediaType.TEXT_PLAIN)
public String getMessage() {
return "Hello world!";
} }

  运行结果:

  

  2、一个@PathParam参数

  
   @GET
@Path("/getMessage/{msg}")
//http://localhost:8080/api/solr_Data/getMessage/Restful-Webservice
@Produces(MediaType.TEXT_PLAIN)
public String getMessage(@PathParam("msg") String msg) { return String.format("Hello %s !",msg); }

  运行结果

  

  3、两个@PathParam参数

    @GET
@Path("/getMessage/{start}-{end}")
//http://localhost:8080/api/solr_Data/getMessage/0-10
@Produces(MediaType.TEXT_PLAIN)
public String getMessage(@PathParam("start") int start,@PathParam("end") int end) {
return String.format("From %d to %d",start,end);
}

  

  4、一个@QueryParam参数

  

 @GET
@Path("/getMessage")
//api/solr_Data/getMessage?msg=Restful-Webservice
@Produces(MediaType.TEXT_PLAIN)
public String getMessage(@QueryParam("msg") String msg) { return String.format("Hello %s !",msg); }

  http://localhost:8080/api/solr_Data/getMessage?msg=Restful-Webservice

  

  5、两个@QueryParam参数

 @GET
@Path("/getMessage")
//http://localhost:8080/api/solr_Data/getMessage?msg=Restful-Webservice&start=10
@Produces(MediaType.TEXT_PLAIN)
public String getMessage(@QueryParam("msg") String msg,@QueryParam("start") int start) { return String.format("Hello %s: %d !",msg,start); }

  

  6、一个PathParam参数,一个QueryParam参数

 @GET
@Path("/getMessage/{start}")
//http://localhost:8080/api/solr_Data/getMessage/0?end=10
@Produces(MediaType.TEXT_PLAIN)
public String getMessage(@PathParam("start") int start,@QueryParam("end") int end) {
return String.format("From %d to %d",start,end);
}

  

  7、多个QueryParam参数参,返回xml数据

    solrEntity实体类

package com.solr.service;

/**
* @Author:sks
* @Description:
* @Date:Created in 16:04 2018/3/1
* @Modified by:
**/
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "solrEntity")
public class solrEntity { String id;
@XmlElement
public String getId() {
return id;
} public void setid(String id) {
this.id = id;
} //fileloadDate,keyword,category,fileType,summary
String fileDate;
@XmlElement
public String getFileDate() {
return fileDate;
} public void setFileDate(String fileDate) {
this.fileDate = fileDate;
} String category;
@XmlElement
public String getCategory() {
return category;
} public void setCategory(String category) {
this.category = category;
} String keyword;
@XmlElement
public String getKeyword() {
return keyword;
} public void setKeyword(String keyword) {
this.keyword = keyword;
} String fileType;
@XmlElement
public String getFileType() {
return fileType;
} public void setFileType(String fileType) {
this.fileType = fileType;
} String summary;
@XmlElement
public String getSummary() {
return summary;
} public void setSummary(String summary) {
this.summary = summary;
} String title;
@XmlElement
public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} String text;
@XmlElement
public String getText() {
return text;
} public void setText(String text) {
this.text = text;
} }

    getQueryData 方法

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.SolrDocument;
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";
solr = new HttpSolrClient.Builder(urlString).build();
} /**
* @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:
* @queryWhere:查询条件
* @showField:显示的字段
* @sortField: 排序字段
*/
public List<solrEntity> getQueryData(String queryWhere, String showField, String sortField) {
SolrQuery params = new SolrQuery(); //例如:fileloadDate:[2018-02-25 TO 2018-03-1] AND category:广告营销
//查询日期在2018-02-25 TO 2018-03-1之间,这里TO 必须是大写,并且category:广告营销的所有数据,
//多个与条件用AND连接,多个或条件用OR连接,必须是大写
params.setQuery(queryWhere); //id,fileloadDate,keyword,category,fileType,summary 多个字段中间用逗号隔开
params.setFields(showField);
//从0页开始
params.setStart(0);
params.setRows((int) getDocTotalCount()); //排序字段 fileloadDate:desc; category:asc
//字段和排序类型中间用冒号隔开,多个字段中间用分号隔开
if (sortField != null && sortField.length() != 0) {
String[] sortFields = sortField.split(";");
List<SolrQuery.SortClause> sortlist = new ArrayList<SolrQuery.SortClause>();
SolrQuery.ORDER order;
for (String sf : sortFields) {
order = sf.split(":")[1] == "asc" ? SolrQuery.ORDER.asc : SolrQuery.ORDER.desc;
SolrQuery.SortClause sc = new SolrQuery.SortClause(sf.split(":")[0], order);
sortlist.add(sc);
}
params.setSorts(sortlist);
}
List<solrEntity> list = new ArrayList<solrEntity>();
try {
QueryResponse queryResponse = solr.query(params);
SolrDocumentList clr = queryResponse.getResults();
System.out.println(clr.getNumFound());
String[] fields = showField.split(",");
for (SolrDocument sd : clr) {
solrEntity se = new solrEntity();
se.setid(sd.get("id").toString());
se.setCategory(sd.get("category").toString());
se.setKeyword(sd.get("keyword").toString());
se.setFileType(sd.get("fileType").toString());
list.add(se);
} } catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return list;
} }

    调用方法

@GET
@Path("/getSolrData")
//@Produces(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_XML)
//api/solr_Data/getSolrData?queryWhere=fileloadDate:[2018-02-25 TO 2018-03-1] AND category:广告营销&showField=id,fileloadDate,keyword,category,fileType&sortField=fileloadDate:desc; category:asc
public List<solrEntity> getSolrData(@QueryParam("queryWhere") String queryWhere,
@QueryParam("showField") String showField,
@QueryParam("sortField") String sortField) {
SolrService service = new SolrService();
//"fileloadDate:[2018-02-25 TO 2018-03-1] AND category:广告营销"
//id,fileloadDate,keyword,category,fileType
//fileloadDate:desc; category:asc
List<solrEntity> list = service.getQueryData(queryWhere,showField,sortField);
return list;
}

  浏览器查询:

http://localhost:8080/api/solr_Data/getSolrData?queryWhere=fileloadDate:[2018-02-25 TO 2018-03-1]  AND category:广告营销&showField=id,fileloadDate,keyword,category,fileType&sortField=fileloadDate:desc; category:asc
查询结果:

												

java 利用JAX-RS快速开发RESTful 服务实例的更多相关文章

  1. java 利用JAX-RS快速开发RESTful 服务

    JAX-RS(Java API for RESTful Web Services)同样也是JSR的一部分,详细规范定义见 https://jcp.org/en/jsr/detail?id=311 .从 ...

  2. java_java 利用JAX-RS快速开发RESTful 服务

    JAX-RS(Java API for RESTful Web Services)同样也是JSR的一部分,详细规范定义见 https://jcp.org/en/jsr/detail?id=311 .从 ...

  3. tomcat 部署 RESTful 服务实例

    1.建立简单restfule服务 参考:java 利用JAX-RS快速开发RESTful 服务实例 简单代码: package com.example; import javax.ws.rs.GET; ...

  4. weblogic 10.x 上开发restful服务

    之前已经学习过 利用JAX-RS快速开发RESTful 服务,当时是jboss环境,如果原封不动的迁移到weblogic 10.x 版本,会杯具的发现应用启动失败,需要做些小调整: 项目结构如下: 需 ...

  5. 使用CXF开发RESTFul服务

    相信大家在阅读CXF官方文档(http://cxf.apache.org/docs/index.html)时,总是一知半解.这里向大家推荐一本PacktPub.Apache.CXF.Web.Servi ...

  6. Web API应用架构在Winform混合框架中的应用(4)--利用代码生成工具快速开发整套应用

    前面几篇介绍了Web API的基础信息,以及如何基于混合框架的方式在WInform界面里面整合了Web API的接入方式,虽然我们看似调用过程比较复杂,但是基于整个框架的支持和考虑,我们提供了代码生成 ...

  7. LBPL--基于Asp.net、 quartz.net 快速开发定时服务的插件化项目

    LBPL 这一个基于Asp.net. quartz.net 快速开发定时服务的插件化项目 由于在实际项目开发中需要做定时服务的操作,大体上可以理解为:需要动态化监控定时任务的调度系统. 为了实现快速开 ...

  8. 在ASP.NET Core中使用Apworks快速开发数据服务

    不少关注我博客的朋友都知道我在2009年左右开发过一个名为Apworks的企业级应用程序开发框架,旨在为分布式企业系统软件开发提供面向领域驱动(DDD)的框架级别的解决方案,并对多种系统架构风格提供支 ...

  9. 利用MVVM设计快速开发个人中心、设置等模块

    我们在做iOS开发过程中,静态页面的开发比开发动态页面更让我们开发者抓狂.因为动态页面通常是一个页面一种cell样式,作为开发者只需要专注于定制好一种样式之后,就可以使用数据填充出较好的界面.而静态c ...

随机推荐

  1. redis之(十九)redis的管理

    [一]redis的安全 --->redis的简洁美,使得redis的安全设计是在“redis运行在可信环境”这个前提下做出来,. --->在生产环境运行时不能允许外界直接链接到redis, ...

  2. poj 2593&&poj2479(最大两子段和)

    Max Sequence Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 16850   Accepted: 7054 Des ...

  3. Divide Two Integers——二分法的经典变形

    Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...

  4. matlab安装及使用

    matlab R2015b在ubuntu 14.04环境下的安装 挂载及运行安装程序 sudo mkidr /media/matlab mount -o loop matlab_R2015b.iso ...

  5. 【hdoj_2187】老人是真饿了

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2187 题意:由很多种价格的大米,在经费一定的情况下,买重量更多的大米,并且题目假设经费买不光所有的大米. ...

  6. WordPress主循环(The Loop)函数have_posts(),the_post()详解

    WordPress中调用文章标题是the_title();调用文章内容时用到the_content();调用文章的作者时用到the_author();等等这些函数,都需要在主循环中使用,下面就介绍一下 ...

  7. Java容器类解析

    1:集合 Collection(单列集合) List(有序,可重复) ArrayList 底层数据结构是数组,默认长度是十 查询快,增删慢 add()时判断是否数组越界,数组扩容为原来的1.5倍 线程 ...

  8. buntu 16.04上安装和配置Samba服务器

    https://www.linuxidc.com/Linux/2017-11/148194.htm

  9. 每一对顶点间最短路径的Floyd算法

    Floyd思想可用下式描述: A-1[i][j]=gm[i][j] A(k+1)[i][j]=min{Ak[i][j],Ak[i][k+1]+Ak[K+1][j]}    -1<=k<=n ...

  10. java 中的try catch在文件相关操作的使用

    import java.io.CharConversionException; import java.io.FileNotFoundException; import java.io.FileRea ...