Java RESTful设置Pragma和Expires

Java RESTful设置Pragma和Expires,java,rest,caching,jersey,jax-rs,Java,Rest,Caching,Jersey,Jax Rs,如何使用RESTful服务设置“Pragma”=“无缓存”和“过期”=“0” 我补充了以下内容 CacheControl cc = new CacheControl(); cc.setNoCache(true); cc.setNoStore(true); cc.setMustRevalidate(true); cc.setMaxAge(0); 上面的函数返回以下标题 HTTP/1.1 200 OK Cache-Control: no-cache, no-store, no-trans

如何使用RESTful服务设置
“Pragma”=“无缓存”
“过期”=“0”

我补充了以下内容

 CacheControl cc = new CacheControl();
 cc.setNoCache(true);
 cc.setNoStore(true);
 cc.setMustRevalidate(true);
 cc.setMaxAge(0);
上面的函数返回以下标题

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, no-transform, must-revalidate, max-age=0
Content-Type: application/json
Transfer-Encoding: chunked
不确定如何设置
“Pragma”=“无缓存”
“过期”=“0”


任何帮助都是非常值得欣赏的。

您可以通过注入
HttpServletResponse
或返回
response
对象,在Jersey中设置您喜欢的任意响应头

HttpServletResponse示例:

@Produces(MediaType.APPLICATION_JSON)
public MyObject getValues(@Context HttpServletResponse response) {
    response.setHeader("Pragma", "no-cache");
    response.setHeader("Expires", "0");
    ...
}
@Produces(MediaType.APPLICATION_JSON)
public Response getValues() {
        return Response.status(200)
                 .entity(new MyObject())
                 .expires(new Date())
                 .header("Pragma", "no-cache")
                 .type(MediaType.APPLICATION_JSON);
}
响应示例:

@Produces(MediaType.APPLICATION_JSON)
public MyObject getValues(@Context HttpServletResponse response) {
    response.setHeader("Pragma", "no-cache");
    response.setHeader("Expires", "0");
    ...
}
@Produces(MediaType.APPLICATION_JSON)
public Response getValues() {
        return Response.status(200)
                 .entity(new MyObject())
                 .expires(new Date())
                 .header("Pragma", "no-cache")
                 .type(MediaType.APPLICATION_JSON);
}

谢谢Greg,我已经使用了HttpServletResponse。我想知道这两种方法都设置了头,这对IE中的数据缓存有什么影响吗?设置标题的全部目的是防止在IE中缓存数据,然而,尽管添加了标题,数据仍在IE 8中缓存。根据您设置标题的方式,缓存不会有任何区别。我将转储原始响应,并确保缓存控制和Pragma头设置为您期望的值。