首先看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. hdu 1864(01背包,输入处理真烦)

    最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  2. jquery实现页面加载时删除特定class 的div内前三个字符

    jQuery(document).ready(function(){        jQuery("div.groupheader").each(function(){ $(thi ...

  3. AC日记——大爷的字符串题 洛谷 P3709

    大爷的字符串题 思路: 莫队,需开O2,不开50: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 20000 ...

  4. electron调用C#应用程序实现串口通信

    最近转入零售行业开发了一系列产品,包含便利店收银软件.会员系统.供应链系统.为了追赶潮流,收银软件使用了electron平台开发,界面效果.开发效率确实不错:但是涉及到串口通讯时遇到了麻烦,elect ...

  5. canvas时钟效果

    话不多说,直接上代码 <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/x ...

  6. es2015(es6)学习总结

    1.三种声明方式 var:它是variable的简写,可以理解成变量的意思. let:它在英文中是“让”的意思,也可以理解为一种声明的意思. const:它在英文中也是常量的意思,在ES6也是用来声明 ...

  7. Centos安装Sun的JDK及测试

    查询系统默认的JDK Centos系统(我vm上安装的是Centos6.3)默认会安装OpenJDK,要想使用默认的JDK,也需要你自己配置环境变量. 首先,检查系统是否安装有JDK并且OpenJDK ...

  8. Nginx反代,后端一个IP绑定多个SSL证书,导致连接失败之解决方法:HTTPS和SNI扩展

    默认:SSL协议进行握手协商进行连接的时候,默认是不会发送主机名的,也就是是以IP的形式来进行https连接握手协商的,这就导致一个问题,当一台服务器上有多个虚拟主机使用同一个IP的时候, Nginx ...

  9. 【Go】基础语法之接口

    接口定义: 利用关键字interface来定义一个接口,接口是一组方法的集合. 例如: type People interface { Show(name string, age int) (id i ...

  10. 设计模式-外观模式(Facade Pattern)

    本文由@呆代待殆原创,转载请注明出处:http://www.cnblogs.com/coffeeSS/ 外观模式简介 外观模式的作用用一句话说就是简化接口,举个例子楼主每次编程的时候都要点开IDE.点 ...