我知道关于这个话题有很多问题,但我在这里找到的解决方案都没有对我有用。我在 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 文件夹添加到类路径中,但它仍然相同。你知道这是为什么吗?