| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Вызов сервлета из JSP |
| Автор: Kotakota 14.12.2010, 20:43 | ||
| Привет. Начинаю изучать JAVA EE. Такой вопрос. Пишу гостевую книгу. Поделил ее на 2 составные части: 1. Форма добавления сообщения. Ну тут все вроде понятно. Делаю так:
Обычная форма, которая потом вызывает сервлет, который добавляет сообщение в БД. 2. Вывод оставленных сообщений. Вот тут застрял Как я думаю это должен быть еще один сервлет, который будет выводить сообщения из бд. (например будет передовать массив записей в JSP). Вопрос как к нему подключиться, чтобы он передал массив сообщений. Тег <FORM> тут уже не используешь. В дополнение прилагаю графическое описание моих мыслей. http://s2.ipicture.ru/Gallery/Viewfull/2602742.html |
| Автор: dobrolub 14.12.2010, 21:29 | ||||
| Ответ на такой вопрос может быть достаточно объёмным, но кратенько так: Сервлет вызывается либо напрямую, либо с помощью <jsp:include page="/messages"/>. Обычно сервлет достаёт данные из базы и кладёт их в request. Пример:
в jsp, можно использовать jstl (псевдо код)
|
| Автор: Kotakota 14.12.2010, 21:38 | ||
Можно пример вызова напрямую? А <jsp:useBean> не подойдет? Слышал, что JavaBean компоненты не могут реализовывать логику и выступать в роли контроллера. |
| Автор: dobrolub 14.12.2010, 22:19 |
| Прямой вызов сервлета - из браузера, по url замапленному к этому сервлету. К вопросу о jsp:useBean: да, конечно можно. Вы посмотрите ещё на различные tutorials по веб приложениям. |
| Автор: Skipy 15.12.2010, 11:05 |
| Kotakota, если говорить о том, как делать правильно, то JSP вообще не должен содержать никакой бизнес-логики - только средства отображения. Вся бизнес-логика должна быть в сервлете. Он получает ВСЕ запросы, разбирает их, определяет необходимые действия, выполняет их, и потом делает forward на нужный JSP. При этом в request уже положены все данные для формирования страницы. Так что не сервлет должен вызываться из JSP, а наоборот. |
| Автор: Kotakota 15.12.2010, 14:09 | ||
Уважаемый Skipy. Но ведь при загрузке страницы, первоначально вызывается *.jsp. Или нужно вызывать сервлет контроллер, прописанный, например в web.xml? А он в свою очередь будет вызывать необходимое представление в *.jsp странице? Еще такой вопрос. Например, вызвал сервлет, который подключил файл *.jsp формы ввода сообщения и *.jsp вывода всех сообщений. Добавляю новое сообщение... Вызывается сервлет который добавляет сообщение. А потом из сервлета добавления сообщения вызываем.... Какой сервлет вызвать, чтобы снова показать гостевую книгу? А если еще и постраничная разбивка будет.... Я запутался какой сервлет когда вызывать и в связях между ними..... |