Как установить cookie в Джерси? - PullRequest
9 голосов
/ 29 августа 2011

Я использую jax-rs в myeclipse как бэкэнд моего проекта, а 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 Ответ

21 голосов
/ 01 сентября 2011

Чтобы установить 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...