11

最初の Spring 3 MVC セットアップを実行しようとしています。

私のアプリはTomcatで実行されており、サーバーコンテキストは「グレープバイン」です

http://localhost:8080/grapevine/testテストの目的で、からのコンテンツをレンダリングするリクエストを取得しようとしていますWEB-INF/jsp/noSuchInvitation.jsp

これを試してみると、 が404表示され、ログは jsp が存在しないことを示しています。

WARN  org.springframework.web.servlet.PageNotFound  - No mapping found for HTTP request with URI [/grapevine/WEB-INF/jsp/noSuchInvitation.jsp] in DispatcherServlet with name 'grapevine'

どこかでこれを誤って設定したに違いありませんが、何が間違っているのかわかりません。

関連するすべてのスニペットを次に示します。

Web.xml:

<servlet>
    <servlet-name>grapevine</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>grapevine</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

私の文脈から:

<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

コントローラ:

@Controller
public class ParticipantInvitationController {

@RequestMapping("/test")
public ModelAndView test()
{
    return new ModelAndView("noSuchInvitation");
}

ログ:

DEBUG org.springframework.web.servlet.DispatcherServlet  - Rendering view [org.springframework.web.servlet.view.JstlView: name 'noSuchInvitation'; URL [/WEB-INF/jsp/noSuchInvitation.jsp]] in DispatcherServlet with name 'grapevine'
DEBUG org.springframework.web.servlet.view.JstlView  - Forwarding to resource [/WEB-INF/jsp/noSuchInvitation.jsp] in InternalResourceView 'noSuchInvitation'
DEBUG org.springframework.web.servlet.DispatcherServlet  - DispatcherServlet with name 'grapevine' processing GET request for [/grapevine/WEB-INF/jsp/noSuchInvitation.jsp]
WARN  org.springframework.web.servlet.PageNotFound  - No mapping found for HTTP request with URI [/grapevine/WEB-INF/jsp/noSuchInvitation.jsp] in DispatcherServlet with name 'grapevine'
DEBUG org.springframework.security.web.context.HttpSessionSecurityContextRepository  - SecurityContext contents are anonymous - context will not be stored in HttpSession. 
DEBUG org.springframework.web.servlet.DispatcherServlet  - Successfully completed request
4

5 に答える 5

27

これは<url-pattern>、あなたのweb.xmlが「広すぎる」ためです。の値は/*、サーブレットがすべてのリクエストを受信するように構成されており、サーブレットから JSP へのリクエストを含むことを意味します。表示されているエラー メッセージはDispatcherServlet、転送された独自のリクエストを受信して​​いる からのものです。

より具体的な を選択する必要があります<url-pattern>。たとえば<url-pattern>/xyz/*</url-pattern>、URL が になりhttp://localhost:8080/grapevine/xyz/test、正常に動作するようになります。

于 2010-10-07T07:30:55.157 に答える
2

に置き換えるだけ/*です。それが動作します.../url-pattern

于 2013-03-19T07:57:45.380 に答える
0

注意: これは誤解を招くエラー メッセージである可能性があります。それはちょうど私に起こりました。

エラー メッセージのパスの先頭に予期せず /ContextName/... が含まれている場合でも、InternalResourceViewResolver プレフィックスのスペルミスである可能性があります。

<property name="prefix" value="/WEB-INF-typo-Here/jsp/"/>

またはファイルパス自体。

スペルミスを修正したので、問題なく動作します。エラーメッセージにコンテキストが表示される理由がわかりません。そのため、愚かなタイプミスを無視して、この質問に対する他の素晴らしい貢献を試みようとしました。それがあなたに起こらないようにしてください!

ところで、Spring 4.0.0 リリースを使用しています。

于 2013-12-28T04:27:14.480 に答える