Spring MVC и интеграция с Weblogic - PullRequest
1 голос
/ 14 мая 2010

Я получаю эту ошибку всякий раз, когда пытаюсь просмотреть свое учебное приложение в браузере

ВНИМАНИЕ: не найдено сопоставление для HTTP-запроса с URI [/HelloWorld.Web] в DispatcherServlet с именем «dispatcher»

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

Но я не могу понять, в чем проблема. Я думаю, что правильно сопоставил это:

<bean id="urlMapping" 
     class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     <property name="mappings">
        <props>
           <prop key="/HelloWorld.Web">indexController</prop>
        </props>
     </property>    
</bean>

<bean id="indexController" class="com.helloworld.controller.IndexController">
    <property name="artistDao" ref="artistDao"/>    
    <property name="methodNameResolver">
        <bean class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
            <property name="alwaysUseFullPath" value="true"/>
            <property name="mappings">
                <props>
                    <prop key="/HelloWorld.Web">getAllArtists</prop>
                </props>
            </property>
        </bean>
    </property>
</bean>

Я использую Spring 2.5.6 и Bea Weblogic Server 9.2

Вот мой web.xml

<web-app id="WebApp_ID" version="2.4" 
         xmlns="http://java.sun.com/xml/ns/j2ee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>           
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

Вот индексный контроллер

public class IndexController extends MultiActionController {

    private ArtistDao artistsDao;
    public ModelAndView getAllArtists(HttpServletRequest request, HttpServletResponse response) throws SQLException{
        ModelAndView mav = new ModelAndView();
        mav.setViewName("index");
        List<Artist> artists = artistsDao.getAll();
        mav.addObject("artists", artists);
        return mav;
    }
    public void setArtistsDao(ArtistDao artistsDao) {
        this.artistsDao = artistsDao;
    }

}

1 Ответ

0 голосов
/ 19 мая 2010

Я не совсем уверен в этом, но я думаю, что проблема в следующей записи в web.xml:

<servlet-mapping>
     <servlet-name>dispatcher</servlet-name>
     <url-pattern>/</url-pattern>
</servlet-mapping>

Спецификация сервлета 2.4 - это полное размытие (IMO) в отношении сопоставления запросов к сервлетам, а вышеприведенное объявление означает «сервлет» приложения по умолчанию, и в этом случае путь сервлета является URI запроса минус путь контекста и путь информация нулевая (что бы это ни значило).

Итак, если вы замените вышеприведенное на следующее, это что-нибудь изменит?

<servlet-mapping>
     <servlet-name>dispatcher</servlet-name>
     <url-pattern>/*.Web</url-pattern>
</servlet-mapping>
...