Hello World Servler Spring error
От: FightUntilWeDie Россия http://www.crownest.ru
Дата: 17.01.07 11:28
Оценка:
Здраствуйте, следуюшая проблема. Никак не могу запустить простой пример Spring'а.
Собствено, скачал Spring 2.0.2, уже имеется J2EE SDK 1.4_03. Пишу на IDEA 6.0. При запуске примера с

Spring MVC step by step Part 1. Получаю самое банальное:

HTTP Status 404 — Servlet springapp is not available

type Status report

message Servlet springapp is not available

description The requested resource (Servlet springapp is not available) is not available.

web.xml:

<servlet>
        <servlet-name>springfirst</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springfirst</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!--
          - Location of the Log4J config file, for initialization and refresh checks.
          - Applied by Log4jConfigListener.
          -->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>


springfirst-servlet.xml:

<beans>
    <bean id="springappController" class="SpringappController"/>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/hello.htm">springappController</prop>
                <prop key="/hello.jsp">springappController</prop>
            </props>
        </property>
    </bean>
</beans>


Сам класс контролера:

public class SpringappController implements Controller
{
    /** Logger for this class and subclasses */
    protected final Log logger = LogFactory.getLog(getClass());

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        logger.info("SpringappController - returning hello view");

        return new ModelAndView("hello.jsp");
    }
}


Пытаюсь обратиться по адресу http://localhost:8080/springapp/hello.htm (hello.jsp — лежит в корне).

Заранее боагодарен за любую помошь весь мозг сломал.
You gotta do what you gotta do.
Re: Hello World Servler Spring error
От: Blazkowicz Россия  
Дата: 17.01.07 11:34
Оценка: 2 (1)
Здравствуйте, FightUntilWeDie, Вы писали:

FUW>Собствено, скачал Spring 2.0.2, уже имеется J2EE SDK 1.4_03. Пишу на IDEA 6.0. При запуске примера с


FUW>Spring MVC step by step Part 1. Получаю самое банальное:


FUW>HTTP Status 404 — Servlet springapp is not available


FUW>Пытаюсь обратиться по адресу http://localhost:8080/springapp/hello.htm (hello.jsp — лежит в корне).


FUW>Заранее боагодарен за любую помошь весь мозг сломал.



Столько текста и при этом совершенно не описан процесс деплоя. Как догадатся что и куда было запаковано и как зупущено на сервере.

Servlet springapp is not available — вызывает подозрения что приложение задеплоилось в рутовый контекст, а в ссылке подразумевается что контекст springapp.
Попробуй, например, http://localhost:8080/hello.htm
Re[2]: Hello World Servler Spring error
От: FightUntilWeDie Россия http://www.crownest.ru
Дата: 17.01.07 11:48
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, FightUntilWeDie, Вы писали:


FUW>>Собствено, скачал Spring 2.0.2, уже имеется J2EE SDK 1.4_03. Пишу на IDEA 6.0. При запуске примера с


FUW>>Spring MVC step by step Part 1. Получаю самое банальное:


FUW>>HTTP Status 404 — Servlet springapp is not available


FUW>>Пытаюсь обратиться по адресу http://localhost:8080/springapp/hello.htm (hello.jsp — лежит в корне).


FUW>>Заранее боагодарен за любую помошь весь мозг сломал.



B>Столько текста и при этом совершенно не описан процесс деплоя. Как догадатся что и куда было запаковано и как зупущено на сервере.


B>Servlet springapp is not available — вызывает подозрения что приложение задеплоилось в рутовый контекст, а в ссылке подразумевается что контекст springapp.

B>Попробуй, например, http://localhost:8080/hello.htm

Да деплоется все в рут. В resources лежат index.jsp и hello.jsp и в src в дефалтном пакете класс контролера. Да по такому пути http://localhost:8080/hello.jsp, страница открывается (да, что то я совсем затупил), но на контролер управление не переходит.
Код страницы hello.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head><title>Example :: Spring Application</title></head>
    <body>
        <h1>Hello - Spring Application.</h1>
        <h1><%request.getParameter("title");%></h1>
        <p>Made by Crow.</p>
    </body>
</html>


Код изменненый код контролера SpringappController:
ublic class SpringappController implements Controller
{
    /** Logger for this class and subclasses */
    protected final Log logger = LogFactory.getLog(getClass());

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        logger.info("SpringappController - returning hello view");

        return new ModelAndView("hello.jsp?title=" + "SpringappController - returning hello view");
    }
}


