| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > проблема с передачей параметров сервлету |
| Автор: Hardworker 15.4.2006, 21:55 | ||
| Здравствуйте. Я пишу первое своё приложение для работы пользователя с БД через интернет и язык Java начал использовать тоже недавно. У меня возникли некоторые проблемы. Приложение которое я хочу разработать соcтоит из html страниц и сервлета. Работа с приложением начинается с процедуры ввода логина и пароля к БД. Появляется html страница которая имеет поля для ввода логина и пароля . Пользователь вводит их и жмет на кнопку . Эти параметры передаются сервлету(первый сервлет)методом POST он получив их создает соединение с БД (создает Connection), или выводит ошибку. Если все прошло нормально то происходит
То есть я переадресую вызов html странички которая обеспечивает пользователя возможностью сформировать запрос к БД и опять же методом POST я посылаю введенные параметры в другой сервлет, который и обеспечит выполнение этого запроса и выдаст результат. Тут у меня возникают проблемы. Я не могу передать второму сервлету объект Connection созданный в первом сервлете (или мне нужно проверить произошло ли подключение к БД первым сервлетом затем закрыть его и отослать параметры пароля и логина второму сервлету, а он потом и произведет подключение заново, но это как-то некрасиво по моему). Или процедуру логина и бизнес логику мне нужно объединить в один сервлет, но тогда как быть с методом doPost в сервлете он получается вызывается несколько раз, а в нем будет происходить каждый раз еще и подключение к БД. Другая проблема с этим методом. На index.html будут ссылки на несколько html страниц на которых пользователь сможет организовывать разные типы запросов , и на каждой из этих страниц будут кнопки для посылки параметров в сервлет методом POST как мне разделить эти методы,ведь Я не могу написать несколько методов doPost в одном сервлете. Или как-то можно. Наверное мне надо писать на каждую кнопку по отсылке параметров свой сервлет для работы с этими параметрами, но тогда как все эти сервлеты подключить к одной БД? Помогите разобраться |
| Автор: Bulat 16.4.2006, 10:39 | ||
| 1.Объяви глобальную переменную: private Connection con; И передавай ее как параметр другим классам. В чем проблема? 2.можешь в сервлет передавать вместе с ссылкой еще и id, с определенным значением. Получив его в сервлете, ты можешь сравнить что у тебя пришло и вызвать нужный метод для работы
в сервлете используешь request.getParameter("id") |
| Автор: Hardworker 16.4.2006, 10:42 | ||||||
| Здравствуйте LAmer George. Я пытаюсь сохранить объект Connection как атрибут сессии, но почему-то у меня не получается вызватть его из второго сервлета. Хочу привести код, как Я это делаю.
После этого пользователь заполняя поля формирует запрос и методом post отправляет их к другому сервлету который его выполняет и отсылает результат Вот как Я пытаюсь получить обьект Connection во втором сервлете.
Помогите разобраться. как правильно сохранять и вызывать обьекты из дной сессии разными сервлетами???
Можно по подробнее расказать про реализацию такого метода. Тоесть мне что нужно организовать что то вроде case структуры и в зависимости что пришло запускать тот или иной блок в case соответствующий тому скрытому параметру, который получили. |
| Автор: batigoal 16.4.2006, 11:09 | ||||
Строка
не нужна. Но ты вроде все делаешь правильно. Что именно ты получаешь во втором сервлете - ошибку, null, еще что-нибудь?.. В первом сервлете соединение устанавливается без ошибок?
Да, именно так. Вместе с остальными полями формы будет передаваться еще одно, не видимое пользователю, а в сервлете - определенные действия в зависимости от значения этого параметра. |
| Автор: Hardworker 16.4.2006, 18:47 | ||||
У меня connect1 содержит null, Я не пойму почему. Причем Я решил передать еще несколько параметров из первого сервлета, это логин и пароль пользователя
, но Я не могу получить во втором сервлете даже список параметров сессии. А получаю Я его так
В результате ничего не выводится в цикле. Выводится только вторым сервлетом connect1=null. Подскажите как решить проблему?? |
| Автор: batigoal 16.4.2006, 19:29 |
| А как ты попадаешь во второй сервлет? Ты не уходишь с сайта между запросами к этим сервлетами? Т.е. не теряется ли сессия? |
| Автор: Hardworker 16.4.2006, 20:01 | ||
Первый сервлет у меня создает обьект Connection и если подключение удачное то Я перехожу на index.html
на этой странице Я формирую запрос заполняя поля . Там есть кнопка которая посылает эти параметры второму сервлету методом post. <form name="form1" method="post" action="http://127.0.0.1:8080/devserv/servlet/devserv"> Вот так Я перехожу во второй сервлет. Может быть тут и теряется что то. Но я не понимаю что. Ведь Я так понял что сессия к серверу у пользователя создана или нет, тут две сессии получается? |
| Автор: Goliath 16.4.2006, 22:55 | ||||
HttpSession session=request.getSession(true); эта строка должна быть первой
|
| Автор: Hardworker 16.4.2006, 23:20 |
| Здравствуйте Goliaf. У меня нет такого метода session.putAttribute(), что это за метод, может тут ошибка. |
| Автор: Goliath 17.4.2006, 07:34 | ||
Я имел ввиду putValue:
|
| Автор: batigoal 17.4.2006, 08:37 |
Хм. Я всегда использовал setAttribute, и не понял из доки, в чем вообще между ними разница. |
| Автор: tux 17.4.2006, 11:55 | ||
putValue() - deprecated, может и не работать. |