Простейшая обработка форм со Spring MVC

Поставим перед собой задачу. Написать страничку с формой, которая принимает имя автора, текст его сообщения и после клика на кнопку отправляет это сообщение на сервер. Затем перенаправляет эти данные на страничку, на которой это “красиво” отображается. Добавьте ссылку “назад”, чтобы можно было вернуться на исходную страницу.

1 2 3

 

Шаг 1

Первым делом создадим домашнюю страницу с формой.

Затем создадим контроллер, который примет данные с формы и перенаправит на соответствующую страницу.

После того как параметры приняли, передадим их на страницу.

Вот в принципе и все.

Подробнее

Создать 3 ссылки на странице

Эта задача очень простая. Вам нужно создать свое Spring MVC приложение, которое при старте открывает Home page (просто стартовая страница), содержащая 3 ссылки.
1

При клике на любую из этих ссылок идет обращение к одному и тому же контроллеру, но к разным методам (3 метода в одно контроллере). После клика на ссылку отрабатывает соответствующий метод и открывается одна и та же страница, но с разным текстом (текст нужно передать через ModelMap объект). Добавьте еще ссылку “назад”, которая возвращает нас на домашнюю страницу.

4 23

 

Ссылка назад должна обращаться к отдельному контроллеру.

Для решения этой задачи вам поможет следующие статьи:

  1. Установка сервер Tomcat и интеграция с Intellij Idea.
  2. Создать и запустить Spring MVC проект (Hello World).
  3. Обзор проекта Spring MVC.
  4. Мое решение тут.

Все.

Если Вы решили это задание, то посмотрите в сторону моего курса Трепещущий Падаван. Возможно он прекрасно Вам подойдет.

Подробнее

Обзор проекта Spring MVC

Ранее созданный проект можно найти у меня на github или, если хотите Gradle версию, то тут. Я добавил комментарии для более полного описания того, что происходит.

Когда Вы запустили приложение на сервере и обратились к адресу http://localhost:8080/ (в браузере), то на сервер Tomcat отправился http GET запрос. Tomcat получил этот запрос и направил его к приложению. Где его перехватил DispatcherServlet (специальный класс Spring MVC для обработки запросов.). Он перехватывает все запросы направленные к этому приложению. Согласно этой конфигурации в файле web.xml.

Далее DispatcherServlet выбирает какому контроллеру перенаправить этот запрос. Делает он это на основании аннотации @RequestMapping оставленной в контроллере. В данном приложении есть только один контроллер HelloController.java.

После определения контроллера выбирается, какой его метод выполнится. Т.к. этот запрос типа GET, то согласно аннотации @RequestMapping(method = RequestMethod.GET) выполняется метод printWelcome.

Далее, после обработки запроса в этом методе мы возвращаем строку “hello”. Это название JSP страницы pages/hello.jsp, которая откроется после обработки запроса. Также на ее передастся параметр message со значение Hello world!. 

Вот так и работает данное приложение.

В данном проекте есть еще конфигурационный файл на ряду с web.xml. Этот файл отвечает за конфигурацию bean-ов (объектов за жизненный цикл которых отвечает spring IoC контейнер).  Это файл mvc-dispatcher-servlet.xml. В дальнейшем мы будем часто с ним работать :)

Вот в принципе и все.

Подробнее

Создать и запустить Spring MVC проект (Hello World)

Начнем изучение с запуска простого приложения Hello World. Для начала создадим его.

Шаг 1

Открываем Intellij Idea и создаем новый проект.

1

Шаг 2

Создаем Spring MVC Web приложение и указываем JDK 8.

2

Шаг 3

Выбираем шаблон Spring MVC.

3

Шаг 4

Указываем имя проекта и его расположение. Выбираем ранее установленный Tomcat и указываем имя базового пакета.

4

Шаг 5

Если Ваш проект кишит ошибками, как на скриншоте, то просто нажмите кнопку обновить, чтобы Intellij Idea заново собрал проект используя скрипт Maven (pom.xml) и скачал все необходимые зависимости.
5

Шаг 6

Осталось запустить проект и убедиться, что все работает.

6

Через некоторое время запустится Tomcat и откроется браузер. Если этого не произошло, то перейдите по этой ссылке. Вы должны увидtть нечто подобное.
7

Все. Проект запущен и работает.

 

Подробнее

Установка сервер Tomcat и интеграция с Intellij Idea.

Шаг 1

Первым делом нужно скачать сервер Tomcat с официального сайта http://tomcat.apache.org/download-70.cgi (Я использую версию 7 и поэтому и Вам рекомендую ее).
1

Шаг 2

После того как скачали, нужно распаковать этот архив в любую папку.

Шаг 3

Далее открывает Intellij Idea и заходим в настройки. Находим рубрику, в которой можем указать куда установили Tomcat и нажимаем “плюс”.

