{"id":21711307,"url":"https://github.com/maxbarsukov-itmo/web-3","last_synced_at":"2026-05-15T22:35:22.063Z","repository":{"id":200218300,"uuid":"705051216","full_name":"maxbarsukov-itmo/web-3","owner":"maxbarsukov-itmo","description":"🕸️ Веб-программирование: Лабораторная работа №3","archived":false,"fork":false,"pushed_at":"2023-10-17T08:23:28.000Z","size":1042,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-01-25T16:42:29.300Z","etag":null,"topics":["itmo","java","jsf","laboratory-work","maxbarsukov","web"],"latest_commit_sha":null,"homepage":"https://se.ifmo.ru/~s367081/web/lab3","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxbarsukov-itmo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-14T22:29:30.000Z","updated_at":"2024-11-05T14:26:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"b24b729d-810b-4e4c-9784-c3e12a34174d","html_url":"https://github.com/maxbarsukov-itmo/web-3","commit_stats":null,"previous_names":["maxbarsukov-itmo/web-3"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbarsukov-itmo%2Fweb-3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbarsukov-itmo%2Fweb-3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbarsukov-itmo%2Fweb-3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbarsukov-itmo%2Fweb-3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxbarsukov-itmo","download_url":"https://codeload.github.com/maxbarsukov-itmo/web-3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244666585,"owners_count":20490287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["itmo","java","jsf","laboratory-work","maxbarsukov","web"],"created_at":"2024-11-25T23:21:17.206Z","updated_at":"2026-05-15T22:35:17.029Z","avatar_url":"https://github.com/maxbarsukov-itmo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Лабораторная работа 3\n\n## Вариант `18881`\n\n\u003cimg alt=\"anime\" src=\"./.resources/anime.gif\" height=\"200\"\u003e\n\n\u003e Jakarta Server Facepalm\n\n|.pdf|.docx|\n|-|-|\n| [report](./docs/report.pdf) | [report](./docs/report.docx) |\n\nРазработать приложение на базе **JavaServer Faces Framework**, которое осуществляет проверку попадания точки в заданную область на координатной плоскости.\n\nПриложение должно включать в себя **2 facelets-шаблона** - _стартовую страницу_ и _основную страницу приложения_, а также набор управляемых бинов (`managed beans`), реализующих логику на стороне сервера.\n\n\u003cimg alt=\"Areas\" src=\"./.resources/areas.png\" height=\"350\"\u003e\n\n### Стартовая страница должна содержать следующие элементы:\n\n- \"Шапку\", содержащую ФИО студента, номер группы и номер варианта.\n- Интерактивные часы, показывающие текущие дату и время, обновляющиеся раз в **8 секунд**.\n- Ссылку, позволяющую перейти на основную страницу приложения.\n\n### Основная страница приложения должна содержать следующие элементы:\n\n- Набор компонентов для задания координат точки и радиуса области в соответствии с вариантом задания. Может потребоваться использование дополнительных библиотек компонентов - [ICEfaces](https://www.icesoft.com/icefaces/) (префикс `\"ace\"`) и [PrimeFaces](https://www.primefaces.org/) (префикс `\"p\"`). Если компонент допускает ввод заведомо некорректных данных (таких, например, как буквы в координатах точки или отрицательный радиус), то приложение должно осуществлять их валидацию.\n- Динамически обновляемую картинку, изображающую область на координатной плоскости в соответствии с номером варианта и точки, координаты которых были заданы пользователем. Клик по картинке должен инициировать сценарий, осуществляющий определение координат новой точки и отправку их на сервер для проверки её попадания в область. Цвет точек должен зависеть от факта попадания / непопадания в область. Смена радиуса также должна инициировать перерисовку картинки.\n- Таблицу со списком результатов предыдущих проверок.\n- Ссылку, позволяющую вернуться на стартовую страницу.\n\n### Дополнительные требования к приложению:\n\n- Все результаты проверки должны сохраняться в базе данных под управлением **СУБД Oracle**. \n- Для доступа к БД необходимо использовать **ORM Hibernate**. \n- Для управления списком результатов должен использоваться `Session-scoped Managed Bean`. \n- Конфигурация **управляемых бинов** должна быть задана с помощью параметров в **конфигурационном файле**. \n- **Правила навигации** между страницами приложения должны быть заданы в отдельном **конфигурационном файле**.\n\n### Вопросы к защите лабораторной работы:\n\n**Ответы**: [*новые*](https://github.com/EgorMIt/ITMO/blob/master/2%20-%20%D0%92%D0%B5%D0%B1-%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/Lab3.md) и [*старые*](https://github.com/AppLoidx/Web-Development-Cheats/blob/master/itmo-university/labs/Lab3.md)\n\n1. Технология **JavaServer Faces**. Особенности, отличия от сервлетов и **JSP**, преимущества и недостатки. Структура **JSF**-приложения. \n2. Использование **JSP**-страниц и **Facelets**-шаблонов в **JSF**-приложениях. \n3. **JSF**-компоненты - особенности реализации, иерархия классов. Дополнительные библиотеки компонентов. Модель обработки событий в **JSF**-приложениях. \n4. Конвертеры и валидаторы данных. \n5. Представление страницы **JSF** на стороне сервера. Класс `UIViewRoot`. \n6. Управляемые бины - назначение, способы конфигурации. Контекст управляемых бинов. \n7. Конфигурация **JSF**-приложений. Файл `faces-config.xml`. Класс `FacesServlet`. \n8. Навигация в **JSF**-приложениях. \n9. Доступ к БД из Java-приложений. Протокол **JDBC**, формирование запросов, работа с драйверами СУБД. \n10. Концепция **ORM**. Библиотеки **ORM** в приложениях на Java. Основные API. Интеграция **ORM**-провайдеров с драйверами **JDBC**. \n11. Библиотеки `ORM Hibernate` и `EclipseLink`. Особенности, API, сходства и отличия. \n12. Технология **JPA**. Особенности, API, интеграция с ORM-провайдерами.\n\n### Как запустить?\n\n#### Helios\n\n[Гайд](https://github.com/AppLoidx/Web-Development-Cheats/blob/master/itmo-university/%D0%94%D0%B5%D0%BF%D0%BB%D0%BE%D0%B8%D0%BC%202%20%D0%BB%D0%B0%D0%B1%D1%83%20%D0%BD%D0%B0%20helios%2C%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8F%20WildFly.md) по деплою на Helios в `WildFly`.\n\n#### Локально\n\nКак на Helios, но локально :grin:\n\n## Лицензия \u003ca name=\"license\"\u003e\u003c/a\u003e\n\nПроект доступен с открытым исходным кодом на условиях [Лицензии MIT](https://opensource.org/licenses/MIT).\n*Авторские права 2023 Max Barsukov*\n\n**Поставьте звезду :star:, если вы нашли этот проект полезным.**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbarsukov-itmo%2Fweb-3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxbarsukov-itmo%2Fweb-3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbarsukov-itmo%2Fweb-3/lists"}