これは初心者の質問だと確信しており、答えを得るために1時間の大半をスタックオーバーフローのトロールに費やしましたが、誰も私のケースを持っていないようです...
Spring MVC を使用する新しい webapp があります。アプリのほとんど (99%) は純粋な REST であるため、「ビュー」自体はなく、単純に JSON を送信するか、エラーなどの代替 HTTP ステータスを送信します。
例外は、実際の JSP である必要があるログイン ページですが、どういうわけか、REST コントローラーをマップするために使用している構成によって、通常の JSP マッピングが失敗する状態になっています。
これが私が持っているものです:
私の Dispatcher サーブレット構成では、関連する部分は次のとおりです。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
それを機能させるために、現在ログイン JSP にリダイレクトするだけの "HomeController" へのマッピングも追加しました。
<bean name="/" class="com.somepackage.HomeController"/>
今、私が持っている web.xml で:
<servlet>
<servlet-name>spring-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-dispatcher-servlet.xml
</param-value>
</context-param>
これは、次のような RESTful コントローラーでは正常に機能します。
@Controller
@RequestMapping(value = "/api/user")
public class BlahBlahController {...
私の「HomeController」は次のようになります。
@Controller
@RequestMapping(value = "/")
public class HomeController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
return new ModelAndView("login");
}
}
「/」URL にアクセスすると IS がトリガーされますが、ログに次のエラーが記録されます。
WARNING: No mapping found for HTTP request with URI [/WEB-INF/pages/login.jsp] in DispatcherServlet with name 'spring-dispatcher'
今、私はそれが言っていることを理解していますが、解決方法がわかりません/WEB-INF/pages/login.jsp
(このページは存在します)。
私はそれがどのように機能するはずなのか少し混乱しています。手がかりを得た人はいますか?
ありがとう。