【问题标题】:Spring MVC and Weblogic integrationSpring MVC 和 Weblogic 集成
【发布时间】:2010-05-14 02:34:41
【问题描述】:

每当我尝试在浏览器中查看我的教程应用程序时都会收到此错误

警告:在名称为“dispatcher”的 DispatcherServlet 中找不到带有 URI [/HelloWorld.Web] 的 HTTP 请求的映射

这只是意味着调度程序 servlet 正在接收请求,但它无法将其转发给控制器。

但我似乎不知道问题出在哪里。我想我已经正确地映射了这个:

<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;
    }

}

【问题讨论】:

  • 您可以发布您的 web.xml 配置以及与“调度程序”servlet 相关的任何其他 spring 配置吗?
  • 已经添加了 web.xml。让我知道是否需要添加其他内容。有趣的是,相同的代码在 GAE(使用 Jetty)中如何工作,但在 Oracle Weblogic 中却不行。
  • 能否也看看IndexController的来源
  • 嗯,MultiActionController 自 Spring 2.5 以来已过时,您确定要继续使用它吗?带注释的控制器是表达多动作控制器的一种更好的方式。
  • @Skaffman re:MultiActionController,不知道。我会试一试。但我认为这里的问题在于 weblogic。相同的代码在使用 Jetty 的 GAE 开发环境中运行。

标签: spring spring-mvc weblogic9.x


【解决方案1】:

我对此不太确定,但我认为问题出在 web.xml 中的以下条目中:

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

Servlet 2.4 规范是关于将请求映射到 servlet 的完全模糊 (IMO),上述声明表示应用程序的“默认”servlet,在这种情况下,servlet 路径是请求 URI 减去上下文路径和路径info 为空(无论这意味着什么)。

那么,如果您将上面的内容替换为以下内容,它会改变什么吗?

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

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多