このトピックに関する質問がたくさんあることは承知していますが、ここで見つけた解決策はどれもうまくいきませんでした。私はSpringとJetty6を使用しているので、web.xmlファイルがありません。スプリングディスパッチャサーブレットのマッピングは、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";
}
}
ログを読み取ると機能しているように見えますが、次のエラーが発生します。
DispatcherServletに「spring」という名前のURI[/WEB-INF/pages/hello.jsp]を持つHTTPリクエストのマッピングが見つかりません
わかりません。「/welcome」を/WEB-INF/pages/hello.jspにマップしますが、それでもページが見つからないと表示されます。これは、ページを探しているように見える場所にあります。クラスパスにWEB-INFフォルダーを追加しましたが、それでも同じです。なぜだか分かりますか?