Не title не выводит плюс на breakpoint'ы не приходит.
You gotta do what you gotta do.
Re[3]: Hello World Servler Spring error
От: FightUntilWeDie Россия http://www.crownest.ru
Дата: 17.01.07 12:02
Оценка:
Здравствуйте, FightUntilWeDie, Вы писали:

Немного описался:

FUW><%@ page contentType="text/html;charset=UTF-8" language="java" %>
FUW><html>
FUW>    <head><title>Example :: Spring Application</title></head>
FUW>    <body>
FUW>        <h1>Hello - Spring Application.</h1>
FUW>        <h1><%request.getParameter("title");%></h1>
FUW>        <p>Made by Crow.</p>
FUW>    </body>
FUW></html>


вместо <%request.getParameter("title");%> стоит читать <%=request.getParameter("title")%>. Но результат такой же на контролер не приходит управление.
You gotta do what you gotta do.
Re[3]: Hello World Servler Spring error
От: Blazkowicz Россия  
Дата: 17.01.07 12:06
Оценка:
Здравствуйте, FightUntilWeDie, Вы писали:

B>>Попробуй, например, http://localhost:8080/hello.htm


FUW>Да деплоется все в рут. В resources лежат index.jsp и hello.jsp и в src в дефалтном пакете класс контролера. Да по такому пути http://localhost:8080/hello.jsp, страница открывается (да, что то я совсем затупил), но на контролер управление не переходит.


Так у тебя маппинг сервлета на *.html, для чего же ты hello.jsp открываешь?
Re[4]: Hello World Servler Spring error
От: FightUntilWeDie Россия http://www.crownest.ru
Дата: 17.01.07 12:17
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>>>Попробуй, например, http://localhost:8080/hello.htm


FUW>>Да деплоется все в рут. В resources лежат index.jsp и hello.jsp и в src в дефалтном пакете класс контролера. Да по такому пути http://localhost:8080/hello.jsp, страница открывается (да, что то я совсем затупил), но на контролер управление не переходит.


B>Так у тебя маппинг сервлета на *.html, для чего же ты hello.jsp открываешь?


Так в примере написано было. Да мапинги я пробовал разные например: переименовать hello.jsp в .htm или пробовал поменять в web.xml:
   <url-pattern>spring</url-pattern>
,
а так же в xml контролерра
   <prop key="/spring">springappController</prop>
. В этих случаях Http Status 404.
You gotta do what you gotta do.
Re[5]: Hello World Servler Spring error
От: Blazkowicz Россия  
Дата: 17.01.07 12:26
Оценка: 2 (1)
Здравствуйте, FightUntilWeDie, Вы писали:

FUW>Так в примере написано было. Да мапинги я пробовал разные например: переименовать hello.jsp в .htm или пробовал поменять в web.xml:

FUW>
FUW>   <url-pattern>spring</url-pattern>
FUW>
,

FUW>а так же в xml контролерра
FUW>
FUW>   <prop key="/spring">springappController</prop>
FUW>
. В этих случаях Http Status 404.


1) Текст выше навервает на мысль что ты пытаеьшся разобратся в проблеме методом научного тыка. Вместо того чтобы размеренно почитать документацию по каждому из пунктов.
2) В том примере нигде не говорится откройте jsp и посмотрите как отработает ваш контроллер. Смысл в том что ты запрашиваешь hello.htm, контейнер находит сервлет ответсвенный на этот запрос. Сервлет диспатчит запрос контроллеру, а контроллер говорит какую вьюху использовать. А вот ViewResolver уже находит нужную JSP для ренддеринга.
Re[6]: Hello World Servler Spring error
От: FightUntilWeDie Россия http://www.crownest.ru
Дата: 17.01.07 12:56
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>1) Текст выше навервает на мысль что ты пытаеьшся разобратся в проблеме методом научного тыка. Вместо того чтобы размеренно почитать документацию по каждому из пунктов.

B>2) В том примере нигде не говорится откройте jsp и посмотрите как отработает ваш контроллер. Смысл в том что ты запрашиваешь hello.htm, контейнер находит сервлет ответсвенный на этот запрос. Сервлет диспатчит запрос контроллеру, а контроллер говорит какую вьюху использовать. А вот ViewResolver уже находит нужную JSP для ренддеринга.

