如何在Jersey中设置cookie?

时间:2011-08-29 14:00:37

标签: jsp cookies jersey

我在myeclipse中使用jersey jax-rs作为我项目的后端,jsp作为前端。我想在成功登录后从服务器设置cookie。在球衣的官方文件中,我只能找到如何通过球衣获得饼干。有没有人可以给我一个演示来做这些事情?

这是我的登录部分,我返回一个响应并重定向到URL“/”,这意味着index.jsp。

@Path("/login")
@POST
@Consumes("application/x-www-form-urlencoded")
public Response login(@FormParam("email") String email,
        @FormParam("password") String password) {
    Map<String, Object> model = MapFactory.newHashMapInstance();
    model.put("email", email);
    model.put("password", password);
    loginCheck(model);
    if (model.get("emailCheck").equals("ok")
            && model.get("passwordCheck").equals("ok")) {
        return Response.ok(
                new Viewable("/index", new NewCookie("name",
                        "Hello, world!"))).build();
    } else {
        return Response.ok(new Viewable("/login", model)).build();
    }
}

这是我的“/”部分:

@GET
@Produces("text/html")
public Response getIndex(@CookieParam("name") String name) {
    HashMap<String, Object> model = MapFactory.newHashMapInstance();
    model.put("name", name);
    System.out.println("cookie name:\t" + name);
    return Response.ok(new Viewable("/index", model)).build();
}

每次运行此代码时,我都发现无法从索引部分获取cookie。如果你也曾经被这个问题困扰并最终解决了,请给我一些指示,谢谢。

1 个答案:

答案 0 :(得分:21)

要在示例中设置cookie,您可以执行以下操作:

return Response.ok(new Viewable("/index", model))
               .cookie(new NewCookie("name", "Hello, world!"))
               .build();

但是如果你想重定向到“/”,你还需要返回3xx响应而不是200,例如:

return Response.seeOther("/")
               .cookie(new NewCookie("name", "Hello, world!"))
               .build();