我在myeclipse中使用jersey jax- rs作为项目的后端,而在jsp中用作前端。成功登录后,我想从服务器设置cookie。在球衣的官方文档中,我只能找到如何通过球衣获取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。如果您也对此问题感到困扰并最终解决了,请给我一些指示,谢谢。
要在示例中设置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();