Простейшая обработка форм со 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. В дальнейшем мы будем часто с ним работать :)

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

Подробнее

как учить без денег 3

Как учить java бесплатно 03. Задача с файлами, консолью и сортировкой.

Привет. Продолжаем изучать java не тратя деньги. Сегодня Вы получите еще одну задачу. Я уже говорил, что чтобы научиться программировать нужно,  как не странно программировать. Поэтому вот Вам практическая задачка. Она для новичков и очень простая.

Напишите консольное приложение, которое считывает пользователей из файла и делает из них список объектов класса Person. Затем приложение просит Вас ввести одну из следующих команд. ‘-f’ – сортировка по имени, ‘-s’ – сортировка по фамилии, ‘-a’ – сортировка по возрасту. В зависимости от введенной команды должен вывестись список пользователей отсортированных по имени, фамилии или возрасту. Если пользователь вводит “–stop”, то приложение должно завершаться.

Не забываете закрывать потоки и освобождать другие ресурсы, если Вы их задействовали. Желательно, чтобы работало и для русских символов.

Подробно ознакомиться с условием вы можете перейдя по этой ссылке. Там же Вы сможете ознакомиться с моим решением. И с тем как должен выглядеть файл с пользователями.

Также, если Вы не знаете как считывать символы с консоли, то ознакомьтесь с этой статьей, а если не знаете как считывать тест из файла, то с этой. Ознакомьтесь еще с теме как сортировать объекты в java здесь. Когда Вы изучите данную информацию Вам не составит труда решить это задание. Если что-то Вам не понятно, то пишите на сайте в комментариях.

Подробнее

hwbp03

Кто хочет стать программистом? Выпуск 03 – Кто хочет стать миллионером? (Для программистов)


Призами я выбрал свои платные материалы.
1) “Трепещущий падаван” – http://it-channel.by/trembling-padawan/
2) “Путь джедая” – http://it-channel.by/thepathofthejedi/

Ссылка на исходники HashSet: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/HashSet.java

Приятного просмотра.

Вопросы по java из видео (звездочка правильный ответ):

1. Как в java называют стиль наименование переменных, методов, классов и т. д.
A. Медвежья поэзия
B. Верблюжья нотация
C. Стиль дракона
D. Походка капибары

2. Какое исключение выкинет данный код Object obj = null; obj.toString();
A. IllegalStateException
B. IndexOutOfBoundsException
C. NullPointerException
D. IllegalArgumentException

3. Какой из данных классов является синхронизированным?
A. HashTable
B. ArrayList
C. LinkedList
D. Hashmap

4. Как называется метод в классе Thread, которым запускают новый поток?
A. run
B. start
C. begin
D. go

5. Если вы в классе переопределили метод equals, то по имеющемуся соглашению, какой метод вы должны переопределить следом?
A. hashCode
B. getClass
C. toString
D. finalize

6. Какое из данных выражений вернет true?
A. new Integer(1) == new Integer(1);
B. Integer i1 = 1, i2 = 1; i1 == i2;
C. Integer i1 = 1000, i2 = 1000; i1 == i2;
D. int i1 = 1000, i2 = 1000; i1 != i2;

7. Когда сборщик мусора удаляет объект из памяти?
A. Когда разработчик явно указал, что его нужно удалить.
B. Когда появился полностью идентичный объект в памяти.
C. Когда не осталось ни одной ссылки на данный объект
D. Когда превышено ограничение на создание подобных объектов.

8. Какой из данных классов реализует интерфейс Queue?
A. Vector
B. ArrayList
C. LinkedList
D. Stack

Подробнее

JC: Как сортировать объекты в java?

Не вздумайте когда-нибудь сортировать объекты в java реализуя собственные алгоритмы сортировки. Все уже давно сделано за Вас. Вам достаточно просто знать несколько классов и методов для сортировки своих объектов.

Пример 1

Для сортировки строк и классов оберток достаточно просто использовать метод sort классов Collections (Для коллекций) или Arrays (Для массивов).

Результат.

Результат.

Класс String, Integer и т.д. могут быть отсортированы без использования интерфейса Comparator т. к. они реализуют интерфейс Camparable. И они имеют естественный порядок. Например, числа могут идти по порядку, а строки в алфавитном порядке.

Пример 2