Почти научным тыком. Второй день читаю документацию Spring in Action и Spring Reference Documentation. Решил попробовать простой пример сразу столкнулся с кучей проблем. Да в теории все хорошо и модель с 6 звеньями все забавно вот только запустить не могу. Спасибо за помошь буду клвыряться дальше.
You gotta do what you gotta do.
Re[7]: Hello World Servler Spring error
От: Blazkowicz Россия  
Дата: 17.01.07 13:10
Оценка:
Здравствуйте, FightUntilWeDie, Вы писали:

FUW>Второй день читаю документацию Spring in Action и Spring Reference Documentation. Решил попробовать простой пример сразу столкнулся с кучей проблем. Да в теории все хорошо и модель с 6 звеньями все забавно вот только запустить не могу. Спасибо за помошь буду клвыряться дальше.


Для начала неплохо бы освоится с сервлетами, веб приложениями и деплойментом вообще. Проблемы выше к Spring никакого отношения не имееют. Так что сарказм про забавные звенья можно было бы оставить при себе.
Re[8]: Hello World Servler Spring error
От: sir_shaman  
Дата: 17.01.07 14:35
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, FightUntilWeDie, Вы писали:


FUW>>Второй день читаю документацию Spring in Action и Spring Reference Documentation. Решил попробовать простой пример сразу столкнулся с кучей проблем. Да в теории все хорошо и модель с 6 звеньями все забавно вот только запустить не могу. Спасибо за помошь буду клвыряться дальше.


B>Для начала неплохо бы освоится с сервлетами, веб приложениями и деплойментом вообще. Проблемы выше к Spring никакого отношения не имееют. Так что сарказм про забавные звенья можно было бы оставить при себе.


Было дело, когда все только начиналось, я этот же пакетик собирал. Но вот кстати конкретно с ним, насколько я помню, проблем не было .

Так вот — может я туплю и не помню уже ничего, тем более сейчас я не в кондиции, но посмотрите внимательно — это бросается в глаза — в шестом шаге туториала, web.xml:


  <servlet>
    <servlet-name>springapp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>springapp</servlet-name>
    <url-pattern>*.htm</url-pattern>
  </servlet-mapping>


а у вас:



  <servlet>
    <servlet-name>springfirst</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>springfirst</servlet-name>
    <url-pattern>*.htm</url-pattern>
  </servlet-mapping>


имхо если вы попробуете ходить на http://localhost:8080/springfirst/* — возможно будет вам счастье — а то непонятно что сервлет у вас мониторит и вообще зачем вы это дело поменяли....

или извините если я глупости говорю, я сейчас ни в чем не уверен...
Re[9]: Hello World Servler Spring error
От: Blazkowicz Россия  
Дата: 17.01.07 14:38
Оценка:
Здравствуйте, sir_shaman, Вы писали:

_>или извините если я глупости говорю, я сейчас ни в чем не уверен...


Глупости говоришь. Имя сервлета не влияет на имя контекста, который предоставляет сервер.
Re[10]: Hello World Servler Spring error
От: sir_shaman  
Дата: 17.01.07 15:03
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, sir_shaman, Вы писали:


_>>или извините если я глупости говорю, я сейчас ни в чем не уверен...


B>Глупости говоришь. Имя сервлета не влияет на имя контекста, который предоставляет сервер.


Да, абсолютно верно. Мозг почти начисто забыл j2ee — без практики, прошу прощения. Но сердце помнит .

И этим сердцем я чую что проблема кроется где-то здесь .
Re: Hello World Servler Spring error
От: FightUntilWeDie Россия http://www.crownest.ru
Дата: 18.01.07 11:31
Оценка:
Проблема осталось только я теперь попробую ее формализовать более приближенно к документации производителя.

Пробуем мапить Spring'овый DispatcherServlet web.xml:
    <!--SERVLET DEFINITIONS-->
    <servlet>
        <servlet-name>springfirst</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--SERVLET MAPPINGS-->
    <servlet-mapping>
        <servlet-name>springfirst</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>