2

Шаг 4

Указываем путь к папке, куда установили Tomcat.

3

Шаг 5

Нажимаем Apply и OK.

4

Теперь Intellij Idea интегрирована с Tomcat.

 

Подробнее

Шаблон DAO (Data Access Object)

Шаблон DAO – это объект, который предоставляет абстрактный интерфейс к какому-либо типу баз данных или механизму хранения (например хранение в файле). Определённые возможности предоставляются независимо от того, какой механизм хранения используется и без необходимости специальным образом соответствовать этому механизму хранения.

Другими словами. Старайтесь писать ваше приложение таким образом, чтобы большая часть его ничего вообще “не знала” о том, какой механизм хранения данных Вы используете. Будь то база данных, файловая система или еще какой-нибудь способ хранения данных. Для этого разработчики Java рекомендуют шаблон DAO.

Используя этот шаблон Ваше приложение получается не завязано на механизм хранения данных. Это дает Вам гибкость в смене этих механизмов хранения. Например, если Вы решили перейти с одной базы данных на другую, то Вам достаточно будет просто реализовать абстрактный интерфейс (предоставляемый DAO) другим способом, а все оставшееся приложение будет без изменений.

Вот пример такого абстрактного интерфейса, о котором мы говорили ранее. Если его реализовать используя JDBC или например API, которое позволяет работать с файлами в Java, то оставшееся приложение будет знать только про этот интерфейс и ничего про его реализации и когда мы например каким-нибудь способом подменим реализацию, то оставшееся приложение будет работать как раньше.

Вот, например, НЕПОЛНАЯ реализация этого интерфейса через JDBC для базы H2 (скорее всего будет работать и для некоторых других баз данных).

Вот пример использования этого интерфейса. Заметьте, что в коде нет ни слова о том, что где-то используется JDBC, SQL или название базы данных (статический блок не в счет. от этого мы научимся избавляться).

Для лучшего запоминания поглядите на небольшую диаграмму классов простейшей реализации этого шаблона.

4

Подробнее

Как клонировать (скачать) проект с github?

Шаг 1

Первым делом Вы должны установить себе git на компьютер. Для этого я уже записывал небольшое видео.

Шаг 2

Заходим на страницу репозитория, который собираемся клонировать и копируем его URL.
0

Шаг 3

Открываем idea и выбираем создать проект клонирую с github.

1

Шаг 4

Вводим URL проекта и название деректории куда хотим клонировать репозиторий.

23

 

Шаг 5

Указываем папку куда мы установили Gradle. Если в том проекте, который Вы качаете Gradle не используется, то этот шаг можно пропустить. Почти все мои проекты которые вы найдете на этом сайте его используют, поэтому желательно его установить. Вот видео.

Нажимаем ок и ждем пока идея сама все остальное сделает за Вас.

4

Все.

Подробнее

Работа с базой данных через шаблон DAO

В этой задаче мы на практике поучимся использовать шаблон DAO (Data Access Object) на практике. Сдесь Вы найдете уже загатовленый проект, который вы должны будете доделать.

Для решения этой задачи Вам возможно понадобятся следующие статьи:

  1. Как клонировать (скачать) проект с github?
  2. Что такое шаблон DAO и для чего его используют?
  3. Мое решение можно найти тут.

Если более детально то:

  1. Вы должны скачать проект с github.
  2. Подготовьте базу для этого проекта.
    1. Создайте таблицу для авторов. Записи в таблицу добавлять необязательно. Например так:
    2. Козалось бы, нужно подключиться к этой базе данных и запускать проект. Но тут выясняется, что он не компилируется. А причнина в том, что интерфейс AuthorDao не до конца реализован классом AuthorDaoJdbcImpl. Ваша задача до реализовать этот интерфейс в этом классе. Собственно класс AuthorDaoJdbcImpl это единственное место где Вы должны писать код в этом задании.
    3. Возможно конечно Вы захотите поменять константы в классе ConnectionFactory, но это только в том случае, если Вы захотите подключиться к другой базе. Вернее, если Вы захотите использовать другие конфигурации для подключения баз данных.
    4. После того как Вы написали код, далее Вы должны запустить метод main и получить следующий вывод в консоль. Если Вы получили что-то другое, то вероятно Вы где-то ошиблись.

Обратите внимание на то, что Вы должны получать Connection используя класс ConnectionFactory. И используя его делать свои манипуляции. Не забывайте закрывать Connection-ы, Statement-ы и ResultSet-ы. Обрабатывайте исключения анналогично тому как я сделал это в методе getById и не забывайте Писать осмысленные сообщения об ошибках. Описание того, что должны делать методы, которые Вы реализуете смотри интерфейс AuthorDao, там все описано.

Все.

Подробнее