Spring MVC - 没有为带HTTP的HTTP请求找到映射

时间:2012-11-06 09:19:28

标签: spring spring-mvc jetty http-status-code-404 url-mapping

我知道有很多关于这个主题的问题,但我在这里找到的解决方案都不适用于我。 我正在使用Spring和Jetty 6,所以我没有web.xml文件。 spring dispatcher servlet的映射在jetty的config

中设置为“/”

调度:

<bean class="org.mortbay.jetty.servlet.ServletHolder">
    <property name="name" value="spring" />
    <property name="servlet">
        <bean class="org.springframework.web.servlet.DispatcherServlet" />
    </property>
    <property name="initParameters">
        <map>
            <entry key="contextConfigLocation" value="classpath:com/project/config/spring-servlet.xml" />
        </map>
    </property>
</bean>

...制图:

<bean class="org.mortbay.jetty.servlet.ServletMapping">
    <property name="servletName" value="spring"></property>
    <property name="pathSpec" value="/"></property>
</bean>

spring-servlet.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="..." ...>


<context:component-scan base-package="com.project.web" />
<mvc:annotation-driven />

<bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/pages/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

</beans>

我有一个名为HelloController的简单控制器:

@Controller
public class HelloController {

    @RequestMapping(method = RequestMethod.GET, value="/welcome")
    public String sayHello(ModelMap model){
    model.addAttribute("message", "Spring 3 MVC Hello World");
    return "hello";
}

}

阅读日志似乎有效,但我收到以下错误:

在DispatcherServlet中找不到名为“spring”的带有URI [/WEB-INF/pages/hello.jsp]的HTTP请求的映射

我不明白。它将“/ welcome”映射到/WEB-INF/pages/hello.jsp,但它仍然说无法找到页面,这就是它似乎寻找它的地方。我将WEB-INF文件夹添加到类路径中,但它仍然是相同的。你知道为什么会这样吗?

3 个答案:

答案 0 :(得分:2)

您确定包名称是否正确?

<context:component-scan base-package="com.project.web" />

答案 1 :(得分:0)

控制器中的请求映射路径与您的http://your-domain/your-app/相关。如果您的应用名称为welcome,请使用网址http://localhost:25001/welcome/welcome或将请求映射更改为@RequestMapping(method = RequestMethod.GET, value="/"),以便您可以使用网址http://localhost:25001/welcome

答案 2 :(得分:0)

您的hello.jsp是否直接位于WEB-INF / pages下? 您可以将Dispatcher Servlet映射更改为此并尝试

<property name="pathSpec" value="*.html"></property>