Если деплой происходит в рут то любой запрос формата http://localhost:8080/*.htm должен вызвать DispatcherServlet. Далее по нотации нужно определить springfirst-servlet.xml.
<beans>
    
    <!-- Прописываем SimpleUrlHandlerMapping, то есть теперь из всего множества http://localhost:8080/*.htm - DispatcherServlet будет диспатчить SpringappController'у при указании адреса http://localhost:8080/welcome.htm. Пробовал BeanNameUrlHandlerMapping такой строкой <bean name="/welcome.htm" class="root.SpringappController" /> (соответствено закоментировав SimpleUrlHandlerMapping). -->
    <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/welcome.htm">springappController</prop>
            </props>
        </property>
    </bean>

    <!-- Создаем компанент Controler'а -->
    <bean id="springappController" class="root.SpringappController" />

    <!-- Создаем View Resolver теперь при указании в ModelAndView строки будет выглядеть так prefix+строка+suffix -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/welcome/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
    
</beans>


Остается сам класс контролера root.SpringappController:
package root;

import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;

import java.io.IOException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;

public class SpringappController implements Controller
{
    /** Logger for this class and subclasses */
    protected final Log logger = LogFactory.getLog(getClass());

    public ModelAndView handleRequest(HttpServletRequest request,
                                      HttpServletResponse response)
            throws ServletException, IOException
    {
        logger.info("SpringappController - returning hello view");

        // Соответственно так как указали View Resolve будет генериться /welcome/ + hello + .jsp
        return new ModelAndView("hello");
    }
}


Так же созданы 2 страницы: index.jsp в корне указана в web-app как welcome-file и вторая hello.jsp в папке welcome.

После все мапингов пробуем обраться к http://localhost:8080/welcome.htm

Получаем ответ:
HTTP Status 404 - Servlet springfirst is not available

type Status report

message Servlet springfirst is not available

description The requested resource (Servlet springfirst is not available) is not available.
Apache Tomcat/5.0.28


Далее пробуем создать обычный сервлет что бы проверить вообше их работоспособность web.xml:
    <!--SERVLET DEFINITIONS-->
    <servlet>
        <servlet-name>simple</servlet-name>
        <servlet-class>root.SimpleServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--SERVLET MAPPINGS-->
    <servlet-mapping>
        <servlet-name>simple</servlet-name>
        <url-pattern>*.srv</url-pattern>
    </servlet-mapping>


И сам класс сервлета
package root;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;

public class SimpleServlet extends HttpServlet
{

    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response)
            throws ServletException, IOException
    {
        response.sendRedirect("/welcome/hello.jsp");
    }
}


Обрашаясь по адресу http://localhost:8080/something.srv, получаем ответ точный, как часы.

Мое подозрение что DispatcherServlet не находит firstspring-servlet.xml из за этого все беды (использую JDK 1.4_03 может это как то сказывается). Кто с сталкивался с чем то подобным откликнитесь? Заранее признателен за помошь.
You gotta do what you gotta do.
Re[2]: Hello World Servler Spring error
От: sir_shaman  
Дата: 18.01.07 13:26
Оценка: +1
Здравствуйте, FightUntilWeDie, Вы писали:

FUW>Проблема осталось только я теперь попробую ее формализовать более приближенно к документации производителя.


FUW>Пробуем мапить Spring'овый DispatcherServlet web.xml:

FUW>
FUW>    <!--SERVLET DEFINITIONS-->
FUW>    <servlet>
FUW>        <servlet-name>springfirst</servlet-name>
FUW>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
FUW>        <load-on-startup>1</load-on-startup>
FUW>    </servlet>

FUW>    <!--SERVLET MAPPINGS-->
FUW>    <servlet-mapping>
FUW>        <servlet-name>springfirst</servlet-name>
FUW>        <url-pattern>*.htm</url-pattern>
FUW>    </servlet-mapping>
FUW>


На JDK по идее завязно быть не должно — если только с шаблонами чего.

Да, вполне может быть проблема нахождения firstspring-servlet.xml (почему firstspring????, почему springfirst???) — такие проблемы у меня были, но решения тоже забылись ибо для проектов я использовал один и тот же шаблон.

Я не пойму, при всем уважении — если вы действительно хотите разобраться с проблемой — почему же вы упорно называете все по-своему? Я осознаю — это вещь необязательная. Я осознаю — должно работать и так. Понимаю, видимо хочется приложить творческую руку. Но в данном случае я бы продолжил пошагово приводить все к виду "абсолютно как в туториале" — и на каком-то шаге все бы волшебным образом "починилось" — и было бы понятно в чем ошибка — у меня этот туториал работал, но я всегда указывал ContextRoot. Вот потом — уже при работающем проекте — можно бы было все менять и делать что заблагорассудится, ибо этап поломки был бы как на ладони. И у вас наконец был бы шаблон для будущих проектов (и информация об ошибке) — и о подобных мелочах вы бы больше не задумывались — в J2EE есть и более серьезные проблемы. Подумайте, такие вещи — это трата вашего времени.

