С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Alexis220382
0 / 0 / 1
Регистрация: 04.04.2015
Сообщений: 18

Взаимодействие jsp и сервлет

14.06.2015, 12:22. Показов 2050. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, есть косяк.
Прошу разъяснить для понимания.

Задание заключается в том, чтобы плавно переходить в реализации mvc, при последовательном изучении технологий.
Сначала я сделал сервлет, на базе которого реализовал всю вьюшку и контроллер (JDBC остался отдельным объектом).
После чего вывел всю программу в jsp, т.е. и вьюшка и контроллер теперь оказались на jsp.
Теперь задача потиху расставлять все по своим местам, т.е. вьюшку оставить на jsp, а алго обращения к базе данных вынести в сервлет-контроллер.
Я понимаю, что результат работы - это тоже не айс, над этим кодом еще работать и работать, но решить сею задачу надо.

Не понимаю вот чего.
Есть во вьюшке форма со списком select и полученным через сервлет атрибутом
Java
1
2
3
4
5
6
7
8
9
10
11
12
                           <form action="begin.jsp">
                                <h2 align="left">
                                    <select name="combobox">
                                        <%for (Product next : (List<Product>) request.getAttribute("productList")) {
                                                out.println("<option value=" + next.getId() + ">"
                                                        + next.getDescription()
                                                        + "</option>");
                                            }%>
                                    </select>
                                    <input type="submit" value="OK">
                                </h2>
                            </form>
begin.jsp - это просто транзит, который все что к нему не приходит отправляет в сервлет.

в сервлете сей атрибут установлен
Java
1
2
3
4
5
6
    
request.setAttribute("productList", productDAO.getProduct());
dispatcher = request.getRequestDispatcher("index.jsp");
if (dispatcher != null) {
    dispatcher.forward(request, response);
}
Вот эта конструкция работает как надо, НО!!!
как только я устанавливаю второй необходимый атрибут
Java
1
2
3
4
5
6
7
   
request.setAttribute("productList", productDAO.getProduct());
request.setAttribute("showProduct", productDAO.getProductById(Integer.parseInt(request.getParameter("combobox"))));
dispatcher = request.getRequestDispatcher("index.jsp");
if (dispatcher != null) {
    dispatcher.forward(request, response);
}
вся программа идет крахом.
Суть проблемы в том, что при запуске программы ошибка, а printStackTrace(); бьет java.lang.NumberFormatException: null
Я понимаю, что комбобокс из jsp сервлет на момент запуска не видит и он равен не целому числу, а null.
Вот теперь сам вопрос ............Как дать начальное значение вот этому параметру Integer.parseInt(request.getParameter("c ombobox"))?????
Толи я потерялся, толи я заучился, но ступор поймал на этом не детский.
Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.06.2015, 12:22
Ответы с готовыми решениями:

Не могу передать значения из jsp в сервлет и снова в jsp
Имеется солидный проект, в котором суть такова: Сайт с просмотром новостей (меню новостей, название новости и текст новости, данные...

Сервлет и jsp
у меня есть сервлет, он выполняется например если в урл введем ...index.jsp потом я обрабатываю инфу, и мне нужно что бы он(сервлет)...

JSP и сервлет, сделать программу
Здраствуйте, необходимо сделать работу, понимаю, что за &quot;спасибо&quot; тут мало кто её сделает, поэтому готов заплатить за неё (на карту,...

6
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
14.06.2015, 12:50
попробуйте применить JSTL теги... там будет попроще. заодно избавитесь от скриплетов...
0
 Аватар для Alexis220382
0 / 0 / 1
Регистрация: 04.04.2015
Сообщений: 18
14.06.2015, 12:55  [ТС]
Т.е. вопрос решается только так?
Или всетаки через атрибуты можно порешать?
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
14.06.2015, 12:59
имеете ввиду вот это?
Цитата Сообщение от Alexis220382 Посмотреть сообщение
request.setAttribute("showProduct", productDAO.getProductById(Integer.parseI nt(request.getParameter("combobox"))));
тут изначально кто запускается т.е. сервлет откуда берет значения комбобокса?
походу ниоткуда...
0
 Аватар для Alexis220382
0 / 0 / 1
Регистрация: 04.04.2015
Сообщений: 18
14.06.2015, 13:08  [ТС]
Вот было изначально в jsp и все было гут
Java
1
<%List<Product> productList = productDAO.getProductById(Integer.parseInt(request.getParameter("combobox")));%>
Но весь смысл работы, чтобы во вьюшке обращения к ДАО не было, обращение должно быть в сервлете.
Я понимаю, что jsp - это тоже сервлет, но задача сделать jsp вьюшкой, а сервлет.java контроллером, который к ДАО обращается, а jsp пользуется продуктами работы контроллера.
Потиху иду к нормальной реализации mvc, но не разобравшись в каждой технологии досконально, нечего лезть сразу в конечную реализацию.
Поэтому задачу надо решить именно так.
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
14.06.2015, 13:13
Alexis220382, посмотрите вот тут, ситуация была почти такая...
думаю это Вам поможет.
1
 Аватар для Alexis220382
0 / 0 / 1
Регистрация: 04.04.2015
Сообщений: 18
14.06.2015, 16:05  [ТС]
По тому примеру который там приведен вопросов нет, так все работает, а как только встает вопрос о инициализации параметра вьюшки в сервлете, вот тут проблема

Добавлено через 10 минут
Спасибо, вопрос решен.
Решен проверкой на null.
Java
1
2
3
4
5
6
7
8
9
request.setAttribute("productList", productDAO.getProduct());
if(request.getParameter("combobox") != null){
request.setAttribute("showProduct", productDAO.getProductById(
      Integer.parseInt(request.getParameter("combobox"))));
}
dispatcher = request.getRequestDispatcher("index.jsp");
if (dispatcher != null) {
     dispatcher.forward(request, response);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2015, 16:05
Помогаю со студенческими работами здесь

Передать значение из jsp в сервлет
Здравствуйте. Есть jsp страница. В ней таблица. Собственно, вопрос : как можно передать значение cell.id в сервлет? &lt;td...

Можно из jsp сервлет вызвать?
Можно ли из jsp сервлет вызвать? параметров передавать не надо. По href='.applicationservletReservationServlet' не получается. может...

IDEA+Apache+Tomcat JSP не работает сервлет
В общем, совсем недавно пересел на эту замечательную IDE, но вопрос не в ней, а в том, где ошибка... Написал простой JSP-сервлет. Программа...

Вывод данных из БД через сервлет в jsp + jstl
Доброго времени суток, форумчане! Нужна помощь и совет. Почему не выводятся данные? Где сделал ошибку? И вообще так делается,...

Не ясно как сделать сервлет (jsp-страницу) и Oracle get_info
Помогите сделать контрольную: 1. Заполните в коде любую java-коллекцию значениями объектов: short_name=&quot;AL&quot; name=”Alabama”...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru