これは非常に簡単だと思いますが、これまでのところ、機能させることができませんでした。
私がやりたいことは、ルート パスを Spring MVC コントローラーにマップすることです。通常のでは、 " "Servlet
のマッピングを に追加するだけで、それをうまく拾うことができます。しかし、Spring MVC ではそれほど多くはありません。/
web.xml
多くの組み合わせを試しましたが、どれもうまくいかないようです。次のものがうまくいくはずだと思います。
でweb.xml
:
<servlet-mapping>
<servlet-name>myDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
私のcontextConfigLocation
ファイルでは:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true"/>
<property name="mappings">
<util:map>
<entry key="/" value-ref="rootController"/>
</util:map>
</property>
</bean>
<bean id="rootController" class="my.package.RootController">
それから明らかに、コントローラー自体のケースがあります。メソッドを実際のルートパスにマップする方法がわかりません。私の試みは次のようなものです:
public class RootController extends MultiActionController {
@RequestMapping("/")
public ModelAndView display(HttpServletRequest request, HttpServletResponse response) throws Exception {
final Map<String, Object> model = new HashMap<String, Object>();
model.put("someVariable", "Hello, MVC world.");
return new ModelAndView("rootPage", model);
}
}
私のアプリケーションが で実行されているとしましょう。http://localhost:8080/app/
その正確な URL でメソッドを実行したいとしますdisplay
。の後には何も入力したくありません/app/
。実際、その後のいくつか/app/
は他のコントローラーにマップされ、すべて正常に動作します (そして、それらは動作し続ける必要があります)。
ここで何が欠けていますか?なぜこれが単純に機能しないのですか?同じものを使用url-pattern
してプレーンなServlet
インスタンスにマップすると、問題なく動作し、メソッドに到達しますdoGet
が、Spring MVC では、これを機能させるための特定のブラック マジックが欠けているようです。