Если хотите, я достану найду вам пример в загашнике и пришлю вам в рабочем виде. А чтобы получить конкретный ответ по сути — надо все-таки привести все к виду "как надо", а не "как хочется".
Re[3]: Hello World Servler Spring error
От: FightUntilWeDie Россия http://www.crownest.ru
Дата: 18.01.07 13:54
Оценка:
Здравствуйте, sir_shaman, Вы писали:

FUW>>Проблема осталось только я теперь попробую ее формализовать более приближенно к документации производителя.


FUW>>Пробуем мапить Spring'овый DispatcherServlet web.xml:

FUW>>
FUW>>    <!--SERVLET DEFINITIONS-->
FUW>>    <servlet>
FUW>>        <servlet-name>springfirst</servlet-name>
FUW>>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
FUW>>        <load-on-startup>1</load-on-startup>
FUW>>    </servlet>

FUW>>    <!--SERVLET MAPPINGS-->
FUW>>    <servlet-mapping>
FUW>>        <servlet-name>springfirst</servlet-name>
FUW>>        <url-pattern>*.htm</url-pattern>
FUW>>    </servlet-mapping>
FUW>>


_>На JDK по идее завязно быть не должно — если только с шаблонами чего.


_>Да, вполне может быть проблема нахождения firstspring-servlet.xml (почему firstspring????, почему springfirst???) — такие проблемы у меня были, но решения тоже забылись ибо для проектов я использовал один и тот же шаблон.


Потому что Spring будет искать сам <servlet-name>-servlet.xml это во всех примерах.

_>Я не пойму, при всем уважении — если вы действительно хотите разобраться с проблемой — почему же вы упорно называете все по-своему? Я осознаю — это вещь необязательная. Я осознаю — должно работать и так. Понимаю, видимо хочется приложить творческую руку. Но в данном случае я бы продолжил пошагово приводить все к виду "абсолютно как в туториале" — и на каком-то шаге все бы волшебным образом "починилось" — и было бы понятно в чем ошибка — у меня этот туториал работал, но я всегда указывал ContextRoot. Вот потом — уже при работающем проекте — можно бы было все менять и делать что заблагорассудится, ибо этап поломки был бы как на ладони. И у вас наконец был бы шаблон для будущих проектов (и информация об ошибке) — и о подобных мелочах вы бы больше не задумывались — в J2EE есть и более серьезные проблемы. Подумайте, такие вещи — это трата вашего времени.


Да сначала я перенес пример как он есть — он не работал. Все остальное с течение времени менялось. По документации не важно какие имена главное суть, если не работает по сути, хотелось бы знать почему где не подходит имя и самое главное почему оно не походит. Сечас написано я считаю "как надо". Dот не могу понять почему не работает. Сейчас изменил на исходные имена результат тот же проблема я думаю хитрее. Я пытался брать примеры без изменений не работает.

_>Если хотите, я достану найду вам пример в загашнике и пришлю вам в рабочем виде. А чтобы получить конкретный ответ по сути — надо все-таки привести все к виду "как надо", а не "как хочется".


Да был бы вам очень признателен за такой примерчик.
You gotta do what you gotta do.
Re[4]: Hello World Servler Spring error
От: Blazkowicz Россия  
Дата: 18.01.07 14:05
Оценка:
Здравствуйте, FightUntilWeDie, Вы писали:


FUW>Да был бы вам очень признателен за такой примерчик.


Тю:
spring-framework-1.2.7\samples\webapp-minimal
Re: Hello World Servler Spring error
От: FightUntilWeDie Россия http://www.crownest.ru
Дата: 22.01.07 08:35
Оценка:
Решил проблему. Она возникала из за того что я подключал Spring библиотеки как Project libraries, а не просто в модуль.
You gotta do what you gotta do.
Re[2]: Hello World Servler Spring error
От: Аноним  
Дата: 16.07.09 06:49
Оценка:
Здравствуйте, FightUntilWeDie, Вы писали:

FUW>Решил проблему. Она возникала из за того что я подключал Spring библиотеки как Project libraries, а не просто в модуль.

а можно по подробнее, такая же проблема, уже устал ковыряться
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.