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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> построение графа страниц сайта на jsp, граф зависимостей страниц сайта 
:(
    Опции темы
Atum
Дата 1.6.2012, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день ! 

подскажите как можно решить следующую задачу : 

Имеется сайт написанный на jsp  . структура - множество папок и множество включений страниц в страницы 

(как во время компиляции так и с помощью ajax ) 


Чего хочется - найти инструмент который бы отображал структуры сайта графически в виде графа ...

как это делают в базах данных программы  DbVisualizer  и им подобные.

Хочется визуально понять какая связь между файлами в проекте .

(грубо говоря - я передаю программе ссылку на папку проекта,
 а она мне выводит схемку графическую в которой нарисовано что файл index  включает в себя - то-то и то-то...)

Это сообщение отредактировал(а) Atum - 1.6.2012, 17:09
PM MAIL   Вверх
AntonSaburov
Дата 1.6.2012, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Мало перспективное занятие - большинство приложений пишется по шаблону MVC и страница ничего не дает в этом случае. А делать сайт именно на JSP (подобно сайтам на PHP) - дурной тон. Так что предлагаю не делать такое вообще.

PM MAIL WWW ICQ   Вверх
IDVsbruck
Дата 6.6.2012, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну, возможно человек имеет в виду не карту вьюшек на сервере, а что-то типа "карта сайта", только в автоматическом режиме. Так сказать, не инфа с сервера, а внешняя.
Я недавно задавался такой целью - для демонстрашки работы сайта нужен был граф сайта - какие связи, что куда пережидит и т.д. Чисто как графическое решение не нашел, но вот Визио может по заданному адресу сайта сделать дерево (точнее, граф, так как много циклических связей). Правда, реализация мне не понравилась и не подошла. Но для документирования, дамаю, самое оно.
PM MAIL   Вверх
Atum
Дата 6.6.2012, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(IDVsbruck @ 6.6.2012,  15:39)
Ну, возможно человек имеет в виду не карту вьюшек на сервере, а что-то типа "карта сайта", только в автоматическом режиме. Так сказать, не инфа с сервера, а внешняя.
Я недавно задавался такой целью - для демонстрашки работы сайта нужен был граф сайта - какие связи, что куда пережидит и т.д. Чисто как графическое решение не нашел, но вот Визио может по заданному адресу сайта сделать дерево (точнее, граф, так как много циклических связей). Правда, реализация мне не понравилась и не подошла. Но для документирования, дамаю, самое оно.


Да именно граф,  но изнутри по страницам 
фактически обходим все папки и ищем вхождение файлов  и строим граф .

Код - как идея ! 
Код

public class Viewer {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException, IOException {
        // TODO code application logic here
        

          File folder = new File("C:/NBP/WebApplication1/web");
          printTree(folder);

        }
    
    
    public static void printTree(File root) throws FileNotFoundException, IOException{
         File[] files = root.listFiles();
         for (File file : files) {
            if (file.isDirectory()){
                System.out.println(file.getAbsolutePath());
                printTree(file);
            }else{
                String path =  file.getAbsolutePath();
                if(path.contains(".jsp")){
                   if(find(file)){
                     System.out.println(path);
                   }
                   
                }
            }
        }
         
    }
    
    public static boolean  find(File file) throws FileNotFoundException, IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        String str;
         boolean result = false;
        while ((str = in.readLine()) != null) {
          if(str.contains(".jsp")){
              result = true;
               System.err.println("    "+str);
          }
          }

        in.close();

return result;
    }
        
        




по данным строим граф.

т.е. каждая страница (на примере index.jsp )

function.jsp ( набор глобальных переменных и функции, все либы что требуются)
header.jsp ( заголовки и начало тело html )

 index.jsp ( ссылки на другие страницы )

footer.jsp (  конец html  документа.)


PM MAIL   Вверх
AntonSaburov
Дата 6.6.2012, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата(Atum @  6.6.2012,  16:03 Найти цитируемый пост)
Да именно граф,  но изнутри по страницам 
фактически обходим все папки и ищем вхождение файлов  и строим граф .

Сделайте рекурсивный обход нужной директории - пример ниже. Но я бы все-таки не шел по такому пути - НЕ НАДО ДЕЛАТЬ JSP картой сайта. Плохая это идея

Код

import java.io.File;

/**
 * Пример программы использования стандартного класса File
 * для рекурсивного обхода директорий, начиная с текущей
 */
public class Main {

    public static void main(String[] args) {
        Main m = new Main();
        // Обращение к переменной среды user.dir в классе System
        // возвращает текующую директорию - здесь можно подставить другую
        String root = System.getProperty("user.dir");
        // Входим в рекурсивную функцию
        m.showFileList(root);
    }

    private void showFileList(String root) {
        // Создаем объект с указанием файла/директории
        File fileRoot = new File(root);
        // Получаем список файлов и директорий в указанном файле - мы знаем что это директория
        // Можно использовать FilenameFilter
        String[] list = fileRoot.list();
        // Перебираем все файлы внути директории
        for (String s : list) {
            // Создаем объект с указанием файла/директории
            File fileLocal = new File(root + File.separator + s);
            // Печатаем
            System.out.println(fileLocal.getAbsolutePath());
            System.out.println();
            // Если этот объект тоже директория - обрабатываем его как и родителя
            // т.е. снова вызываем showFileList, только уже для новой директории
            if (fileLocal.isDirectory()) {
                showFileList(fileLocal.getAbsolutePath());
            }
        }

    }
}


PM MAIL WWW ICQ   Вверх
Atum
Дата 7.6.2012, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

 Но я бы все-таки не шел по такому пути - НЕ НАДО ДЕЛАТЬ JSP картой сайта. Плохая это идея


Почему это плохо? 
PM MAIL   Вверх
AntonSaburov
Дата 7.6.2012, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Потому что JSP-страница по правильному шаблону НЕ СОДЕРЖИТ логику получения данных - она их только отображает. Т.е. если пойти на страницу прямо по ссылке, то скоре всего она не отобразит данные, которые для нее требуются - их там просто не будет. Чтобы нагляднее -обычно делается так:

1. С браузера приходит URL
2. Web-Server (например Tomcat) вызывает соответствующий сервлет
3. Сервлет ходит по всяким истоникам данных (базы данных, файлы, другие системы и т.д. и т.п.)
4. Сервлет собирает все в один набор данных и вызывает JSP-страницу, которой передает уже сформированный пакет данных.
5. JSP отображает переданный ей пакет данных.

А Вы хотите все шаги уместить в JSP. Да, она конечно может тоже собрать данные. Но это будет стратегически неверный вариант построения системы.
Будет каша в виде одной страницы, внутри которой вся логика. Что потом крайне плохо развивается - например захотите Вы сделать мобильный вариант сайта.
Если исходить из MVC - то достаточно просто добавить еще одно отображение (та же JSP). Но вся логика получения данных уже есть. В случае если все на JSP - придется делать копию страницы или как-то вызывать через include, что делает код настолько нечитаемым, что поддержка будет ужасным трудом.
PM MAIL WWW ICQ   Вверх
Atum
Дата 8.6.2012, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(AntonSaburov @ 7.6.2012,  17:41)
Потому что JSP-страница по правильному шаблону НЕ СОДЕРЖИТ логику получения данных - она их только отображает. Т.е. если пойти на страницу прямо по ссылке, то скоре всего она не отобразит данные, которые для нее требуются - их там просто не будет. Чтобы нагляднее -обычно делается так:

1. С браузера приходит URL
2. Web-Server (например Tomcat) вызывает соответствующий сервлет
3. Сервлет ходит по всяким истоникам данных (базы данных, файлы, другие системы и т.д. и т.п.)
4. Сервлет собирает все в один набор данных и вызывает JSP-страницу, которой передает уже сформированный пакет данных.
5. JSP отображает переданный ей пакет данных.

А Вы хотите все шаги уместить в JSP. Да, она конечно может тоже собрать данные. Но это будет стратегически неверный вариант построения системы.
Будет каша в виде одной страницы, внутри которой вся логика. Что потом крайне плохо развивается - например захотите Вы сделать мобильный вариант сайта.
Если исходить из MVC - то достаточно просто добавить еще одно отображение (та же JSP). Но вся логика получения данных уже есть. В случае если все на JSP - придется делать копию страницы или как-то вызывать через include, что делает код настолько нечитаемым, что поддержка будет ужасным трудом.

я кажется понимаю о чем вы !

Но у меня немного другая задача: 

Мне как раз и надо построить и отобразить графически все эти зависимости 

логики получения данных мне не надо - нужен сам факт включения той или иной страницы -без отображения  какой либо логики!

и желательно в виде графической схемы.

просто когда мы создаем проект в IDE -  среда понимает  его и отображает его в виде дерева - папочки и файлы ...

я хочу иметь аналогичное отображение но в виде включения одних jsp в другие . 

как то так .

UPD 

Это как в netbeans - когда вы создаете десктоп приложение - есть возможность визуально его проектировать - размещать кнопки контролы итд ...

я хочу так же видеть как одна jsp  включает в себя ссылку на другую jsp...


Это сообщение отредактировал(а) Atum - 8.6.2012, 11:21
PM MAIL   Вверх
AntonSaburov
Дата 9.6.2012, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



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

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

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


 




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


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

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