Параметры HTTP-запроса недоступны с помощью request.getAttribute().

Я отправляю параметр url в сервлет, используя следующий фрагмент jQuery:

$.getJSON("http://localhost:8080/JsoupPrj/JasonGen?url=" + url, function(data) {
    $("#content").html(data);
});

На стороне сервера сервлет получает параметр, для которого я закодировал, как показано ниже:

String url = (String) request.getAttribute("url");

Но это не работает, можете ли вы сказать мне, где я делаю неправильно? Я считаю, что неправильно передаю параметр сервлету. Сервлет запускается каждый раз через JavaScript, но не видит параметры, переданные из браузера.


person user1595858    schedule 24.08.2012    source источник


Ответы (1)


Здесь,

String url = (String) request.getAttribute("url");

вы пытаетесь получить параметр запроса как атрибут запроса, а не как параметр запроса. Это явно не будет делать то, что вы хотите.

Вам нужно получить параметр запроса как параметр запроса, а не как атрибут запроса.

String url = request.getParameter("url");

Не имеет отношения к конкретной проблеме: похоже, вы вообще не кодируете URL-адрес параметра перед отправкой. Это может вызвать другие проблемы, не связанные с этой, когда url содержит специальные символы. Посмотрите на функцию JS encodeURIComponent() или аргумент data функции $.getJSON(). См. дополнительные советы также Как использовать сервлеты и Ajax?

person BalusC    schedule 24.08.2012