![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Ulysses4j |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Не получается запустить простейший web-проект на Spring MVC: какая-то ерунда с мапингами. Такое ощущение, что дело может быть и не в Spring самом, но обычные проекты запускаются без проблем. Дело происходит на JBoss 4.2.0.
выдержка из web.xml
выдержка из firstSpring-servlet.xml
Проект в Eclipse называется SpringWeb. При попытке запросить http://localhost:8080/SpringWeb/ дает 404, в консоль выводится: 07:53:27,734 WARN [PageNotFound] No mapping for [/SpringWeb/] in DispatcherServlet with name 'firstSpring' При этом в url-pattern пробовал прописывать "/SpringWeb/*" - тот же эффект. Это сообщение отредактировал(а) Ulysses4j - 13.8.2007, 07:10 -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
||||
|
|||||
Ivan Kolesnikov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 9.3.2005 Где: г. Новокузнецк Репутация: 1 Всего: 6 |
А если указать url полностью: http://localhost:8080/SpringWeb/index.html, какой результат?
Просто если посмотреть примеры к spring, то там они в качестве welcom-file указывают простую jsp страницу, которая делает редирект в нужное место. Содержимое страницы следующее:
--------------------
|
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
В случае полного адреса результат тот же самый, к сожалению.
Мой пример взят из книжки Johnson et al. Professional Java Development with the Spring Framework 2005 (Wiley). А можете ваш немного пояснить: зачем там и редирект и icnlude? И как при этом описать маппинг в web.xml? Хотелось бы просто при обращении из браузера к корню сайта попасть на контроллер, который в качестве model делает, скажем, теущую дату, и все это потом резолвится к jsp страничке в WEB-INF/jsp/. Контроллер есть, но как до него достучаться... -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Ivan Kolesnikov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 9.3.2005 Где: г. Новокузнецк Репутация: 1 Всего: 6 |
Я начинал изучение spring с этой статьи: Apache Geronimo и среда Spring Framework: Часть 6. Spring MVC: Применение технологий Web-представлений
--------------------
|
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Спасибо, посмотрю.
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
Уменя есть кижка по Спринг МВС: Apress.Expert.Spring.MVC.and.Web.Flow.Feb.2006.pdf. Если надо то я на мыло тебе пошлю. Книга
![]() Это сообщение отредактировал(а) Tony - 13.8.2007, 22:45 |
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Спасибо, у меня есть эта книжка. Просто закапываться с отдельной книжкой по Spring MVC поначалу не хотелось, хотелось весь Spring окинуть взглядом (как бы самоуверенно ни звучало): я несколько штук книжек по Spring вообще посмотрел: DI, AOP, DAO (+JDBC только, orm пока не трогал) - вроде все более-менее нормально позапускалось, а вот на MVC споткнулся...
Но спасибо за совет, наверное, придется посмотреть и ее. Это сообщение отредактировал(а) Ulysses4j - 13.8.2007, 23:30 -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Chicker |
|
||||||||||||||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.7.2007 Репутация: нет Всего: нет |
С добрым утром.
2 Ulysses4j: Ничего, если на ты? Неплохо было бы привести текст java сервлета:
Итак. Просто запросить не получится, потому что твой index.html (указанный в welcome-file-list) это просто указание DispatcherServlet передать запрос на index.html твоему сервлету "e.g.FirstSpringServlet". Поэтому в welcome-file-list нужно указывать реальный html или jsp файл, который только и занимается тем, что делает redirect (перенаправление) на index.html. Например, можно использовать следующий стартовый jsp файл (index.jsp, его нужно положить в корень web-приложения):
Где, /pages/include.jsp :
Тогда, web.xml будет таким:
То есть, алгоритм такой: 1. Ты запрашиваешь http://localhost:8080/SpringWeb 2. Так как у тебя стоит welcome-file-list, то загрузится index.jsp 3. В ней происходит redirect на hello.htm 4. Spring смотрит в <servlet-mapping> и видит, что за *.htm отвечает DispatcherServlet, управление передается ему. 5. Теперь самое интересное. DispatcherServlet сам ничего не обрабатывает, он только передает запросы твоим сервлетам. Ты правильно указал в firstSpring-servlet.xml:
Этими строками ты говоришь, что запрос на hello.htm будет обрабатывать твой сервлет "e.g.FirstSpringServlet". Теперь, собственно, нужно написать свой сервлет e/g/FirstSpringServlet.java. Посмотри в своей книжке как его написать. В конце текста сервлета, ты указываешь какую страницу нужно вывести в ответ на первоначальный запрос: http://localhost:8080/SpringWeb. Например, так:
Страничка "hello" - это обычная html или jsp страница. она должна быть написана заранее. Это еще не все ![]() firstSpring-servlet.xml:
То есть, ты этим говоришь, что к логическому имени "hello" нужно добавить префик и суффикс, чтобы получить реальное имя. Итак, твой "hello" отобразится в "/WEB-INF/pages/hello.jsp" В hello.jsp ты, например, можешь выводить пресловутый "HelloWorld!" Итого, дерево твоего web-приложения должно быть примерно таким:
Довольно сложный Hello world получился, зато если привыкнуть, потом намного легче все будет. Удачи. |
||||||||||||||||
|
|||||||||||||||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Chicker, спасибо за детальное разъяснение. В принципе, вариант с редиректом уже предлагался, просто я никак не возьму в толк, почему вот отсюда:
не следует передача управления моему контроллеру ака "сервлету" (вообще, не понимаю, чего я в названии servlet приплел - привычка...). Получается: стукни в бубен так - оно и заработает, а хотелось бы понять, почему не проходит первоначальный вариант без редиректа. А остальное более-менее ясно. -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Chicker |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.7.2007 Репутация: нет Всего: нет |
Страничка указываемая в welcome-file-list должна быть реально существующей html или jsp страницей.
Еще одно примечание. Если ты программировал раньше на чистых сервлетах, то помнишь, что мы вызывали сервлет просто указывая его имя, например: http://localhost:8080/SpringWeb/WelcomeServlet1 . Поэтому, твой старый index.html это просто имя (ссылка на сервлет)e.g.FirstSpringServlet, которую ты связываешь в firstSpring-servlet.xml. А так как, это ссылка, а не реальная страница, поэтому ее нельзя указывать в welcome-file-list. |
|||
|
||||
Ulysses4j |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
О, вот это уже более понятно, спасибо!
Тем не менее, сделал с редиректом - все равно не работает. Видать, руки слишком кривые. По прежнему, набираю http://localhost:8080/SpringWeb/ - дает 404, а в логе появляется:
Если набираешь http://localhost:8080/SpringWeb/index.jsp, соответственно:
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
||||
|
|||||
Ulysses4j |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Ага, заработало, вместо
у меня было
Спасибо всем, кто откликнулся. -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
||||
|
|||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Простите, теперь появился вопрос по редиректу: сделал вроде бы все, как сказали, к тому же проконсультировался с примерами в дистрибе Spring. Вот какая штука: когда в первый раз вводишь в строке браузера адрес веб-приложения, то срабатывает страница из welcome-листа, которая редиректит на url, помапенный в конфигурации диспатчер-сервлета, работает контроллер, выводится нужный вид, все прекрасно. Но если нажать копочку "обновить страницу", то вылезает 404. Может быть, есть идеи, что не так, как это исправить?
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Chicker |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.7.2007 Репутация: нет Всего: нет |
Приведи содержимое файлов web.xml и firstSpring-servlet.xml, и скажи на какой адрес браузер ругается, выдавая ошибку 404.
Ну и заодно проверь, чтобы в web.xml, при определении DispatcherServlet стояла строчка <load-on-startup>1</load-on-startup>, например, так:
|
|||
|
||||
Ulysses4j |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Адрес: http://localhost:8080/SpringWeb/index.html или http://localhost:8080/SpringWeb - одинаково.
web.xml
firstSpring-servlet.xml
WEB-INF/views/views.properties
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
||||||
|
|||||||
Chicker |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.7.2007 Репутация: нет Всего: нет |
Вроде бы web.xml и firstSpring.xml в порядке.
Может что-то со структурой катологов не так, ведь браузер выдает ошибку 404 (ресурс не найден). На всякий случай, выкладываю свой HelloWorld (обновление страницы работает корректно). Посмотри, может найдешь в чем глюк. Если не разберешься, выкладывай свой проект, поглядим что там... Присоединённый файл ( Кол-во скачиваний: 23 ) ![]() |
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Да, ваш проект у меня запустился нормально. Дело во viewResolver. Когда ставлю InternalResourceViewResolver, как у вас - все в порядке, страница обновляется нормально, а когда ResourceBundleViewResolver: в первый раз страница загружается нормально, а при попытке обновить - 404. Как он сконфигурирован, я писал выше.
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Chicker |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.7.2007 Репутация: нет Всего: нет |
Попробуй указать в firstSpring-servlet.xml для viewResolver параметр "basename":
|
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Это не помогло. Оно и понятно: "views" и без того, по-умолчанию, базовое имя для файла-источника ресурсов.
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Chicker |
|
||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.7.2007 Репутация: нет Всего: нет |
Итак, тоже сделал ResourceBundleViewResolver.
У меня:
Где, home - лог. имя представления моей домашней страницы. Создал файлик views.properties с таким содержимым и поместил его в WEB-INF/classes:
Собственно, здесь мы и связываем лог. имя представления home с физическим /pages/home.jsp Все работает. Обновление страницы также производится корректно. |
||||
|
|||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Что означает срока: "home.requestContextAttribute=rc" ? И что в этом случае должен возвращать контроллер?
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Christoph |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: нет Всего: 11 |
решил на создавать новую тему, не работает у меня вот что, пишет Servlet springapp is not available
web.xml
springapp-servlet.xml
По идеи я должен перейти по этому урл http://localhost:8090/hello.html и обработать этот класс expert.HelloController, но пишет Servlet springapp is not available, спасибо за помощь -------------------- ![]() |
||||
|
|||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 18 Всего: 73 |
Christoph,
А что сервер в лог (в консоль, если запускаете из IDE) пишется? Может при деплое ошибки идут? Или при обращении к localhost:8090/hello.html На первый взгляд в конфигах все правильно. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: нет Всего: 11 |
ошибок нигде нет, только в браузере пишет HTTP Status 404 - Servlet springapp is not available
-------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |