FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

java-labs/java-web-ru/templating at main · vmorkhat/java-labs · GitHub

Latest commit

 

History

History

README.md

Templating

В прошлом упражнении мы создавали HTML разметку как строку. Конечно, никто не запрещает создавать HTML напрямую в виде строки, но такой способ просто перестает работать на реальных сайтах, где HTML одной страницы — это сотни, а то и тысячи строк. Для решения этой проблемы существует технология JSP.

JSP — это технология, позволяющая разработчикам создавать содержимое, которое имеет как статические, так и динамические компоненты. Страница JSP содержит текст двух типов: статические исходные данные, оформленные в формате HTML, и JSP-элементы, которые конструируют динамическое содержимое. В этом упражнении вам предстоит создать такие JSP — страницы.

Ссылки

App.java

Задачи

  • Зарегистрируйте в контейнере tomcat сервлет UsersServlet, так чтобы он обрабатывал запросы по пути /users/*. Для проверки работы приложения запустите сервер, используя команду make start. Приложение в браузере будет доступно по адресу http://localhost:8000.

servlet/UsersServlet.java

В этом упражнении мы будем работать с данными, которые расположены в памяти. Список пользователей уже создан и записан в свойстве users класса UsersServlet. Структура списка такая же, как и в предыдущем упражнении:

  // Гипотетический пример, показывающий структуру
  users = [
    {
      "id": "4",
      "firstName": "John",
      "lastName": "Doe",
      "email": "johndoe@gmail.com",
    },
    // другие пользователи
  ]

В упражнении добавляется ещё один маршрут и обработчик, которые реализуют удаление пользователя из памяти. Но кнопка удаления ни в коем случае не должна сразу удалять. Человеку свойственно ошибаться (а ещё он любопытен) и вероятность, что он нажмёт на эту кнопку по ошибке, крайне высока. Правильный подход состоит в том, чтобы вывести страницу с подтверждением и спросить у пользователя, уверен ли он в том, что хочет удалить. Если да, то только в этом случае удалять.

Задачи

  • Изучите содержимое метода doGet(), который в зависимости от пути в адресе запроса вызывает нужный обработчик (метод).

  • В методе showUsers() реализуйте передачу управления в jsp-файл /users.jsp. Для того, чтобы предать данные пользователей в jsp-файл, вам потребуется установить атрибуты запроса при помощи метода setAttribute().

  • В методе showUser() реализуйте передачу управления в jsp-файл /show.jsp. id пользователя передается как параметр в query string Например, ссылка на страницу пользователя с id = 5, будет выглядеть так: /users/show?id=5

  • Метод showDeletePage() выводит страницу с подтверждением удаления. Организуйте передачу управления в в jsp-файл /delete.jsp. Вам понадобится передать в шаблон данные пользователя для вывода текста с подтверждением удаления.

  • Изучите содержимое метода doPost(). Этот метод обрабатывает все запросы с глаголом POST, поступившие на адрес /users/*. В зависимости от пути в адресе запроса этот метод также вызывает нужный обработчик.

  • В методе deleteUser() реализуйте удаление пользователя из памяти. После удаления нужно будет выполнить редирект на страницу вывода всех пользователей /users.

webapp/users.jsp

Шаблон с выводом списка всех пользователей.

Задачи

  • Организуйте вывод списка всех пользователей. Удобнее всего для этого использовать таблицу. Каждый пользователь в списке должен быть ссылкой на собственную страницу пользователя.

webapp/show.jsp

Шаблон с выводом данных определенного пользователя.

Задачи

  • Организуйте вывод данных одного определенного пользователя. Сделайте это, как вам удобно. На экран должны выводиться id, имя пользователя и его email. На странице пользователя должна быть ссылка для удаления текущего пользователя. Ссылка должна вести на страницу с подтверждением удаления, например /users/delete?id=10, где id пользователя, которого нужно удалить, передается как параметр в query string.

webapp/delete.jsp

Шаблон с подтверждением удаления пользователя.

Задачи

  • Организуйте вывод страницы с подтверждением удаления пользователя. На странице должен быть текст, уточняющий, действительно ли вы хотите удалить этого пользователя. На странице разместите форму с кнопкой "Удалить", подтверждающей удаление.

Нажатие на кнопку "Удалить" должно отправить форму используя POST-запрос на адрес /users/delete?id=..., где параметр id — это id пользователя, которого мы хотим удалить. Напрмер, чтобы удалить пользователя с id = 5, нужно отправить POST запрос на адрес /users/delete?id=5.

Для того, чтобы отправить POST запрос, вам потребуется использовать форму.

<form action="url" method="post">
    <button type="submit" class="btn btn-danger">Удалить</button>
</form>

Подсказки

  • В jsp-файлах подключена библиотека тегов jstl, расширяющая возможности jsp, вы можете использовать её.
  • Для передачи управления в jsp-файл вам понадобится использовать метод forward() класса RequestDispatcher

Back | FazBrowse Home | New Git URL