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

Как правильно отделить логику от вида

25.12.2012, 22:06. Показов 1556. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица в БД состоящая из четырех столбцов н.п.

ID SURNAME NAME PHONE
1 Петров Петя 1111
2 Иванов Вова 2222

Данные этой таблицы надо вывести в JSP странице, в таком виде:

1 Петров
Петя
1111

2 Иванов
Иван
2222

Я решил это так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public List shou(Connection con) {
        Connection conect = null;
        List message=new LinkedList();
        try {
            conect = con;
            PreparedStatement st=conect.prepareStatement("select * from.......");
            ResultSet rs=st.executeQuery();
            while(rs.next())
            {
                // Таким образом решил добиться нужного результата
                message.add(rs.getString(1)+"&nbsp;"+rs.getString(2)+"<BR>"+rs.getString(3)+"<BR>"+rs.getString(4));
            }
 
        } catch (SQLException e) {
            log.info("Ошибка!");
        }
        return message;
    }
А вывожу так:

Java
1
2
3
4
    list = m.shou(conect);
    for(int j=0; j<list.size(); j++){
        out.println(list.get(j).toString());
        }
Но так не подходит надо все теги (&nbsp; <BR>) перенести в слоя представления (JSP)!!!

В голову пришло только такое:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public List shouID(Connection con) {
        Connection conect = null;
        List message=new LinkedList();
        try {
            conect = con;
            PreparedStatement st=conect.prepareStatement("select * from.......");
            ResultSet rs=st.executeQuery();
            while(rs.next())
            {
                // ID
                message.add(rs.getString(1));
            }
 
        } catch (SQLException e) {
            log.info("Ошибка!");
        }
        return message;
    }
И таких методов в данном случае будет 4 то есть (shouID, shouSURNAME, shouNAME, shouPHONE), каждый будет хранить только свой данные.

В JSP тогда как то так (то есть видом буду управлять только здесь в JSP)
Java
1
2
3
4
5
    listID = m.shouID(conect);
        listSURNAME = m.shouSURNAME(conect);
    for(int j=0; j<list.size(); j++){
        out.println(listID.get(j).toString()+"&nbsp;"+listSURNAME .get(j).toString());
        }
Но вдруг таблица будет состоять из множества столбцов н.п. 15, мне что тогда 15 почти одинаковых методов делать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.12.2012, 22:06
Ответы с готовыми решениями:

Инкапсуляция или как правильно отделить логику
Делаю проект в WPF(но это не важно). Вопрос таков: может ли класс где обработчики всех событий формы, иметь переменную(другой класс, в...

Как отделить бизнес логику от UI ?
У меня бизнес логика перемешена с UI. Как отделить бизнес логику в отдельный класс, экземпляр которого может генерировать значения больше и...

Как правильно отделить пакет библиотеки от тестов?
Поделитесь, пожалуйста, опытом: кто как организует проект с тестами? Пока пишу тесты прямо в коде и запускаю их из main. Но скоро...

1
 Аватар для kmi
55 / 55 / 14
Регистрация: 26.04.2010
Сообщений: 177
27.12.2012, 13:45
Простейшее решение: метод запрашивает из БД данные и возвращает список объектов. Этот список объектов обрабатывается в самой jsp. Каждый объект содержит все нужные поля. А какие поля выводить, решает jsp.

Общая архитектура обычно сложнее: создаётся слой объектов доступа к данным (DAO), отвечающих за взаимодействие с БД; создаётся слой UI (не важно, какой: консоль, окна, web, м.б. web-сервис... - у Вас Web-интерфейс на основе jsp); между ними - слой объектов бизнес-логики. Это в двух словах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2012, 13:45
Помогаю со студенческими работами здесь

Как правильно переписать логику OnInput?
Здравствуйте. Есть логика в OnInput, нужно оставить первый INPUT и вместо оставшиеся двух инпутов выводить значения которые считаются в...

Как правильно реализовать логику программы?
Здравствуйте! Хочу реализовать такую логику программы: телефон - стартовая активность А -&gt; активность Б и т. д.; планшет: стартовая...

Symfony 2: как правильно организовать бизнес-логику?
Всем привет! Вот я недавно начал один проект на Symfony 2 и сразу же столкнулся одной проблемой - организацией бизнес-логики. Например, у...

Как правильно составить логику приложения (игра)?
Народ, выручайте советом! Я снова застрял на очередной задаче... Вот текст: Я застрял на этапе структурирования приложения....

Игра "Лабиринт". Отделить логику от интерфейса
Привет всем, извините за возможно глупый вопрос, но что значит отделить логику от интерфейса. Пишу игру лабиринт, компьютер должен найти...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru