Spring Framework. Урок 16: Spring MVC. Конфигурация с помощью Java кода.
Вставка
- Опубліковано 31 бер 2020
- ПОЛНЫЙ КУРС ПО SPRING (Hibernate, REST, Boot, Security): swiftbook.org/courses/438
Продвинутая Java - swiftbook.org/courses/415
Мои уроки по Java EE - • Java EE для начинающих
Репозиторий прошлого урока (Стартовый проект) - github.com/NeilAlishev/Spring...
Репозиторий урока - github.com/NeilAlishev/Spring...
Файлы:
SpringConfig.java - gist.github.com/NeilAlishev/1...
Реклама и сотрудничество: alishev.neil@gmail.com
ПОЛНЫЙ КУРС ПО SPRING (Hibernate, REST, Boot): swiftbook.org/courses/438
Плейлист этого курса: ua-cam.com/play/PLAma_mKffTOR5o0WNHnY0mTjKxnCgSXrZ.html
Telegram: t.me/alishev_g
Пора на рутуб переезжать, vpn тоже блокируют
Мечтал 8 месяцев написать этот комментарий. Работаю джуном третий месяц во многом благодаря твоим топовым объяснениям. Человек делает 90% годного контента в ру.коммьюнити, имхо. Наиль, надеюсь ты понимаешь насколько ты хорош в том что делаешь?) Мэтр своего дела. Талантище. После spring'a наверно будут уместны REST и SOAP? Теперь надолго не пропадет, надеюсь :)
Спасибо за добрые слова! Рад, что мои уроки вам полезны. Да, REST и SOAP планирую осветить. В первую очередь REST.
но ты не обольщайся, что это будет скоро)))
@@alishevN было бы очень круто, по REST)
+1)
@@alishevN Сорри, что беспокою, но знание каких технологий и на каком уровне достаточно для того чтобы начать искать работу? Просто беда в том что много знакомых сисадминов(да я и сам им работаю), а девелоперов нет, есть большое желание перейти в девелоперы, давняя мечта.
Спасибо большое за уроки!
Наиль, не бросай это дело, лучшего преподавателя я не встречал! Ты крут! Я с нетерпением ждал новых выпусков!
Каждое видео заставляет думать: "быстрее бы досмотреть до конца все уроки, чтобы многое знать", но когда смотрю-хочется это удовольствие продлить.
Во-первых автору огромное спасибо за эти видеоролики!
Во-вторых - хотел бы рассказать про ошибку:
HTTP Status 404 - Не найдено
Type Status Report
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
Apache Tomcat/9.0.86
Наверняка причины могут быть и другие, но в моём случае сработало:
1. В Intellij IDEA заходим в run/debug configurations
2. Кликаем Edit configurations...
3. Переходим в tomcat->deployment
В Application context оставляем пустое окно. Либо вводим то, что там написано после localhost:8080 а потом уже вводим /hello-world
P.S. Автор об этом упомянул, но по невнимательности, пересоздавая проект я забыл оставить пустую строку, надеюсь, кому-то я сберег пару часиков :)
P.P.S. Использовал связку как и у автора, но также сработало и на Spring 6.1.4 + Tomcat 10.1.19 + ThymeLeaf Spring 6 + зависимость на сервлет api поменял на jakarta.servlet-api 6.0.0
Thank u, sir!
Спасибо. Однако у меня все же не отрабатывает сервлет /hello-world
Спринг собирается и по умолчанию отрабатывает .jsp
как жить?)
@@user-dp9pe8is9n Есть два варианта , в поме поставить все как на видео , старые версии , и томкат 9, или же все на новом делать , 10 томкат , новая джава и докинуть надо jakarta.servlet-api
Спасибо огромное, часа два пытался найти причину
Заскочил с телефона лайк влепить! Оч долго ждал видео ))) топовый препод!!!
УРАААА ПРОДОЛЖЕНИЕ! Надеюсь перерывы станут по меньше))) Спасибо тебе за видосы, они просто лучшие, очень сильно помогают)))
Спасибо огромное! Очень доступно изложено, ничего лишнего. Продолжайте, пожалуйста.. Не бросайте нас
Спасибо Вам за ваши труды! У вас действительно талант объяснять доступно сложные вещи. Спасибо, что делитесь знаниями с другими.
Самый полезные канал по программированию на Java и курсы на Udemy огонь , спасибо.
Урра, наконец-то эти чудо уроки возобновились, спасибо большое, ты лучший в своем деле!
Я так рад что ты вернулся! Купил курсы на udemy! Спасибо!
Ох, я очень доволен! Кажется, с каждым новым уроком я становлюсь на шаг ближе к заветной мечте!)
Тоже не могу удержать и сказать ОГРОМНОЕ СПАСИБО! Твои уроки просто классные: никакой воды, все по делу, чистая речь, очень структурированная и наглядная информация!
Наверное лучшие уроки по Спрингу из существующих на русском, огромное спасибо за них
Возвращение легенды)
Огромная благодарность, не знал откуда подобраться к Спрингу, очень много разрозненной инфы, трудно понять с чего начать, благодаря тебе освоился именно с пониманием того, что как работает, дальше уже гораздо проще. Это потрясающая способность объяснять так, что даже пням все становится понятно, спасибо!
Пожалуйста доснимите до конца уроки по Spring. Ну оочень прям просим вас! Огромное спасибо! Ваши труды приносят пользу людям. УВАЖАЮ !!!! советую вас всем желающим познать java)
Уже знаю это, но все равно смотрю. Просто потому что канал топ :) Жду Spring Security
Однозначно лайк! надеюсь будешь и дальше делать ролики по этой теме)
Мега респект (хоть и немного устарели сами библиотеки), пришлось не много поломать голову и заюзать гугл... Так даже интересней
Я то думаж что с плейлистом не так)) а оказца новое видео вышло, спасибо тебе Наиль, коп коп рахмат тебе! Я вот и коллекции с тобой подтянул)) Если б не вирус уже устроился бы на др работу)
Ура. Долгожданное. Спасибо!
Я еще не посмотрел, но пожалуйста, продолжай!
Буду продолжать! Был занят.
Годнота подъехала!
Лайк не глядя. Однозначно будет супер
Зашел поставить лайк и написать комментарий. Мне очень тяжело это делать, я никому не пишу этого. Но за то что ты делаешь Наиль тебе огромное спасибо. Это действительно полезный труд.
Спасибо!
Наконец то, дождался
Курсовой проект сделал благодаря урокам индусов.
С таким темпом по твоим урокам будуть учиться мои внуки.
А такс, то спасибо за топовый контент.
Вау долго ждали))
Ура, у alishev’а видос!
Наконец то!!!! Спасибо тебе!!!!
открываю урок, ставлю лайк наперёд
Спасибо, учитель!
Спасибо за видео
Спасибо за видосики!
УРА УРА , наконец :)
Лайк! Даже не посмотрев!)
Рабочая конфигурация для текущего проекта.
18я Java (jdk 18.0.2)
Eclipse
Version: 2022-12 (4.26.0)
Build id: 20221201-1913
Spring 6: core, context, web, webmvc, beans - 6.0.4.
jakarta servlet 6.0.0
thymeleaf spring6 3.1.1 RELEASE
tomcat 10.0
спасибо
Благодарю, а то как раз на сервлетах все и посыпалось.
Если не сложно, можете скинуть репозиторий этого проекта?
Я вроде все зависимости обновил но выдает ошибку "More than one fragment with the name [spring_web] was found" при запуске Tomcat 10.
Огромное спасибо!
I'm really looking forward to your udemy Spring course.
Сходу лайк
Урааа. Наконец то
Всё, "big dick back in town". Спасибо за то, что вы делаете Наиль, у вас талант. Взял курс по гиту - рекомендую ребят, кратко и по делу, как мы любим.
Наконец то!!!
Спасибо! Спасибо! Спасибо!
В SpringBoot немного проще поступили с инициализатором сервлетов: public class WebAppInitializer extends SpringBootServletInitializer - и там всего один метод переопределить где указываем запускатор спринга)
Наиль, добрый день. Подскажите, пожалуйста, а в (@Autowired конструктор) applicationContext заинжектится тот, который спринг создаст и свяжет по пути из @ComponentScan?
Привет! Спасибо за уроки! А будет ли когда нибудь про решение задачи рюкзака с помощью динамического программирования? или совсем не стоит ждать продолжения курса по алгоритмам?
Да, будет. Я не забыл про это, хочу логически завершить курс по алгоритмам.
Спасибо!
спасибо!
А что если в методе getServletMapping() вернуть не {"/"}, а например, {"/test"}?
Тогда будут обрабатываться только запросы начинающееся с /test ?
Спасибо
Вот у меня возник вопрос , а что если сконфигурировав все кодом не удалять файлы .xml, откуда спринг в первую очередь будет вычитывать конфигурацию - из код-конфига или из xml-конфига ?(спрашиваю т.к. специально не удалял файлы как в конце урока, и ... ничего не сломалось всезапустилось имея посути конфигурацию в 2х разных местах)
Здравствуйте! А как это можно сделать в Эклипсе?
Очень полезно и интересно, единственный минус что для просмотра следующего урока нужно ждать 2+ месяцев. Я надеюсь у тебя в будущем будет уходить намного меньше на это времени. Стабильность в выпуске видео даст больший приток аудитории + для падаванов усваивать информацию, когда прошлый этап был тобой выучен несколько дней, по сравнению с несколькими месяцами - намного проще.
thank you)) don't give it up please
Добрый день,
подскажите, как заменить xml тег:
?
а что внедрится в конструкторе класса SpringConfig ? собсна какой объект какого класса выберет аннотация @Autowired?
index.jsp когда удалил? В прошлом уроке был, в этом уже нету или я что-то пропустил?
Не могу понять, почему кириллица не работает на страницах, везде где нашел поставил utf-8, но все равно выдает знаки вопроса?
Добрый день, можно поподробней. Добавляем зависимость servlet api, подсвечиваются красным. (cntrl sht o - не работает) Где кнопка import changes?
Здравствуйте! И через java классы не хочет читать .html читает стандартный .jsp который шол присоздании проектав Eclipse!
Спасибо за уроки! Да, с tomcat-10 подружить не получилось, с tomcat-9 заработало, причем даже в IDEA-community. Были ошибки "ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet", поставил версию спринговых зависимостей на актуальную 5.3.25 - ошибки ушли. XML-версия из предыдущего урока тоже заработала.
Tomcat 10 работает с Spring6+
для чего нужен Tomcat? Можно обойтись без него?
в коде на репозитории есть граматическая ошибка MySpringMvcDispatcherSerlvetIntitializer в слове Intializer => Initializer
Наиль, подскажи пожалуйста. Система, сканируя в первую очередь MySpringMvcDispatcherServletInitializer (ранее web.xml), понимает, что речь о сервлете диспетчера, который обращение к серверу ("/") надо перенаправлять на контроллер. Правильно ли понимаю, что она ищет класс, помеченный @Controller? Для однозначности он должен быть всегда один?
Контроллеров может быть любое количество, не обязательно один. Посмотрите следующий урок, я там создаю два контроллера.
07.04.2024
Конфигурация с которой все работает:
spring 6.1.5, thymeleaf-spring6, jakarta.servlet-api 6.1.0-M1, tomcat 10
404 выдает с такой конфигурацией(
не могу подключить статические ресурсы через addResourceHandler registry.addResourceHandler("/static/**").addResourceLocations("webapp/static/"); что здесь не так???
При запуске выдает ошибку java: cannot access jakarta.servlet.ServletException
class file for jakarta.servlet.ServletException not found хотя все библиотеки и servlet API подключены?
У меня tomcat 11 и Spring 6.0.4: если копировать за автором, то не получиться скомпилировать. В pom.xml нужно правильные зависимости прописать: 1) я использовал jakarta.servlet вместо javax естественно 2) использовал thymeleaf-spring6 (если у вас thymeleaf-spring5 то и версия Спринга должна быть 5 !) Может кому поможет. Автору лайк и спс за ролик.
Tomcat10, spring 6.0.5, jakarta.servlet-api 6.0.0, c конфигурацией через xml все норм, через java конфиг при попытке перейти на /hello выдает 404. хз че за магия
@@ArtFanRamm Надо внимательно всё проверить, полюбас где-то ошибка в синтаксисе или чёт не дописал. Я как-то пропустил одно слово в таймлифе и 2 часа думал, что не так, перекачивая Tomcat)) Могу ссылку на своего проекта на гите дать. Посмотришь конфигурацию
@@MgsMen в синтаксисе вряд-ли. Сейчас просто поменял версии спринга и тимлифа, выбрал томкат9 и все работает. Странная хрень. Возможно что-то дополнительно нужно в конфиге для спринг6 писать
@@MgsMen кинь пожалуйста ссылку на репу если не сложно, все таки хочу понять в чем проблема
@@ArtFanRamm К сожалению коменты удаляются ! Может есть другой вариант перекинуть ?
Спасибо за урок, только надо уточнить что тут нужен Ultimate IDEA
Я прохожу этот курс на Intellij IDEA Community. Пока полет нормальный. Сложности возникли на 2 уроке, когда добавлял архетипы Maven и на 15 уроке, когда ставил Tomcat. Пришлось несколько часов покурить интернет. Но индусы нас в беде не бросают, на любую задачу в программировании есть грамотный ролик на ютюбе от индийских братьев. Попадаются прям очень хорошие. Да, определенные ограничения остаются, и в реальной работе конечно придется брать Ultimate, но для учебы вполне достаточно Community. Все работает.
Друзья, всем привет! Не совсем понятен момент. Мы в SpringConfig прописываем @autowired у конструктора SpringConfig, однако ни одного бина этого класса не создаём. Откуда спринг знает, что его надо как-то отдельно создать? Или я что-то упускаю?
понял что инжектится? какой класс?
Ребят, пишу от конца февраля 2024, ставим последнюю версию Tomcat 9, и просто списываем с репоизтории все зависимости с POM.XML. Два дня убил мешал все со всем, но только на этом варианте все получилось
🍒
Если не хочется мучится, и используются зависимости: spring-boot-starter-web, spring-boot-starter-thymeleaf и пакет config не настраивается, patch и delete не работают, тогда можно просто добавить данную строку "spring.mvc.hiddenmethod.filter.enabled=true" в файл application.properties (расположение: resources -> templates -> application.properties), такой путь присутствует если пользоваться springInintializer
Почему-то при запуске открывается localhost:8080 и там нет страницы, если добавить к ссылке hello-world уже открывается наше представление, это нормально? Просто у вас оно открывается сразу при запуске
вопрос отпал на следующем уроке)
Вопрос автору: все эти участки кода, которые мы копируем постоянно с вашего Гита, на сколько сильно важно уметь писать этот код самостоятельно? Или же это равносильно знанию найти нужную зависимость в интернете и знать что вписывать в поля?
Последние 2 урока просто практически ничего не пишу сам а все копирую с ваших файлов)
А второй вопрос: Предыдущий урок как итог дает ошибку 404, джава 1.8 томкэт 9, спринг 5.21
localhost:8080/ работает только ЕСЛИ после "/" пишу название проэкта - переводит на страницу которая лежит в проэкте index.jsp
Уже 2й день пробую решить проблему - никак, перепробовал кучу всего как с инета как с комментариев прошлого видео. В итоге решил пока идти дальше, что можете посоветовать?
посмотрите поле Application context, оно должно быть пустым, и при прочих выполненных условия о версиях все работает (дописать /hello-world в адресной строке после localhost:8080)
ua-cam.com/video/BgE5DoIN6Bs/v-deo.htmlsi=myqmyD7bxYpz1YsP&t=328
решил в итоге? что-то этот урок меня разочаровал, куча вставленного когда без пояснений и вылезающая ошибка 404. а я уже думал купить курс....
Спасибо за урок,если у кого-то будет проблема 404,то просто в edit configuration , в fix выбирайте просто war , а не war exploded
Не помогает. Просто длиннее стала адресная строка. А при переходе на енд пойнт /hello_world -- всегда 404. уже все пересмотрел и перещупал. на начальной станице все нормально работает
@@serjiomikityuk5836 у меня тоже была ошибка 404, спринг 5 не работал с томкат 10, пришлось установить 9 и заработало
Спасибо, добрый человек!
ну и томкат 9
Работает на tomcat 9.0.29 и зависимостях примененых автором,
При обновлении зависимостей не деплоит артефакт
такая-же проблема как писали в комментариях, открывается index.jsp вместо html файла в eclipse
смена версии tomcat не помогла, пробовал 8-10
возможно есть еще решения?
Вот решение:
в pom.xml в пропертях замените
1.7
1.7
на что-то типа:
11
11
"11" в даном случае - версия JDK
@@LevchenkoYevhenii СПАСИБО!!! Я уже всю веру потерял!!!!)))))))))))))
Всем привет. Кто поможет решить такую проблему? после нажатия на RUN открывается localhost:8080 но отображает содержимое index.jsp Все делалось так как показано в уроке, но добавив localhost:8080/hello-world выдает 404 ошибку. кто сталкивался с таким?
Тоже самое, пока не решил как это фиксануть, если узнаю напишу) Ты если узнаешь тоже отпишись плиз)
Если еще актуально я просто все снес и переписал правда запустил на томкете 9 версии и все заработало
@@slavasmi3772 только хотел написать, что нужно tomcat 9 ставить. Спасибо, что откликнулся.
@@slavasmi3772 Большое спасибо! Я уже голову сломал, думая, как это пофиксить!)))
@@Lone144Wolf Рад, что помогло)
Ошибка: Сервер не запустился. Пишет The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
При наведении на return "hello-world" высвечивается Cannot resolve NPC View 'hello-world' , код скопирован из твоего гита.
Попробуйте создать проект с нуля, копируя в него мой код из этого проекта
@@alishevN спасибо, попробую
@@alishevN Я сделал всё как в вашем видео, и у меня тоже такая ошибка(404). Затем скачал ваш проект, попытался запустить, и всё равно та же самая ошибка, даже в вашем проекте.....
Добрый день, Наиль!
После перевода на конфигурацию Java классами перестали отображаться страницы .html. Созданная автоматом страница index.jsp в корне адреса отображается. Куда копать, что не так?
В телеграм-чате коллеги подсказали: все заработало на 9-й версии Tomcat'а.
@@proweb4all852 а можно попросить вас вспомнить, что вам рекомендовали? :) была 8+ версия томката, поставил 9 - хтмл не отображаются, ошибка 500 и в описании - невозможно открыть SpringConfig.class, потому что он не существует
@@SlavaBogatov аналогично. Решилась проблема?
Сначала была проблема с cannot resolve MVC… и 404(все версии, как у автора), после поменял зависимость thymleaf-spring 5 в помнике на thymeleaf. Проблема ушла, в этом уроке требуется импорт библиотек со spring 5, соотв и thymleaf 5 , все перестает работать, в чем проблема? Может кто сталкивался
поменял версию tomcat на 9 стало ок
Возможно, кому-то поможет. Версия Spring 5.2.1.RELEASE почему-то отказывается работать с последней версией Thymeleaf 3.0.12.RELEASE (сервер выдает ошибку 500). Поменял на 3.0.11.RELEASE и все заработало)
Спасибо за совет, у меня возникла точно такая проблема, не знала в чем дело, теперь все ок
По ходу повторения кода за уроком появилась проблема - не смог импортировать AbstractAnnotationConfigDispatcherServletInitializer (даже после ручного переписывания импорта и сверки правильности с гуглом).
Где-то на просторах интернетов нашёл, что может помочь зависимость "spring-webmvc". Добавил. Обновил. Не сработало.
Где-то на просторах интернетов нашёл что-то, что подтолкнуло попробовать удалить что-то из "spring-webmvc" или "spring-web". Удалил второе. Обновил. AbstractAnnotationConfigDispatcherServletInitializer импортировалось (в смысле просто покраснение прошло).
Решил вернуть зависимость "spring-webmvc" (так как, судя по видео, она должна пригодиться). Обновил. Импорт не покраснел и остался работать ¯\_(ツ)_/¯
Магия Spring'a )))
кто знает подскажите имеет ли смысл учить Spring не зная maven?
maven очень быстро можно изучить. там ничего сложного
Будьте внимательны, если набираете код вручную, а не копируете с репозитория.
В порыве написания кода не заметил, как пометил метод configureViewResolvers аннотацией @Bean, вместо @Override - долго не мог найти ошибку с кодом 500, пока не прочитал сообщение со страницы.
Вдруг кому-то это поможет!
ДАЙ БОГ ТЕБЕ ЗДОРОВЬЯ.
Делал по вашему уроку и у меня 404 ошибка. Соответственно тут вопрос Java у меня 18 версии ну и Spring зависимости тоже последние на данный момент это 5.3.22 это может быть потому , что уже все устарело? И второй вопрос при покупке курса вы будете помогать по Вашим урокам ?
какая версия tomkat' а ?
Здравствуйте! Ничего не устарело. Нужна девятая версия томката, спринг с ней только работает сейчас. При покупке курса вы получаете доступ в закрытый чат, там все получают помощь по вопросам, все ошибки решаем.
Попробуйте перейти на Tomcat 8
Установка Tomcat 9 не помогла мне
Если у вас выбрасывает такая ошибка:
java: cannot access javax.servlet.ServletException
class file for javax.servlet.ServletException not found
Я решил ее изменением версии Spring.
У меня стоял 6.0.1.
Откатил до авторского 5.2.1.RELEASE и заработало.
Удачи.
спасибо, помог)
ohh thank you, it wokred, i am super grateful for that
Использовал Jakarta Servlet 5.0.0 что бы заработало, вместо Java Servlet API.
Еще подчеркивается метод @Overide configureViewResolvers - забыл имплементироваться от WebMvcConfigurer 7:40
я пересматривал Ваш урок раз за разом, создавал несколько проектов, перебирал каждую строку во всех файлах в попытке достичь желаемого вывода "Hello-world". Основная загвоздка заключалась в том, что Eclipse автоматически вновь создает файл "web.xml". Я еще не смотрел, как убрать эту функцию, но проблему решил быстрым запуском сервера, пока файл не восстановился. Порой это сводит меня с ума...
Добрый день, Руслан! Работаю тоже на Ecliplse, но почему-то не получается. Вы как создавали проект: через maven-project или dynamic web project, а потом преобразовывали в maven-project?
@@dovgyjoleksandr9351
День добрый, я забросил это дело. Большое количество попыток дали понять, что лучше работать в идее. Единственное, что понял - эклипс автоматически создает файл после его удаления, небольшие прорывы случались, когда я его удалял и сразу же запускал сервер. Это все в архетипе webproject.
Почему не стали вместе описывать класс SpringConfig? Инструкция: скопируйте и вставьте. Ну это не дело(
Согласен. Написать руками и понимать почему это все должно быть здесь было бы вообще полезно.
404 [мое решение]
До последнего не верил, но изменение версии tomcat с 10 на 9 сработало. Просто на дворе февраль 2023, у меня хороший ноут, Java 19, версии spring фреймворков снизил до 5.3.22, КАЗАЛОСЬ БЫ, но это сработало.
Осталось узнать как послать в зад этот томкат и всё залить на хост.
спасибо, помогло и мне) странно почему)
кто подскажет почему выводиться jsp а не "hello_world.html"?
У кого подсвечивается красным, SpringConfig -> решение: www.logicbig.com/tutorials/spring-framework/spring-core/javaconfig-methods-inter-dependency.html
только с токат 9 работает с 11 пишет 404
у меня появилась ошибка: java: cannot access jakarta.servlet.ServletException
class file for jakarta.servlet.ServletException not found
Поменяй зависимость на эту
jakarta.servlet
jakarta.servlet-api
6.0.0
provided
Да, нужна jakarta, но лучше все поменять на более ранние версии, а то самим разбираться долго, так как не работает
Код заработал с spring 6.1.4, thymeleaf-spring6, jakarta.servlet-api 6.1.0-M1, tomcat 10. Возможно кому-то поможет
Tomcat v.10 показывает ошибку 404 , Tomcat v.9 работает нормально