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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.