1

我知道关于这个话题有很多问题,但我在这里找到的解决方案都没有对我有用。我在 Jetty 6 中使用 Spring,所以我没有 web.xml 文件。spring dispatcher servlet 的映射在 jetty 的配置中设置为“/”

调度员:

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

}

阅读日志它似乎工作,但我得到以下错误:

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

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

4

3 回答 3

2

你确定这个包名是正确的吗?

<context:component-scan base-package="com.project.web" />
于 2013-12-23T19:15:31.093 回答
0

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

<property name="pathSpec" value="*.html"></property>
于 2012-11-06T21:05:24.077 回答
0

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

于 2012-11-06T10:35:59.983 回答