|
0 / 0 / 0
Регистрация: 04.08.2009
Сообщений: 17
|
|
Отвлеченный вопрос о JSP01.11.2009, 13:21. Показов 4034. Ответов 32
Метки нет (Все метки)
Зачем нужны JSP? Особенно в крупных проектах. Возможно, я не понимаю, как их правильно использовать.
Напрягает меня то, что jsp предполагает смешивание программного кода с html. В результате такие страницы я не могу доверить верстальщику. С подобным столкнулся когда начал изучать PHP. Первые страницы были с жуткой мешаниной. Потом, начитавшись умных книг, понял, что программный код нужно обязательно разделять. Я знаю, что в JSP можно создать свои теги, и не очень сложно объяснить их значение верстальщику. Но в результате получается, что логика отображения результата строится командами, которые выглядят как теги. И не понятно как разделить код. В php, для генерации html страниц я пользуюсь шаблонами. Чтобы не было разночтений, кратко перескажу в чем суть. Загружаю куски html кода из текстовых файлов. В них, в нужных местах есть метки. Меткам присваиваются некоторые значения. После этого можно выполнить парсинг: в результате получаю html код, состоящий из прочитанного файла, в котором метки заменены необходимыми мне значениями. И все, больше ни каких наворотов. Для этих целей использую библиотеку FastTemplate (очень простая и быстрая). Для реализации такого подхода, написал пару классов на java, для использовании их в сервлетах. Получилось достаточно быстро и удобно. Но не дает покоя вопрос, почему же Sun преподносит JSP, как средство для построения html страниц – не лучше ли использовать шаблонные технологии. А теперь более конкретная задача. Пусть у нас есть некоторые результаты, которые нужно оформить в виде html таблицы (это может быть результат sql запроса). Нужно иметь возможность исправлять дизайн таблицы отдельно от программного кода. Т.е. с этой задачей должен справиться человек совершенно не знакомый с программированием. Ниже я привожу пример того, как я решаю такую задачу с использованием шаблонов. В свою очередь хотелось бы увидеть, как решить такую задачу на jsp. Пояснения к коду: Имеется два шаблона – mainpage и item. Mainpage – html таблица в которой на месте строк стоит метка LIST. Item – изображение строки таблицы, с меткой ITEM в том месте, куда нужно вставить данные. В результате есть отдельно код сервлета, и два файла с фрагментами html кода. [code] package com.coba.comod.admin; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.*; import com.coba.fasttemplate.*; public class SimpleServlet extends HttpServlet { private static final String CONTENT_TYPE = 'text/html; charset=windows-1251'; public TemplateFactory factory=null; public void init() throws ServletException { factory=TemplatePool.getFactory(); try { factory.defineTemplate( 'mainpage', '/t01.html', getServletContext()); factory.defineTemplate( 'item', '/t02.html', getServletContext()); } catch(IOException ioe) { } } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType(CONTENT_TYPE); response.getWriter().println('Hi!'); PrintWriter out = response.getWriter(); HashMap param=new HashMap(); factory.setPattern(param,'TITUL','Новая проверка'); for (int i=100;i<110;i++) { factory.setPattern(param,'ITEM','('+i+') '); factory.parseAppend('item', param, 'LIST'); } factory.parse(&
0
|
|
| 01.11.2009, 13:21 | |
|
Ответы с готовыми решениями:
32
ещё вопрос по jsp JTable + AbstractTableModel; отвлеченный вопрос Вопрос по JSP |
|
1 / 1 / 3
Регистрация: 03.08.2008
Сообщений: 390
|
|
| 05.11.2009, 12:53 | |
|
Java кода нет ни в XSL ни в XML.
Чтобы больше это понять нужно просто ознакомится с технологией Struts и StrutsCX. Там есть такое понятие как Action. Можно грубо сказать некий прообраз сервелета. В нём то весь код и сидит. Задача Action принять параметры и ,если необходимо, создать XML. XML создаётся не вручную, есть некий ActionForm c набором необходимых свойств и т.д. и т.п.
0
|
|
|
1 / 1 / 3
Регистрация: 03.08.2008
Сообщений: 390
|
|
| 05.11.2009, 12:54 | |
|
Для создания XSL дизайнеры пользуются XMLSPY
0
|
|
|
1 / 1 / 3
Регистрация: 03.08.2008
Сообщений: 390
|
|
| 05.11.2009, 13:04 | |
|
И ещё, это моё личное мнение, я считаю что дизайнеру проще разобратся со стандартными XSL тегами и как бы полностью отвечать за разработку страницы, чем каждый раз колбасится с новыми тегами в JSP. Типа этот блок мой, этот опять не мой... и.т.д.
Да конечно при изменении XML девелопер может полезть в XSL и продправить чего то, или наоборот дизайнер может пожелать что бы девелопер внёс кой какие изменения в XML. Но всё равно за модель данных отвечает девелопер, за представление - дизайнер.
0
|
|
|
0 / 0 / 0
Регистрация: 04.08.2009
Сообщений: 17
|
|
| 05.11.2009, 13:26 [ТС] | |
|
>А на тему что Вам кажется что подход применямый при >программированиее на PHP 'лучьше' тех что применяют в java, мое
В некотором смысле да, поход который я применял в php - 'лучше' для определенных условий. >мнение заключаеться в следующем - PHP отличаеться от J2EE а j2EE >наверное отличаеться еще и от ASP и подходы применяемые там и здесь >отличны по умолчанию и просто так не переносимы. Вот в этом как раз Вы и не правы. Шаблонный подход я уже перенес для использования в сервлетах. Все замечательно. На локальной машине крутится существенно быстрее чем в php. >Например абсолютно непонятно ограничение накладываемые на >содержимое в HTML template. А именно необходимость исключить слово >NUMBER или STRING из любых коментариев или текста, иначе мне его >заменят на значения параметра. Есть же ограниения на идентификаторы. Почему не смущает инструкция: String for; На самом деле такой проблемы как правило не стоит. В укачестве меток выбираются заметные и случайно не повторяемые комбинации символов. Например: P5437_TITUL
0
|
|
|
0 / 0 / 1
Регистрация: 21.09.2009
Сообщений: 184
|
|
| 05.11.2009, 17:35 | |
|
Щас я ложку дегтя подброшу в бочку меда XSL и PHP подхода (поскольку с XSL я сам все правил).
Как Вы генерите ссылки (href/src) хочу посмотреть? особенно с учетом клиентов не поддерживающих coockies. Неужели jsession ручками вставляете и/или доступно объяснили HTML верстателям все нюансы URL Rewriting? http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/http/HttpServletResponse.html#encodeURL(java. lang.String)
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 05.11.2009, 18:57 | |
|
2 ogapon
Еще вопрос. Для XML документов, сформированных динамически, вызывается один и тот же XSL, или можно вызывать разные? Для разных докуметов разные? Каждый раз, когда нужно выполнить трансформацию вызов трансформатора вы пишите или делегируете вызов готовой библиотеке (не вашей). Вообще, мысль интересная. Только одно 'но': формирование XML документа -- ресурсоемкая задача. Жду два комментария ) -- на вопрос и как вы боритесь с ресурсоемкостью?
0
|
|
|
1 / 1 / 3
Регистрация: 03.08.2008
Сообщений: 390
|
|
| 05.11.2009, 19:46 | |
|
Для любого XML можно использовать несколько XSL, в зависимостьи от ситуации (типа юзер видит одну страницу, админ - другую, а данные то те же).
О трансформации даже никто и не задумывается. Всё реализовано в StrutsCX. В нужном месте указывается какой объект (он же потом станет XML) связывается с файлом XSL На любой Bean уже генерится XML. Если нужно данные читать из формы, то используется наследник класса ActionForm, имена полей формы это имена свойств соответствующего ActionForm. Насчёт ресурсоёмкости пока серьёзных проблем не было.
0
|
|
|
mishgun
|
|
| 06.11.2009, 06:08 | |
|
Я бы на Вашем месте так сильно не увлекался атоматычно генерируемым XML везде всегда есть баги(особенно в автоматично создаваемом коде)и самое главное его выловить вовремя а не то всем будет хорошо.....
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 08.11.2009, 10:12 | |
|
2 ogapon
Еще вопрос (терпение испытываю ). Вы проводили нагрузочное тестирование? Если да, то для скольких одновременно подсключенных пользователей и в какой конфигурации приложения такая модель давала приемлимые результаты.У нас вот самой критичной операцией было размещение заказа. Мы получили 80 одновременных пользователей, устойчиво размещающих заказы. Конфигурация: Машина #1 (PIII-500, 1GB, Linux RedHat ???): . JRun 4 (EJB & Servlet container) . Apache Машина #2 (same): . Oracle 9 Машина #3 (same): . Сторонний процессор заказов (провайдер услуг, stanalone приложение на C++) Это был предел -- 80 пользователей одновременно на вот том оборудовании. У вас какие-нть тесты такие были? Не прощаюсь )
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 08.11.2009, 10:27 | |
|
...Ну и Sun JDK 1.4 для JRun. Ну и сеть, конечно же, Ethernet 100 МБит/с на витой паре (100BASE-T). Правда, все 3 машины + 4-я тестирующая были подключены к одному коммуникатору (switch 3Com'овский). Правда, канал загружался в пике всего на 60%. Но я не исключаю, что мы экперимент неправильно проводили. Но, скорее правильно, чем нет. В любом случае все звенья цепи ожидали, когда БД отработает размещение заказа. Кажется все
0
|
|
|
1 / 1 / 3
Регистрация: 03.08.2008
Сообщений: 390
|
|
| 08.11.2009, 13:21 | |
|
Разочарую....
Нагрузочное тестирование мы не проводили.
0
|
|
|
Korwin
|
|
| 15.11.2009, 10:33 | |
|
Можно и мне вставить свои три копейки?
В своих проектах от JSP отказался полностью. Заменил на связку Servlet & FreeMarker. FreeMarker - движок шаблонов. Очень быстрый, легкий в использовании, легко расширяемый, имеет хорошие средства работы с XML (можно считать его заменой для XSLT в некотором смысле), интегрируется с Ant и имеет класную поддержку community. Работа с БД описывается в объектах, имеется пул объектов, а также собственный брокер. В шаблон передаются только начальные данные, а в шаблоне, если дизайнеру требуются дополнительные данные он их 'заказывает' и с ними работает. Таким образом при смене дизайна не надо править Java source. При сложном дизайне вся логика (Tree view, dynamic menues и т.д.) реализуется на коде FreeMarker. Смесь получилась на удивление удобная и нравится нашим дизайнерам. |
|
|
FreeZer
|
|
| 24.11.2009, 20:25 | |
|
Если уж речь пошла о шаблонных движках, то хотелось бы узнать работал ли кто с Velocity и Tapestry? Ваше мнение?
|
|
| 24.11.2009, 20:25 | |
|
Помогаю со студенческими работами здесь
33
Отвлечённый разговор о сложностях вычислений в разных системах счисления Пересылка запроса с jsp страницы на эту же jsp с другими параметрами [JSP] Назначать класс элементов в header.jsp на разных страницах Как реализовать аналог <b onclick="<jsp:forward page=xxx.jsp/>menuN</b> ?? Не могу передать значения из jsp в сервлет и снова в jsp Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|