2013-06-07 7 views
5


シンプルなコントローラを設定しようとしています。

私が持っている:Spring MVCのコンフィグレーションurl-pattern

:ここ web.xmlの

MVC-ディスパッチャ-servlet.xmlで
<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/index.jsp</url-pattern> 
</servlet-mapping> 

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/jsp/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="urlMap"> 
     <map> 
      <entry key="/index.jsp"> 
       <ref bean="mainPage"/> 
      </entry> 
     </map> 
    </property> 
</bean> 

<bean name="mainPage" class="ru.mypack.TBController" /> 

は私のコントローラです

public class TBController extends AbstractController { 

@Override 
protected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { 
    System.out.println("It is here"); 
    ModelAndView model = new ModelAndView("index"); 
    return model; 
}} 

私はTomcat 6で実行します。この設定では、(/index.jsp)は完璧に動作します!私は

を/index.jspアクセスすることは404を返します。この

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

のようなURLパターンを変更した場合しかし、私は、コンソールに「それはここにある」を参照してください

は、それはURLパターンが正常に動作しますが、のModelAndViewはdoesnの意味します「Tが初期化されるのでしょう

奇妙なことは、彼が空のリソース (クロームが私をdysplays 『HTTPステータス404 - 』)をアクセスしようとするように見えるということです

..かもしれませ起こっているかを理解するために私を助けてください

私はURLパターン固有のものを見逃したation?

UPD:
解決策が見つかりました。
は、私はちょうど

<url-pattern>/test/*</url-pattern> 

でweb.xmlの私のurl-patternを置き換えそして今、それはサーブレットマッピングが定義されているかの情報で作業している/test/index.jsp

+0

このスレッドをご覧ください。それは助けになるはずです。 http://stackoverflow.com/questions/15385596/servlet-mapping-web-xml – smwikipedia

答えて

2

春のことで応答します。接尾辞マッピング(*.something)を使用している場合、Springは最初の部分(接尾辞なし)のみを使用します。これはあなたのurl-pattern(接尾辞なし)にちょうど/indexをマップすることを意味します。一部を越えたリクエストのURLの一部を

戻る指定された要求のためのサーブレットマッピング内のパス、すなわち :春のUrlPathHelper#getPathWithinServletMapping

のJavaDocは、マッピングプロセスで使用されているものよりよく説明していますサーブレットを呼び出すためにURL全体が使用されている場合は、サーブレットと呼ばれるもの( )を使用します。

Detectsには、RequestDispatcher内で呼び出された場合のリクエストURLが含まれます。 が含まれます。

例:servlet mapping = "/ test/*";リクエストURI = "/ test/a" - > "/ a"。

例:servlet mapping = "/ test";リクエストURI = "/ test" - > ""

例:servlet mapping = "/*.test";リクエストURI = "/a.test" - > ""

+0

ありがとうございました、今は明らかです!私は約束します、次回はもっと慎重にJavaDocを読むでしょう:) –

+1

このJavaDocはよく見つからないのです。これは内部のSpringクラスです。しかし、私がSpringについて愛していることは、内部クラスも(他の多くのフレームワークとは異なり)明確に定義され、文書化されていることです。 –

+0

@PavelHoralこの質問を教えてもらえますか?ありがとう。 http://stackoverflow.com/questions/33522888/how-does-the-getservletmapping-affects-the-url-in-spring-webmvc – smwikipedia

関連する問題