Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSP — с чего начать? 
V
    Опции темы
diablero
Дата 11.8.2007, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Цитата(Stampede @  10.8.2007,  20:07 Найти цитируемый пост)
Второе: трюки с перебором параметров неоправданно загромождают код воркеров, тем более что это дело можно запросто инкапсулировать.

Добавил в класс AbstractWorker:
Код

 public HashMap getParameterMap(){
        HashMap map = new HashMap();
        Enumeration param = request.getParameterNames();
        while(param.hasMoreElements()) {
            String key = (String)param.nextElement();
            map.put(key, request.getParameter(key));
        }
        return map;
 }

1. Текст сообщений об ошибке
Тут выбор на мой взгляд прост, если сайт многоязычный, то проще иметь несколько вариантов шаблонов.
Поэтому передаю текстовую константу.
2. Текст подтверждения
Сделал так:
Код

public class ConfirmData {
    public static final int DEFAULT_ACTION = 0;
    public static final int LOGIN_ACTION = 1;
    public static final int LOGOUT_ACTION = 2;
    public static final int REGISTRATION_ACTION = 3;

    private int actionType = DEFAULT_ACTION;
    
    public void setActionType(int actionType) {
        this.actionType = actionType;
    }
    public int getActionType() {
        return actionType;
    }
}

Код

#set( $DEFAULT_ACTION = 0 )
#set( $LOGIN_ACTION = 1 )
#set( $LOGOUT_ACTION = 2 )
#set( $REGISTRATION_ACTION = 3 )

<html>
<head>
    <title>$message</title>
</head>
<body>
<center>
#if( $confirmData.getActionType() == $LOGIN_ACTION )
    <br><br><br><h2>Вход выполнен. Добро пожаловать.</h2><br>
    Перейти на <a href="/home.shtml">главную страницу</a>
#elseif( $confirmData.getActionType() == $LOGOUT_ACTION )
    <br><br><br><h2>Выход выполнен. До свидания.</h2><br>
    Перейти на <a href="/home.shtml">главную страницу</a>
#elseif( $confirmData.getActionType() == $REGISTRATION_ACTION )
    <br><br><br><h2>Регистрация прошла успешно.</h2><br>
    Перейти на <a href="/home.shtml">главную страницу</a>
#else
    <br><br><br><h2>Действие выполнено.</h2><br>
    Перейти на <a href="/home.shtml">главную страницу</a>
#end
</center>
</body>
</html>


Это сообщение отредактировал(а) diablero - 11.8.2007, 17:11


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Tony
Дата 11.8.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Mетод getParameterMap содержимое заменить на
@SuppressWarnings("unchecked")
    public Map<String,String> getParameterMap(){
          return request.getParameterMap();
    }



--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
goodday1941
Дата 12.8.2007, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: нет
Всего: 9



Извиняюсь за оффтоп, но это важно! 

Сейчас читая эту тему пытаюсь реализовать свой проект (пока до 11 странички добрался с JPA), в общем большая просьба к диаблеро - не править код в предедущих постах а создавать новые посты с исправлениями. Может к 20 страничке ситуация изменилась, но на 11 пока постоянные правки предедущих постов, непонятки получаються  smile 

PS... за затею большое спасибо  smile , уже много интерестного для себя почерпнул (XStream, JPA) 

Это сообщение отредактировал(а) goodday1941 - 12.8.2007, 15:11


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Stampede
Дата 12.8.2007, 05:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Welcome to the club, goodday1941!

Приятно видеть, что люди интересуются вопросом.

По поводу правки постов - да, я уже несколько раз говорил об этом diablero, вроде ситуация исправилась к лучшему.



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 12.8.2007, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Исправилась, исправилась ...smile


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
goodday1941
Дата 12.8.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: нет
Всего: 9



ну еще малек оффтопа.. сейчас с Velocity разбираюсь... данный инструмент оЧень понравился, но что то эта тема слабо раскрытой получилась в ваших топиках и нагуглить я толкового ничего не смог, что самое обидное (пол часа искал либы которые нужно подключить, кстатии в списке либ в приатаченом зип архиве их небыло, и сайт джакарты что то не выдал мне даунлоад ссылку на либы)... 