Но что делать, если мы создали свои классы и теперь хотим их сортировать. Для этого нужно либо чтобы наш класс реализовывал интерфейс Comparable или, что более гибкий подход, мы должны реализовать интерфейс Comparator, но в отдельном классе.

Например, мы создали класс Person и теперь хотим его объекты сортировать по имени и по возрасту.

Затем, для каждого поля (по которому хотим сортировать) класса Person реализуем интерфейс Comparator. В которых описываем логику того, как мы хотим определять, какой из объектов больше, меньше или равны.

Если o1 больше, чем o2, то по договоренности должны вернуть положительное число. Если меньше, то отрицательное. Если равны, то 0. Теперь мы можем создавая объекты этих компараторов и их использовать для сортировки так как мы хотим.

Результат. Первое это сортировка по возрасту, а второе по имени.

Это знание Вы можете применить на практике в этом задании.
Задание 1.

Подробнее

JC: Как читать текст из файла?

Один из классов, который помогает читать текст из файла, является BufferedReader.

Пример 1

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

Например у нас есть файл в корне проекта input.txt с таким контентом.

Данный код считает текст в цикле по строке и выведет в консоль.

Условием выхода из цикла является следующее выражение.

Каждый раз когда оно проверяется reader.readLine() берет строку из файла и присваивает ее переменной line, затем line проверяется на null. Если line = null значит в файле больше нет непрочитанных строк и нужно выйти из цикла.

На экран выведется следующий текст.

Эта статья может вам пригодиться при решении следующей задачи.

Задача 1

Подробнее

JC: Как текст записать в файл?

Для записи текста в файл можно использовать класс PrintWriter.

Пример 1

Записать текст в файл можно так. При каждом запуске этой программы будет создаваться файл “output.txt” с текстом Hello world. Константа CHARSET_NAME задает кодировку “UTF-8″ это нужно для того, чтобы в файл можно было записать русские символы.

Пример 2

Если вам нужно каждый раз не перезаписывать файл, а добавлять к нему какой-нибудь текст, то в конструктор FileOutputStream можно передать флаг true. И тогда при каждом запуске приложение в файле будет появляться новая строка с текстом Hello world.

После 3-х запусков.

Блок try (то, что в круглых скобках) закрывает автоматически fileOutputStream, outputStreamWriter, writer, но это работает для java от версии 7.

Пока достаточно для того, чтобы сделать это задание.

Задача 1

Подробнее

JC: Как считывать текст с консоли?

Считывать данные с консоли очень просто. Для этого можно использовать класс Scanner.

В классе есть методы для чтения очередного символа заданного типа со стандартного потока ввода, а также для проверки существования такого символа.

Для работы с потоком ввода необходимо создать объект класса Scanner, при создании указав, с каким потоком ввода он будет связан. Стандартный поток ввода (клавиатура) в Java представлен объектом — System.in. А стандартный поток вывода (дисплей) — уже знакомым вам объектом System.out. Есть ещё стандартный поток для вывода ошибок — System.err, но работа с ним выходит за рамки этой статьи.

Для дополнительных примеров посмотрите официальную документацию класса Scanner.

Пример 1

Приложение, исходный код которого вы видите ниже, принимает с консоли некоторый текст, а затем число. И выводит на экран то, что вы ввели.

Работа этого приложения выглядит так.

Пример 2

Если вам нужно вводить тест постоянно, то можно сканер использовать в цикле. Смотри пример ниже.

Пример 3

Еще небольшая фишка.

Вывод будет такой.

Пока достаточно для того, чтобы сделать эти задания.

Задача 1 Задача 2

Подробнее

JC: Чтение из файла, сортировка и вывод в консоль

Напишите консольное приложение, которое считывает пользователей из файла и делает из них список объектов класса Person. Затем приложение просит Вас ввести одну из следующих команд. ‘-f’ – сортировка по имени, ‘-s’ – сортировка по фамилии, ‘-a’ – сортировка по возрасту. В зависимости от введенной команды должен вывестись список пользователей отсортированных по имени, фамилии или возрасту. Если пользователь вводит “–stop”, то приложение должно завершаться.

Не забываете закрывать потоки и освобождать другие ресурсы, если Вы их задействовали. Желательно, чтобы работало и для русских символов.

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

 

Файл с пользователями.

Должен получиться примерно такой вывод на консоль

Рекомендую использовать следующие классы.

Все.

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

Подробнее