URLパターンがパスである場合、スプリングMVCディスパッチャーを適切に動作させることができません
-
27-10-2019 - |
質問
現在、レストサービス用にSpring MVCを適用しているWebアプリがあります。私たちは、私たちのレストサービスを下に掲載したいと考えています ${contextPath}/rest/**
, 、しかし、私がこれを設定すると、私たちは取得します:
uri [/myapp/ret/testsvc/message]を使用したHTTP要求のマッピングはありません。
じぶんの web.xml
もっている:
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/servlet-context.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/rest</url-pattern>
</servlet-mapping>
servlet-context.xml
, 、それは問題ありません、そして、彼らがスタートアップで登録されるときにサービスを登録しています。
<context:component-scan base-package="com.mycompany.myapp.rest" />
<mvc:annotation-driven />
私のコントローラーは次のように見えます:
@Controller
@RequestMapping(value = "/rest/testService")
public class TestREST {
@RequestMapping(value="message", method=RequestMethod.GET)
public @ResponseBody String getMessage() {
return "REST working";
}
私がcahngeする場合 url-pattern
の web.xml
*.restと私のリクエストマッピングへ message
に message.rest
できます。
解決
問題は、あなたが繰り返した可能性が高いことです /rest
両方のプレフィックス web.xml
と @RequestMapping
. 。それは1つまたはどちらかにあるべきですが、両方ではありません。
<url-pattern>/rest</url-pattern>
と
@RequestMapping(value = "/testService")
その道 @RequestMapping
操作は、サーブレット部分に続くパスの部分であり、あなたの web.xml
サーブレット部分を次のように定義します /path
, 、 それで @RequestMapping
残っているものと一致する、すなわち /testService
.
その現在の形で、あなた @RequestMapping
実際に一致しています {contextPath}/rest/rest/testService
.
他のヒント
たぶん、あなたはに変えてみることができます <url-pattern>/rest/*</url-pattern
>または <url-pattern>/rest*</url-pattern
>それが役立つかどうかを確認します。