в общем то можете подсказать толковых текстовичков по Velocity? заранее благодарен smile 


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
diablero
Дата 12.8.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Ссылка на Velocity: тынс.
Документации на сайте, на мой взгляд достаточно.

Список подправлю.



--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Maksym
Дата 13.8.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Stampede
Скажи, пожалуйста, знаком ли ты с технологей facelets? Какие преимущества и недостатки предлагаемого здесь подхода против facelt'ных шаблонов?
PM MAIL   Вверх
Stampede
Дата 14.8.2007, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(Maksym @  13.8.2007,  04:28 Найти цитируемый пост)
Скажи, пожалуйста, знаком ли ты с технологей facelets?


Нет, не знаком, но поскольку само название Facelets предполагает его связь с "лицами", а "лица" продвигают люди, чей образ веб-программистского мышления был сформирован под влиянием JSP, то скажу честно: я отношусь к Facelets с большим предубеждением. Вот я сейчас глянул обзорную статью Facelets fits JSF like a glove, и что я там увидел? Все тот же корявый синтаксис кастом тэгов, куча обязательных объявлений, невнятная связь шаблона с моделью...

Товарищи, вы поймите, кастом тэги - это, по большому счету, всего лишь способ организовать обратные вызовы (callbacks) из шаблона в некие Java-компоненты. Но для этого совсем не обязательно городить такой огород!

Maksym, я понимаю, тебя интересует, как у нас будет решен вопрос с компонентностью. Обещаю, очень положительно будет решен smile Потерпи, уже совсем чуть-чуть осталось. Я тебе могу даже конкретно сказать: когда будем делать механизм постраничного вывода.

diablero:

Посмотрел твой код. В принципе все нормально. Замечания:

1. Метод AbstractWorker.getParameterMap()

Я под инкапсуляцией имел в виду немного другое. Понимаешь, воркерам должно быть вообще до балды, какие там проблемы возникают при кастинге параметров. Скорее всего, проблема вообще решается правильным описанием дженериков в классе FormInfo. Но даже если не решается, то можно вручную перебрать все эти параметры в конструкторе FormInfo(Map map), и вот это и будет искомой инкапсуляцией.

2. Класс ConfirmData

Я ведь говорил о текстовых константах, а ты используешь числовые. Тогда ты мог бы прямо в коде Velocity сравнивать со строками, например #if($action == "LOGIN_ACTION"), и не надо было бы объявлять их по десять раз.

Кроме того, в классе можно было бы предусмотреть переменную типа Object, в которой передавать любой произвольный объект. Например, при подтверждении логина - объект User, а при подтверждении поста - объект Post. Это позволило бы выводить более конкретизированный текст сообщения (например, включающий названия поста), а в качестве ссылки - прописывать соответствующий УРЛ.

3. Воркер ConfirmationWorker

И еще одна важная вещь. В классе ConfirmationWorker нужно обязательно добавить код, который подчищает сессию: удаляет атрибуты formData и confirmData. Это нужно для того, чтобы отслеживать ситуации, когда юзер попал на страницу подтверждения неестественным образом: например, по ссылке извне, по кнопкам взад/вперед или через закладку браузера.

Соответственно, в шаблоне должна стоять проверка: если переменная $confirmData отсутствует, то говорить юзеру, чтобы он не лез куда не следует, и пернаправлять его на домашнюю страницу.

Следующим шагом предлагаю сделать ввод новых постов:

УРЛ: /form/post.shtml
Воркер: PostFormWorker
Шаблон: forms/post.vm

|
V

/submit/post.do
SubmitPostWorker

А вслед за этим сразу сделаем редактирование постов.

И еще, по поводу подразделов. Ты, кажется, собирался ввести для них новую сущность. А что если тебе впоследствии понадобится под-подраздел. А потом под-под-подраздел, и так далее?

