0

spring mvc フレームワークで基本的なアプリケーションを作成しました。

web.xml に次の URL パターンを記述した場合:

<servlet-mapping>
        <servlet-name>springxml</servlet-name>
        <url-pattern>*.jsp</url-pattern>
  </servlet-mapping>

(../SpringMVCXML/welcome.jsp を使用して) アプリケーションを実行すると、HTTP ステータス 404 エラーが表示されます。

.jsp 以外の URL パターンを変更すると、アプリケーションは正常に動作します。

アプリケーションが.jsp URL パターンで実行されないのはなぜですか?

次のJavaクラスをコントローラーとして使用しました。

@Controller
@RequestMapping(value="/welcome",method=RequestMethod.GET)
public class ControllerHello {
    @RequestMapping(method=RequestMethod.GET)
    public String printHello(ModelMap map) {
        map.addAttribute("message", "Hello Spring MVC Framework");
        return "hello";
    }
}

また、私の springxml-servlet.xml には次のコードがありました。

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

2 に答える 2

1

springxml サーブレットも *.jsp 以外のビューを提供していると仮定すると (web.xml に他のサーブレット マッピングがある可能性があります)、状況は次のようになります。

/welcome.jsp ではなく、パス /welcome のコントローラーを登録しました。したがって、/welcome.jsp は Spring mvc コントローラーにマップされません。/welcome HelloController は、文字列出力の hello を提供します。

/welcome.jsp は WEB-INF にあり、その URL の Spring MVC コントローラーがないため、エラー 404 が発生します。

org.springframework.web.servlet.view.InternalResourceViewResolver は、jsp ファイルを /WEB-INF 内に配置するためのものです。InternalResourceResolver の機能の簡単な説明については、http: //www.mkyong.com/spring-mvc/spring-mvc-internalresourceviewresolver-example/ を参照してください。基本的に、Spring MVC がパブリック リソースにない jsp をビューとして使用できるようにします。これらの jsps を有効な URL として登録するメカニズムではありません。

URL は requestmappings で決定されます。

于 2013-02-22T08:11:40.520 に答える
0

おそらく、この URL /welcome.jspへのスプリング コントローラーのマッピングはありません 。使用しているスプリングのバージョンは何ですか? Spring 2.5以降を使用している場合は、次のコードを試してください

@RequestMapping(value = "welcome.jsp")
public String welcomeJSP(){
    return "welcome";
}
于 2013-02-22T07:21:47.990 に答える