首先看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. LeetCode Binary Tree PostorderTranversal

    Problem Description Given a binary tree, return the postorder traversal of its nodes' values. For ex ...

  2. html5 -audio-移动端如何自动播放

    最近在做一些活动类页面或者类似于易企秀类型的轻应用经常遇到关于audio标签的应用,对于audio相关的常用知识点以及一些相关的问题如下: <audio id="audios" ...

  3. 在网站中嵌入VideoJs视频播放器

    一个博客难免需要引用视频来说明内容,但想要自己来实现一个视频播放器是不是一时半会就能完成的,更重要的是这需要对视频播放技术有一定的了解.于是自然而然的有人会想到开源项目.一个不错的选择便是video. ...

  4. hdu多校5

    1002 思路:贪心显然不好贪,直接爆搜. #include<bits/stdc++.h> #define LL long long #define fi first #define se ...

  5. 解决nginx+php二级页面显示空白的问题

    迁移官网商城的发现主页的二级界面显示空白页,此https商城网站 后修改nginx配置,显示正常 添加 location ~ [^/]\.php(/|$) { #fastcgi_pass remote ...

  6. python之sqlite3使用详解

    Python SQLITE数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它使用一个文件存储整个数据库,操 作十分方便.它的最大优点是使用方便,功能 ...

  7. 一个纠结的Linux定时任务

    昨天写了一个Linux定时任务,搞了半天才是搞好,现在分享下我犯得错误 首先在Linux根目录下创建一个目录 mkdir cat_crazy 进去创建一个shell脚本test.sh,内容是: #!/ ...

  8. PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集

    L2-001 紧急救援 (25 分)   作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...

  9. NIO使用Reactor模式遇到的问题

    关于Reactor模式,不再多做介绍,推荐Doug Lea大神的教程:Java 可扩展的IO 本来在Reactor的构造方法中完成一系列操作是没有问题的: public class Reactor i ...

  10. 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题

    在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建 ...