Нет уж, вот есть у тебя сущность Section, вот в ней и надо сразу заложить иерархичность. Если самостоятельно не получится, будем решать вместе.



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
Maksym
Дата 14.8.2007, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Stampede, спасибо за ответ.
PM MAIL   Вверх
diablero
Дата 14.8.2007, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Цитата(Stampede @  14.8.2007,  00:33 Найти цитируемый пост)
 проблема вообще решается правильным описанием дженериков в классе FormInfo

чего-то не находиться решение...
Цитата(Stampede @  14.8.2007,  00:33 Найти цитируемый пост)
 Следующим шагом предлагаю сделать ввод новых постов

Почти доделал. Сдесь нужно сразу привести все в порядок. Я имею ввиду сущность Section, подразделы. Завтра после работы, доэксперементирую, и если понравиться реализация, все запостю.

Это сообщение отредактировал(а) diablero - 15.8.2007, 14:59


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
ouks
Дата 15.8.2007, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.6.2007

Репутация: нет
Всего: нет



Привет! слежу за вашей темой уже несколько недель. Спасибо за столь полезный топик. Пытаюсь вас догнать. Опыта как такового в java нет.   Застрял вот на сервлете, 
запуская Infinite1[1].1.3.4 второй день.
Да только выдает  упорно "error page" из шаблона  smile Оно у всех запускается без проблем? 

 ок..продолжаю.. попробую еще раз все по пунктам..  эх, как же на пхп все попроще  smile  

PM MAIL   Вверх
Shaggie
Дата 16.8.2007, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 2
Всего: 72



Цитата(ouks @  15.8.2007,  23:55 Найти цитируемый пост)
Да только выдает  упорно "error page" из шаблона

Было такое. Долго боролся.
Код MainController.java из Infinite1.1.3.4:
Код

...

    static {
        mappings = new HashMap<String, Class<Worker>>();
        mappings.put("/home.shtml", HomeWorker.class);
        mappings.put("/section.shtml", SectionWorker.class);
        mappings.put("/post.shtml", PostWorker.class);
    }

...

В этом коде, скорее всего, барахлят пути к классам, которые засовываются в mapping.
Проверить пути можно так:
Код

...

        Writer writer = response.getWriter();
        writer.write(html);

        writer.write("<br>" + url); // добавь эту строку в код

        writer.flush();
        tx.commit();

...

Посмотри пути, а потом либо впиши их в mapping, либо надо будет поизвращаться с настройками сервера.

Удачи.

 smile Да, на PHP поначалу проще, но когда проект разрастается... Где тут смайлик самоубийцы? И к тому же от от сервлетно-шаблонного подхода веет этаким... профессионализмом, что ли... программерским благородством... Не знаю даже, как описать.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
goodday1941
Дата 16.8.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: нет
Всего: 9



вопрос в тему... 
Stampede, предлагал вынести стили в отдельный css файл... собсно вопрос в следующем где его размещать, что прописать в web.xml и какой путь к css файлу прописывать в самой веб страничке?

ПС... только познакомился с css... и то что я первым вразумил: деражть всю инфу о стилях  в отдельном файле имеет смысл в плане быстродействия, так как css файлы кешируються. Поправте если я не прав smile


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Maksym
Дата 16.8.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Цитата(goodday1941 @  16.8.2007,  15:42 Найти цитируемый пост)
где его размещать

Нормально будет разместить его в папке css, созданной на одном уровне со стартовой страницей.
Цитата(goodday1941 @  16.8.2007,  15:42 Найти цитируемый пост)
что прописать в web.xml

Ничего не нужно.
Цитата(goodday1941 @  16.8.2007,  15:42 Найти цитируемый пост)
акой путь к css файлу прописывать в самой веб страничке

Относительный.
Цитата(goodday1941 @  16.8.2007,  15:42 Найти цитируемый пост)
еражть всю инфу о стилях  в отдельном файле имеет смысл в плане быстродействия, так как css файлы кешируються. Поправте если я не прав

Это так. Но главный плюс css в возможности отделить логические структуры страниц от деталей оформления и централизовать управление внешним видом системы.

Это сообщение отредактировал(а) Maksym - 16.8.2007, 15:59
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.