【发布时间】:2012-10-26 05:20:05
【问题描述】:
我知道有很多关于这个主题的问题,但我在这里找到的解决方案都没有对我有用。 我正在使用带有 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 文件夹添加到类路径中,但它仍然相同。你知道这是为什么吗?
【问题讨论】:
-
您使用的网址是什么?不是
http://your-domain/your-app/welcome吗? -
您的链接有帮助,谢谢。我将 dispatcherservlet 的映射更改为 /spring/*。现在尝试localhost:25001/spring/welcome 时,我没有收到“找不到映射...”错误,而且映射似乎是正确的。但是,现在日志显示: Forwarding to resource [/WEB-INF/pages/hello.html] in InternalResourceView 'hello' 然后我得到这个: Not Found /WEB-INF/pages/hello.html
标签: spring spring-mvc jetty http-status-code-404 url-mapping