Посоветуйте , Пожалуйста, Как Оптимальнее Такое Сделать.

serg777

New Member
28.10.2013
4
0
#1
Что хочу сделать для себя:
Небольшой ( без дальнейшего развития и роста ) сайтик :
1. через http:// обращаюсь к сайту.
1.1. Выбираю из Menu по какому параметру буду искать, ввожу, что именно найти. Сервер ищет в Mysql и возвращает ответ.
1.2 Выбираю из Меню режим Корректировки/Воода и вношу информацию для изменения или добавления. Сервер выполняет эту информацию и возвращает в броузер результат Успешно или Не успешно. Если Не Успешно, то с информацией - о причине.
( сайт будет на opensuse12.3)

Это совсем первые шаги в использовании java+web.
Из того, что попробовал
- NetBeans7.4 +Tomcat.
- создал сервлет и из сервлета вызвал JSP

Для себя понял так, что:
- Сервлеты выполняются на стороне сервера, в tomcat ( они не передаются в броузер на станцию. поэтому в них можно вписать логин и пароль для достпа к СУБД MySQL. т.е. содержимое написанного в сервлете не доступно пользователю )
- JSP - они, как обычные HTML-страницы, затягиваются на станцию пользователя и выполняется код на стации. т.е. их код пользователь может видеть.
Прваильно понял ?

В размышлениях - первоначальный диалог с пользователем для предоставления Выбора менюшек и приема запроса реализовывать при помощи СЕРВЛЕТОВ , а JSP использовать только для возвращеия результата ?

Сергей
 

LuMee

Well-Known Member
02.05.2006
477
0
#2
Сервлеты выполняются на стороне сервера, в tomcat ( они не передаются в броузер на станцию. поэтому в них можно вписать логин и пароль для достпа к СУБД MySQL. т.е. содержимое написанного в сервлете не доступно пользователю )
В целом, верно, но вот вписывать логины/пароли в код нехорошо, такие вещи надо держать в настройках.

JSP - они, как обычные HTML-страницы, затягиваются на станцию пользователя и выполняется код на стации. т.е. их код пользователь может видеть.
Не совсем. В JSP присутствует смесь HTML (CSS, JS) и серверного кода (Java и специальные теги). Серверный код выполняется, внезапно, на сервере, пользователю приезжает только результат его выполнения в виде HTML/CSS/JS/и т.п. Вообще, если правильно помню матчасть, веб-сервер в ходе работы приложения компилирует JSP страницы в обыкновенные сервлеты, так что JSP можно рассматривать просто как UI-ориентированный способ записи сервлетов.

В размышлениях - первоначальный диалог с пользователем для предоставления Выбора менюшек и приема запроса реализовывать при помощи СЕРВЛЕТОВ , а JSP использовать только для возвращеия результата ?
В наше время в моде подход MVC, которого и советую придерживаться. В рамках такой архитектуры JSP будут служить для формирования слоя представления (View), на сервлетах же можно сооружать контроллеры.
 

serg777

New Member
28.10.2013
4
0
#3
...
В наше время в моде подход MVC, которого и советую придерживаться. В рамках такой архитектуры JSP будут служить для формирования слоя представления (View), на сервлетах же можно сооружать контроллеры.
Почитал.
Не осознал внятно, как следcтвие - не понял как перенести на то, что делаю.

Вопрос-1:
такой подход будет сильно плохим ?:
- По обращению http://mysite , будет запускаться на выполнение index.jsp
- В Index.jsp будет вызывать MainForm.jsp
- В MainForm.jsp будет реализован главный экран - там поля, куда можно ввести информацию для поиска
- После ввода шаблона для поиска и нажатия Enter из mainForm.jsp будет вызываться myservlet, который:
+ подключиться к mysql.
+ сделает нужный запрос
+ запустиь answer.jsp для вывода на экран ответа
?

Вопрос-2:
как в MainForm.jsp реализовать не только ввод строки для поиска , а и предоствить возможность выбора из списка ( список - это столбец из таблцы mysql )
?

Вопрос-3:
Судя по всему - многократно из различных мест, разных javaservlet будут создаваться подключения к mysql .
Их следует сразу закрывать, перед тем, как запускать jsp для вывода ответа на экран ?
 

LuMee

Well-Known Member
02.05.2006
477
0
#4
Вопрос-1:
такой подход будет сильно плохим ?...
Да, в целом, нормально. Для пущей красоты можно сделать так, чтобы все входящие запросы принимал один сервлет, который будет уже их перенаправлять другим сервлетам или JSP-страницам (в зависимости от того, что делаем).
К слову, дабы не изобретать велосипедов, можно посмотреть в сторону различных web-фреймворков для java (типа Struts или Spring), там все это уже реализовано.

Вопрос-2:
как в MainForm.jsp реализовать не только ввод строки для поиска , а и предоствить возможность выбора из списка ( список - это столбец из таблцы mysql )?
Я бы делал как-то так:
1. создаем какой-нибудь класс (MainFormModel, например), в котором будет свойство, содержащие список значений для формы.
2. в сервлете, который примет запрос на отображение индексной страницы (и, соот-но, MainForm.jsp) создаем экземпляр MainFormModel и в него кладем список, вытащенный из БД.
3. полученный экземпляр MainFormModel кладем в аттрибуты сессии или запроса
4. на jsp-странице с помощью EL добираемся до MainFormModel и списка внутри бина, после чего строим из него нужный HTML (select, как я понимаю, в данном случае).
пример

Вопрос-3:
Судя по всему - многократно из различных мест, разных javaservlet будут создаваться подключения к mysql .
Их следует сразу закрывать, перед тем, как запускать jsp для вывода ответа на экран ?
Лучше закрывать: соединение с БД - дорогой ресурс, держать его открытым без нужды не стоит. В общем случае лучше делать так: открыли соединение, вытащили нужные данные и сразу закрыли, чтобы соединение оставалось занятым как можно меньше времени.