2 / 2 / 2
Регистрация: 01.04.2012
Сообщений: 110

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

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

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

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
Ответ Создать тему
Опции темы

Новые блоги и статьи
CQRS (Command Query Responsibility Segregation) на Java
Javaican 12.05.2025
CQRS — Command Query Responsibility Segregation, или разделение ответственности команд и запросов. Суть этого архитектурного паттерна проста: операции чтения данных (запросы) отделяются от операций. . .
Шаблоны и приёмы реализации DDD на C#
stackOverflow 12.05.2025
Когда я впервые погрузился в мир Domain-Driven Design, мне показалось, что это очередная модная методология, которая скоро канет в лету. Однако годы практики убедили меня в обратном. DDD — не просто. . .
Исследование рантаймов контейнеров Docker, containerd и rkt
Mr. Docker 11.05.2025
Когда мы говорим о контейнерных рантаймах, мы обсуждаем программные компоненты, отвечающие за исполнение контейнеризованных приложений. Это тот слой, который берет образ контейнера и превращает его в. . .
Micronaut и GraalVM - будущее микросервисов на Java?
Javaican 11.05.2025
Облачные вычисления безжалостно обнажили ахиллесову пяту Java — прожорливость к ресурсам и медлительный старт приложений. Традиционные фреймворки, годами радовавшие корпоративных разработчиков своей. . .
Инфраструктура как код на C#
stackOverflow 11.05.2025
IaC — это управление и развертывание инфраструктуры через машиночитаемые файлы определений, а не через физическую настройку оборудования или интерактивные инструменты. Представьте: все ваши серверы,. . .
Инъекция зависимостей в ASP.NET Core - Практический подход
UnmanagedCoder 11.05.2025
Инъекция зависимостей (Dependency Injection, DI) — это техника программирования, которая кардинально меняет подход к управлению зависимостями в приложениях. Представьте модульный дом, где каждая. . .
Битва за скорость: может ли Java догнать Rust и C++?
Javaican 11.05.2025
Java, с её мантрой "напиши один раз, запускай где угодно", десятилетиями остаётся в тени своих "быстрых" собратьев, когда речь заходит о сырой вычислительной мощи. Rust и C++ традиционно занимают. . .
Упрощение разработки облачной инфраструктуры с Golang
golander 11.05.2025
Причины популярности Go в облачной инфраструктуре просты и одновременно глубоки. Прежде всего — поразительная конкурентность, реализованная через горутины, которые дешевле традиционных потоков в. . .
Создание конвейеров данных ETL с помощью Pandas
AI_Generated 10.05.2025
Помню свой первый опыт работы с большим датасетом — это была катастрофа из неотформатированных CSV-файлов, странных значений NULL и дубликатов, от которых ехала крыша. Тогда я потратил три дня на. . .
C++ и OpenCV - Гайд по продвинутому компьютерному зрению
bytestream 10.05.2025
Компьютерное зрение — одна из тех технологий, которые буквально меняют мир на наших глазах. Если оглянуться на несколько лет назад, то сложно представить, что алгоритмы смогут не просто распознавать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru