2010-01-04 2 views
1

У меня есть ссылка, по щелчку которого я должен получил следующую страницу, я даю URL-адрес для ссылки, как
http://localhost/test/controller?name=""&image="url"Передача данных от одной страницы к другой при щелчке гиперссылки

ли есть способ передать данные без добавления URL-адреса при щелчке ссылки? Его нормальный href.

ответ

2

Если другая страница находится в том же домене, то любая информация, хранящаяся в файлах cookie, может быть доступна обоими из них и не должна быть добавлена ​​к ссылке. Обычно, если вы используете JSP, контейнер сервлета автоматически управляет сеансами для вас (на основе куки-файла за кулисами) - поэтому вы можете устанавливать атрибуты в сеансе на одной странице, а затем читать их из другого. См. Например, Sun tutorial о сохранении состояния клиента в сервлетах.

Имейте в виду, что это должно было произойти на стороне сервера, поэтому, если это было что-то, что нужно было сделать точно, когда пользователь нажал на ссылку (например, записывая время, которое они нажали) то это не может быть сделано с помощью чистой логики сеанса JSP. Вам нужно будет предоставить какую-то логику на основе файлов cookie.


И если целевая страница находится на другой домен в целом, то добавление атрибутов запроса является единственным способом передать эту информацию. Я не уверен, что вы возражаете против этого, будь то технический или иной; это очень распространенная техника и хорошо работает. Существует множество методов применения «косметических» настроек к процессу, таких как целевая страница, чтобы прочитать информацию из URL-адреса, поместить ее в сеанс клиента на на сайт, а затем заменить URL-адрес «чистым», версии (т. е. с удалением всех добавленных параметров). В качестве альтернативы, POST-запрос будет означать, что атрибуты не отображаются в самом фактическом URL-адресе, и имеет смысл, если ссылка представляет какое-то действие или не повторяется (то есть не заклассифицируемое) состояние.

Какая у вас проблема с установкой атрибутов в URL?

+0

На самом деле у url есть имя карты, а также URL-адрес изображения, который долгое время можно добавить, но я не хочу этого делать? do i hv использовать response.encodeurl? – sarah

+0

Прошу прощения, я не совсем понимаю, что вы пытаетесь сказать в своем комментарии. Тем не менее, мне известно, что вы просто повторили, что вы * можете * добавить параметры запроса, но не хотите * хотеть *. Не могли бы вы уточнить, почему вы не хотите? (И да, вам нужно будет закодировать параметры, если они появятся в URL-адресе) –

+0

как кодировать параметры, добавляемые в URL-адрес? – sarah

0

Извините за очевидный вопрос, просьба POST не возможна? (Например, имеющие связь общего между form.submit(), целевая форма будет вашей целевой URL, а метод формы будет POST и ваши данные в скрытые поля)

1

Там два способа достижения этой цели:

  1. Использовать форму POST.

    <form method="post" action="controller"> 
        <input type="hidden" name="name" value=""> 
        <input type="hidden" name="image" value="url"> 
        <input type="submit" value="click"> 
    </form> 
    

    Вы можете использовать CSS для стилизации кнопки, как если бы это была ссылка. Конечно, вам необходимо реализовать doPost() в сервлете контроллера.

  2. Используйте шаблон URL «RESTFul» (и SEO) (убедитесь, что сервлет вашего контроллера отображается на /controller/* вместо /controller).

    <a href="controller/name/url">click</a> 
    

    в сочетании со следующим в doGet() (конечно, наряду с некоторыми тривиальными проверки, чтобы избежать RuntimeExceptions как индекс массива выходит за границы):

    String pathInfoParts = request.getPathInfo().split("/"); 
    String name = pathInfoParts[1]; 
    String image = pathInfoParts[2]; 
    

    Это не ясно, что вы на самом деле имеете в виду с «URL », но если это полный URL-адрес http: //, то вы должны использовать консоль, чтобы просто сохранить их на карте на стороне сервера и просто передать ключ карты в качестве параметра/pathinfo. Или если это в вашем собственном контексте, просто сделайте его относительным.

Смежные вопросы