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