Выражение ${foo}
использует за кулисами JspContext#findAttribute()
, который ищет атрибуты в PageContext
, HttpServletRequest
, HttpSession
и ServletContext
в этом порядке по методу getAttribute("foo")
, в соответствии с которым foo
из ${foo}
, таким образом, представляет имя атрибута "foo"
и возвращает первый не- -null object.
Итак, если вы делаете в сервлете
ArrayList persons = getItSomehow();
request.setAttribute("persons", persons); // It's now available by ${persons}
request.getRequestDispatcher("/WEB-INF/persons.jsp").forward(request, response);
И назовите этот сервлет по URL-адресу, вы сможете перебирать его в page.jsp
следующим образом:
${person.title}
Вышеупомянутое также равнозначно, когда вы помещаете его в область сеанса вместо
request.getSession().setAttribute("persons", persons);
или даже в область приложения
getServletContext().setAttribute("persons", persons);
EL будет для title
в ${person.title}
неявным образом искать общедоступный экземпляр (не статический!) метод с префиксом get
в классе Person
, как показано ниже:
public String getTitle() {
return title;
}
поле title
необязательно должно существовать в классе (поэтому вы можете даже вернуть строку с жесткой связью и продолжать использовать ${person.title}
), и это необязательно должно быть полем экземпляра (так что это также может быть статическое поле , пока геттерный метр сам сам не статичен).
Только у boolean
(не Boolean
!) геттеры имеют специальное лечение; EL неявно ищет общедоступный метод с префиксом is
. Например. для ${person.awesome}
:
public boolean isAwesome() {
return awesome;
}
SVG - это открытый стандарт , разработанный W3C . Я действительно не думаю, что он умирает в ближайшее время. Тот факт, что некоторые компании решают отказаться от его использования в своих коммерческих продуктах (обычно потому, что им нужно или считают, что они нуждаются в чем-то более индивидуальном), это вовсе не означает, что SVG исчезнет в более глобальном масштабе.
На данный момент , это, несомненно, наиболее широко используемый формат векторной графики в Интернете. Возьмем, к примеру, изображения в Википедии - почти для всех диаграмм либо используется SVG, либо есть уведомление о том, что его следует использовать. Многие другие проекты с открытым исходным кодом одобряют его аналогичным образом.
Теперь язык разметки XAML (часть WPF / Silverligtht) некоторыми рассматривается как конкурент SVG, но на самом деле они лишь частично совпадают по функциональности. (XAML поддерживает множество других вещей, таких как привязка данных, события, триггеры и т. Д.) Действительно, общее использование XML сильно ограничено тем, что браузеры не поддерживают его изначально (и не могут должным образом из-за того, что он тесно связан с технологиями MS). Я бы даже не поверил, что это прямой конкурент SVG, или что Microsoft намеревалась сделать это.
В заключение, я не думаю, что можно ожидать исчезновения SVG до тех пор, пока не появится что-то явно улучшенное (и открытое по стандарту). заменить его. Насколько мне известно, на данный момент ничего подобного нет.
t изначально поддерживает его (и не может должным образом из-за того, что он тесно связан с технологиями MS). Я бы даже не поверил, что это прямой конкурент SVG или что Microsoft намеревалась сделать это.В заключение я не думаю, что можно ожидать исчезновения SVG, пока не появится что-то явно улучшенное (и открытое по стандарту). заменить его. Насколько мне известно, на данный момент ничего подобного нет.
t изначально поддерживает его (и не может должным образом из-за того, что он тесно связан с технологиями MS). Я бы даже не поверил, что это прямой конкурент SVG или что Microsoft намеревалась сделать это.В заключение я не думаю, что можно ожидать исчезновения SVG, пока не появится что-то явно улучшенное (и открытое по стандарту). заменить его. Насколько мне известно, на данный момент ничего подобного нет.
s скомпилировал ваш exe (попробуйте File Analyzer ). Попробуйте десериализовать двоичные данные с помощью обнаруженного языка. Затем сериализуйте его в формате xml (независимо от языка), который может понять каждый язык программированияПопробуйте открыть его в шестнадцатеричном редакторе и проанализировать.
Получите приложение Delphi и откройте его в бесплатной версии IDA Pro , найдите, куда оно записывает файл, и декодируйте, как оно записывает файл таким образом.
Если это не текст плана.
Я разработал Hexinator (Window & amp; Linux) и Synalyze It! (macOS) именно для этой цели. Эти приложения позволяют вам видеть двоичные файлы, как в других шестнадцатеричных редакторах, но дополнительно вы можете создать «грамматику» со спецификой формата двоичного файла. Грамматика содержит все строительные блоки и используется для автоматического анализа файла.
Таким образом, вы можете сохранить полученные знания в процессе анализа и применить их к нескольким файлам одновременно. Вы также можете раскрасить фрагменты файлов в разные цвета для быстрого просмотра в шестнадцатеричном редакторе. Результаты анализа отображаются в виде дерева, где вы также можете легко изменять файлы (применяя метод endianness и так далее).
Программа "strings" из GNU binutils очень полезна. Он будет печатать строки печатаемых символов в файле, нередко давая понять, что содержит файл или программа.
Если у вас есть доступ к приложению, которое создает файл, вы можете применить изменения к приложению, затем сохранить файл и увидеть эффекты (имейте в виду, что числа, вероятно, хранятся в little endian ):
Чтобы проверить гипотезы, разработанные вами с помощью описанных выше шагов, отредактируйте один из файлов и попросите приложение прочитать его.
Если у вас нет доступ к самому приложению, предлагаю вам забыть о нем и найти другой способ решения вашей проблемы. Очень высока вероятность, что будет быстрее ...
Вы знаете программу, которая его использует? Если это так, вы можете подключить эту программу к функции записи в файл и получить представление о том, какие данные она записывает, размер данных и где.
Дополнительная информация: http://www.codeproject.com/KB/ DLL / Win32APIHooking_Trouble.aspx
Если файл
не дает осмысленного ответа, вы можете попробовать TRiD Марко Понтелло, чтобы определить, хранятся ли ваши данные в известном формат.
Если данные представляют собой сериализованные объекты Delphi, вам следует начать читать о процессе сериализации Delphi. В таком случае, я думаю, лучше всего загрузить его с помощью Delphi и продолжить анализ из среды IDE. Некоторую информацию о сериализации Delphi можно найти здесь .
РЕДАКТИРОВАТЬ: если файл действительно содержит сериализованные объекты delphi, вам следует написать небольшую программу delphi, которая загружает его и самостоятельно "конвертирует" данные в что-то нейтральное, например xml. Если вам это удастся, вы должны проверить, поддерживает ли delphi сериализацию в xml. Тогда вы сможете получить доступ к этим объектам с любого языка.
Обратное проектирование двоичного файла, когда вы имеете некоторое представление о том, что он представляет, - это очень трудоемкий процесс. Если вы понятия не имеете, что это такое, будет еще труднее.
Хотя это возможно, но у вас должна быть довольно веская причина для этого.
Первым шагом было бы открыть его в Шестнадцатеричный редактор по вашему выбору и посмотрите, сможете ли вы найти какой-нибудь текст на английском языке, который укажет вам направление, которое файл должен представлять. Оттуда, Google "бинарные файлы обратного проектирования", гораздо более осведомленных людей, чем я, написали руководства по этому поводу.
Для моего хобби-проекта у меня было реконструировать некоторые старые файлы игры. Мои подходы были такими:
Команда unix "файл" действительно полезна - я не знаю, есть ли что-нибудь подобное в Windows. Вы запускаете его так:
file myfile.ext
И он выдает текстовое описание, основанное на магических числах и содержащихся в нем данных.
Вероятно, оно содержится в cygwin .