首先看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. git------删除Repository

    需求:删除仓库 Lucky-Repository,实现步骤如下截图所示 如上完成删除操作

  2. [水煮 ASP.NET Web API2 方法论](12-1)创建 OData

    问题 怎样用在 Web API 中创建 OData 服务. 解决方案 对于我们来说,在 Web API 中使用 OData最简单的方式就是使用 ASP.NET 模板来创建Odata Controlle ...

  3. cordova plugin 大全及安装命令

    前言:用cordova开发hybrid app的过程中,由于是html5开发的app,在手机上很多权限受限制,这就导致了我们需要安装很多插件来弥补这一缺点.在网上搜了好久,感觉都不是很全,所以自己整理 ...

  4. gulp-babel,es6转es5

    npm install --save-dev gulp-babel npm install --save-dev babel-preset-es2015 var gulp = require(&quo ...

  5. lsof恢复进程打开的文件

    工作原理:进程每打开文件都会生成一个文件句柄FD来标识一个文件,进程打开的文件如果没有被释放,可以通过文件句柄FD来恢复删除的文件 注意:适合恢复进程一直在打开一个文件,例如日志文件,如果配置文件进程 ...

  6. 【ASP.NET】IHttpHandler和IHttpModule

    上篇文章我们主要讲了HttpApplicatiion管道事件,那么我么如何处理这些管道事件呢,以及请求在ASP.NET是如何执行的呢,我们来了解一下IHttpHandler和IHttpModule 引 ...

  7. CF1025B Weakened Common Divisor【数论/GCD/思维】

    #include<cstdio> #include<string> #include<cstdlib> #include<cmath> #include ...

  8. 【Bzoj4555】【Luogu P4091】求和(NTT)

    题面 Bzoj Luogu 题解 先来颓柿子 $$ \sum_{i=0}^n\sum_{j=0}^iS(i,j)2^jj! \\ =\sum_{j=0}^n2^jj!\sum_{i=0}^nS(i,j ...

  9. 1. ECMAScript 6 简介--ES6

    1. ECMAScript 和 JavaScript 的关系 国际标准化组织ECMA 制定了语言 ECMAScript, 该标准针对 Javascript 语言制定, 不叫Javascript 原因有 ...

  10. 【BZOJ 1455】 1455: 罗马游戏 (可并堆-左偏树+并查集)

    1455: 罗马游戏 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那 ...