Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 04.08.2009
Сообщений: 17

Отвлеченный вопрос о JSP

01.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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2009, 13:21
Ответы с готовыми решениями:

ещё вопрос по jsp
снова всем здасте) можно ли создать страничку только на jsp? без использования html я пишу что то вроде этого(что ниже приведено), но...

JTable + AbstractTableModel; отвлеченный вопрос
всем привет. Есть такая фишка: при обновлении JTable (например если перекрыть окно другим окном) JTable заново перечитывает данные из...

Вопрос по JSP
Доброе время суток.Столкнулся накануне со следующей проблемой.Есть сайт с...

32
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? Ваше мнение?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.11.2009, 20:25
Помогаю со студенческими работами здесь

Отвлечённый разговор о сложностях вычислений в разных системах счисления
Данная тема была вынесена, как оффтоп из https://www.cyberforum.ru/informatics/thread922908.html Это как можно умудриться, не поняв таких...

Пересылка запроса с jsp страницы на эту же jsp с другими параметрами
Хочу реализовать паджинацию страницы, на страницу приходить запрос со списком объектов, jsp страница отображает часть этого списка в...

[JSP] Назначать класс элементов в header.jsp на разных страницах
Есть header.jsp, который я включаю в свои страницы: &lt;link href=&quot;${contextPath}/resources/css/header.css&quot;...

Как реализовать аналог <b onclick="<jsp:forward page=xxx.jsp/>menuN</b> ??
Smysl zadachi v sledujuschem: menu.jsp - formiruet menu ishodia iz znachenii v baze dannuh. Tam neskolko kategorii, i na etoi starnice...

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


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru