JSP - web services
-
- Уже с Приветом
- Posts: 815
- Joined: 23 Nov 2003 02:29
- Location: UA, VA
-
- Уже с Приветом
- Posts: 16086
- Joined: 22 Apr 2003 17:57
- Location: Колыбель
Re: JSP - web services
faw wrote:Бродяга wrote:MVC модель но как-то странно глупо сделанна. Почему запрос сразу в сервлет стучится если результат через JSP выводится?:pain1: Хотя конечно может это условие задачи. Но чаще всего MVC делают:
Запрос ->JSP -> Servlet ->DB и в обратном порядке уходит ответ. Когда сложная бизнес логика то между сервлетом и DВ живут EJB. Но для простой задачи это изврат
плохо, очень плохо.
в MVC запрос стучится в контроллер. И этот самый контроллер есть не что иное как сервлет (делать его jsp смысла нет). Результат потом показывается (о чудо) через jsp, которая рисует html страничку, из которой submit идет (о чудо) опять таки в сервлет.
Естественно контролером может быть и jsp -но это уже изврат, потому как jsp более удобна для того чтоб презентовать данные, а контролер и модель как разу удобнее держать в обычных классах.
Ну что-же начнем ломать копьяю. Откуда вы запрос в web based application получаете? Из браузера. Браузер что показывает? JSP или HTML. Таким образом первым отображается как я и написал JSP. Потом запрос идет в контроллер. Контроллер идет за данными если нужно в DB. Результат обратно в JSP отправляется.
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
-
- Уже с Приветом
- Posts: 815
- Joined: 23 Nov 2003 02:29
- Location: UA, VA
Re: JSP - web services
Бродяга wrote:faw wrote:Бродяга wrote:MVC модель но как-то странно глупо сделанна. Почему запрос сразу в сервлет стучится если результат через JSP выводится?:pain1: Хотя конечно может это условие задачи. Но чаще всего MVC делают:
Запрос ->JSP -> Servlet ->DB и в обратном порядке уходит ответ. Когда сложная бизнес логика то между сервлетом и DВ живут EJB. Но для простой задачи это изврат
плохо, очень плохо.
в MVC запрос стучится в контроллер. И этот самый контроллер есть не что иное как сервлет (делать его jsp смысла нет). Результат потом показывается (о чудо) через jsp, которая рисует html страничку, из которой submit идет (о чудо) опять таки в сервлет.
Естественно контролером может быть и jsp -но это уже изврат, потому как jsp более удобна для того чтоб презентовать данные, а контролер и модель как разу удобнее держать в обычных классах.
Ну что-же начнем ломать копьяю. Откуда вы запрос в web based application получаете? Из браузера. Браузер что показывает? JSP или HTML. Таким образом первым отображается как я и написал JSP. Потом запрос идет в контроллер. Контроллер идет за данными если нужно в DB. Результат обратно в J
SP отправляется.
Браузер показывает (о чудо) HTML. Который был сгенерен на сервере с помошью JSP. Но перед тем как это jsp показать был послан запрос. Куда он был послан?
в тоже самое jsp которое служит для вывода информации? тогда это не mvc
если он был послан в специальную jsp которая работает контроллером - то тогда да, тогда конечно jsp приняла запрос. но это не совсем ровно IMHO
Обычно все таки запросы шлют в сервлет. который уже вызывает соотв. классы логики, которые формируют информацию для вывода, и передает запрос с подговленными данными в JSP, которая просто рисует следующий экран.
-
- Уже с Приветом
- Posts: 815
- Joined: 23 Nov 2003 02:29
- Location: UA, VA
-
- Уже с Приветом
- Posts: 5669
- Joined: 13 Oct 2000 09:01
- Location: East Bay, CA
Re: JSP - web services
faw wrote:Бродяга wrote:Ну что-же начнем ломать копьяю. Откуда вы запрос в web based application получаете? Из браузера. Браузер что показывает? JSP или HTML. Таким образом первым отображается как я и написал JSP. Потом запрос идет в контроллер. Контроллер идет за данными если нужно в DB. Результат обратно в JSP отправляется.
Браузер показывает (о чудо) HTML. Который был сгенерен на сервере с помошью JSP. Но перед тем как это jsp показать был послан запрос. Куда он был послан?
в тоже самое jsp которое служит для вывода информации? тогда это не mvc
если он был послан в специальную jsp которая работает контроллером - то тогда да, тогда конечно jsp приняла запрос. но это не совсем ровно IMHO
Обычно все таки запросы шлют в сервлет. который уже вызывает соотв. классы логики, которые формируют информацию для вывода, и передает запрос с подговленными данными в JSP, которая просто рисует следующий экран.
А может там собака порылась в том, что диаграмма начинается с объекта HTTP Request, который передается в сервлет?
Ну откусили они немного от начала процесса..Может в слайд не влазило?
Сабина
Last edited by Sabina on 30 Jan 2004 21:43, edited 1 time in total.
-
- Уже с Приветом
- Posts: 5669
- Joined: 13 Oct 2000 09:01
- Location: East Bay, CA
faw wrote:Ну если с вебсервисами проблем нет то напишите pure j2ee приложение (даже без ejb)
но например с использованием Struts
А вы не могли бы в трех словах пояснить что есть JSF (Java Server Faces)? Если я понимаю правильно они работают на struts framework, а по сути продвинутое JSP(доп таг либ).
Сабина
-
- Уже с Приветом
- Posts: 815
- Joined: 23 Nov 2003 02:29
- Location: UA, VA
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
Сабина, стратс только третьей частью основан на JSP (просто мне по уху резануло), первые две - это сервлеты и джава бинс. В самом деле, можно не строить полноценный сервис для вашего проекта, а воспользоваться стратс. Тоже интересная вещь, правда не стандартизированная.Sabina wrote:А вы не могли бы в трех словах пояснить что есть JSF (Java Server Faces)? Если я понимаю правильно они работают на struts framework, а по сути продвинутое JSP(доп таг либ).
Last edited by blanko27 on 30 Jan 2004 21:59, edited 1 time in total.
...а мы такой компанией, возьмем, да и припремся к Элис!
-
- Уже с Приветом
- Posts: 16086
- Joined: 22 Apr 2003 17:57
- Location: Колыбель
Re: JSP - web services
faw wrote:Браузер показывает (о чудо) HTML.
А XML он показать не может?
faw wrote:Который был сгенерен на сервере с помошью JSP. Но перед тем как это jsp показать был послан запрос. Куда он был послан?
в тоже самое jsp которое служит для вывода информации? тогда это не mvc
Да ну? Блин, что-же у меня login скрин появляется без обращения к контроллеру? Контроллер о ней понятия не имеет. А вот апп сервер да, знает.
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
-
- Уже с Приветом
- Posts: 815
- Joined: 23 Nov 2003 02:29
- Location: UA, VA
Re: JSP - web services
Бродяга wrote:faw wrote:Браузер показывает (о чудо) HTML.
А XML он показать не может?faw wrote:Который был сгенерен на сервере с помошью JSP. Но перед тем как это jsp показать был послан запрос. Куда он был послан?
в тоже самое jsp которое служит для вывода информации? тогда это не mvc
Да ну? Блин, что-же у меня login скрин появляется без обращения к контроллеру?
потому что этот конкретный запрос не ложится на MVC патерн.
По моему так.
-
- Уже с Приветом
- Posts: 1169
- Joined: 16 Jan 2003 23:23
Re: JSP - web services
Sabina wrote:hooch wrote:MVC - это дизайн паттерн, никак с веб сервисами не связан, как впрочем и с JSP, т.к вместо JSP можно использовать любую другую презентационную платформу.
А как тогда позволите понимать вот этот рисунок?
Сабина
Так и понимать, что на данной диаграмме в качестве presentation layer использованы JSP, а могли быть например ECS (http://jakarta.apache.org/ecs/index.html).
-
- Уже с Приветом
- Posts: 1476
- Joined: 05 Dec 2000 10:01
- Location: Vilnius -> Bonn
Sabina wrote:faw wrote:Ну если с вебсервисами проблем нет то напишите pure j2ee приложение (даже без ejb)
но например с использованием Struts
А вы не могли бы в трех словах пояснить что есть JSF (Java Server Faces)? Если я понимаю правильно они работают на struts framework, а по сути продвинутое JSP(доп таг либ).
Сабина
JSF bolee prostaja versija MVC like Struts ot Sun
-
- Уже с Приветом
- Posts: 1536
- Joined: 03 Aug 2000 09:01
Мои 2 цента.
Со всей этой шумихой вокруг web services легко забыть, что web service - это всего лишь внешний интерфейс для сервиса (без приставки web-), т.е. обычного класса, инкапсулирующего в своих методах бизнес логику высокого уровня, в противоположность логике низкого уровня, т.е. getters & setters бизнес-объектов.
Примером сервиса может являться класс типа HROperations с методом (среди прочих) increaseSalaryToDepartment(deptId, percentIncrease), который в одной транзакции (!!! ) пробежит по всем работникам данного департмента и вызовет их setSalary (низкоуровневая логика) методы. Или же, если ОО подход не применяется, сделает что-нибудь типа update emp set salary = salary * ? where dept_id = ?.
То есть, еще раз хочу акцентировать, сервис - это бизнес логика высокого уровня, выполняющий операции, охватывающие много сеттеров.
Так вот, services layer является одним из необходимых атрибутов хорошо спроектированного J2EE приложения. На основе этого layer'a можно надстраивать какие угодно пользовательские интерфейсы, будь-то JSP+MVC или толстое Swing приложение, или же каждый сервис можно зарегистрировать как web service, т.е. пропустить его через java2WSDL примочку. При желании, это сервис можно обернуть stateless session bean'ом, а потом уже зарегистрировать этот бин как web service. Короче, вариантов много, но главное правило одно: нужен services layer. А обернете ли вы его web services layer'ом - это уже второй вопрос, который мы сейчас и попробуем осветить.
Ну тут-то все проще. Для чего нужны web services? Для EAI, т.е. для Enterpise Application Integration, а в частности:
1. Для обеспечения взаимодействия между частями одного приложения, написанными на разных языках программирования
2. Для обеспечения взаимодействия с приложениями других компаний, которые в большинстве случаев, опять-таки написаны на разных языках программирования.
Резюмируем: ни того, ни другого у вас нет. Отсюда: web services вам не нужны. Строить ваши JSP на вызовах web services - будет преступлением против своей компании и себя лично. Убьете перформанс напрочь.
Другое дело - services layer. Имея его, стройте свои JSP на вызовах services. Внимательно также прислушайтесь к советам местных товарищей об использовании архитектуры MVC. Я лично использую Struts - замечательнейшая вещица.
И только потом уже пропустите свои сервисы через java2wsdl и гордо заявите начальству, что web services готовы как побочный продукт
Удачи!
P.S. Возможно, я неправильно перевел coarse grained logic and fine grained logic как логика высокого и, соответсвенно, низкого уровня.
P.P.S. Пробегание по всем сотрудникам департмента использовалось только как пример более сложной логики, чем просто сеттеры. В реальном приложении рекомендуется не использовать. update emp set... в данном случае работает лучше.
Со всей этой шумихой вокруг web services легко забыть, что web service - это всего лишь внешний интерфейс для сервиса (без приставки web-), т.е. обычного класса, инкапсулирующего в своих методах бизнес логику высокого уровня, в противоположность логике низкого уровня, т.е. getters & setters бизнес-объектов.
Примером сервиса может являться класс типа HROperations с методом (среди прочих) increaseSalaryToDepartment(deptId, percentIncrease), который в одной транзакции (!!! ) пробежит по всем работникам данного департмента и вызовет их setSalary (низкоуровневая логика) методы. Или же, если ОО подход не применяется, сделает что-нибудь типа update emp set salary = salary * ? where dept_id = ?.
То есть, еще раз хочу акцентировать, сервис - это бизнес логика высокого уровня, выполняющий операции, охватывающие много сеттеров.
Так вот, services layer является одним из необходимых атрибутов хорошо спроектированного J2EE приложения. На основе этого layer'a можно надстраивать какие угодно пользовательские интерфейсы, будь-то JSP+MVC или толстое Swing приложение, или же каждый сервис можно зарегистрировать как web service, т.е. пропустить его через java2WSDL примочку. При желании, это сервис можно обернуть stateless session bean'ом, а потом уже зарегистрировать этот бин как web service. Короче, вариантов много, но главное правило одно: нужен services layer. А обернете ли вы его web services layer'ом - это уже второй вопрос, который мы сейчас и попробуем осветить.
Ну тут-то все проще. Для чего нужны web services? Для EAI, т.е. для Enterpise Application Integration, а в частности:
1. Для обеспечения взаимодействия между частями одного приложения, написанными на разных языках программирования
2. Для обеспечения взаимодействия с приложениями других компаний, которые в большинстве случаев, опять-таки написаны на разных языках программирования.
Резюмируем: ни того, ни другого у вас нет. Отсюда: web services вам не нужны. Строить ваши JSP на вызовах web services - будет преступлением против своей компании и себя лично. Убьете перформанс напрочь.
Другое дело - services layer. Имея его, стройте свои JSP на вызовах services. Внимательно также прислушайтесь к советам местных товарищей об использовании архитектуры MVC. Я лично использую Struts - замечательнейшая вещица.
И только потом уже пропустите свои сервисы через java2wsdl и гордо заявите начальству, что web services готовы как побочный продукт
Удачи!
P.S. Возможно, я неправильно перевел coarse grained logic and fine grained logic как логика высокого и, соответсвенно, низкого уровня.
P.P.S. Пробегание по всем сотрудникам департмента использовалось только как пример более сложной логики, чем просто сеттеры. В реальном приложении рекомендуется не использовать. update emp set... в данном случае работает лучше.
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: JSP - web services
Sabina wrote:А может там собака порылась в том, что диаграмма начинается с объекта HTTP Request, который передается в сервлет?
Ну откусили они немного от начала процесса..Может в слайд не влазило?
Сабина
А с чего еще она может начинаться?
-
- Уже с Приветом
- Posts: 5669
- Joined: 13 Oct 2000 09:01
- Location: East Bay, CA
Re: JSP - web services
..ahhh ... forget it
Cабина
Cабина
-
- Уже с Приветом
- Posts: 1536
- Joined: 03 Aug 2000 09:01
Re: JSP - web services
Sabina wrote:..ahhh ... forget it
Cабина
Дорогая Сабина,
Совершенно понятно ваше смущение и фрустрация из-за обилия противоречащих советов. Тем не менее, позвольте мне повторить свой совет: не используйте web services для небольшого внутреннего приложения. Если только вы не придерживаетесь девиза "После нас хоть потоп".