2014-09-28 3 views
1

У меня есть сценарий, в котором есть jsp, в котором есть несколько гиперссылок. Одна из ссылок кодируется таким образом.Передача параметра JSP до сервлета

<a href="Example?op=srk>hyperlink 1</a> 
<!--The value srk is replaced dynamically in code--> 

ссылки выше, будет отправлять запрос на сервлет имени Example передавая параметр запроса через URL. Поскольку это гиперссылка, запрос отправляется в метод doCet() для сервлетов Example. В этом я использую параметр запроса, обрабатывая что-то и перенаправляя запрос другому jsp далее, прикрепляя для этого запроса атрибут (с некоторым объектом в нем). Функциональность работает, и я получил то, что мне нужно. Но побочный эффект или проблема, которую я чувствую, это URL-адрес браузера, который имеет параметры запроса, как показано ниже.

http://localhost:8080/context/Example?op=srk 

Я не хочу видеть отправленные пармесы. Во-первых, разумен ли мой подход? Я имею в виду, есть ли лучший альтернативный способ достичь этого. Я использую основной J2EE (JSP и сервлеты), без фреймворков, без JavaScript.

ответ

0

Когда вы нажимаете на эту ссылку, вы выполняете HTTP-запрос GET на свой сервлет, поэтому вы видите параметры, которые вы передаете. Вы можете рассмотреть возможность использования формы или альтернативы, чтобы вы могли выполнить запрос HTTP POST. После этой реализации это не будет в адресной строке.

1

Я разрабатываю @ ответ Сезина, лучший способ - пойти с методом POST, чтобы избежать ваших параметров, видимых в URL-адресе.

Как вы сказали, вы заполняете динамическое значение в переменной op=srk. вы можете использовать html-форму для хранения переменной op в виде скрытой переменной.

вы можете использовать кнопку submit в форме, чтобы вы могли обработать запрос в doPost() вашего сервлета.

Надеюсь, что это поможет!

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