0

SpringSource Tool Suiteを使用していて、テンプレートからSpring MVCプロジェクトを作成しました。プロジェクトで[実行...]をクリックすると正常に機能するのに、クリックするとうまくいく理由を理解するのに苦労しています。 WEB-INF / viewsディレクトリ内のhome.jspファイルは404エラーになります。これが原因で、他のjspも表示されません。これは正常な動作ですか?もしそうなら、説明するか、説明を教えてもらえますか?

これは私がコンソールに表示するものです。

15/05/2012 02:43:37 PM com.springsource.tcserver.security.PropertyDecoder <init>
INFO: tc Runtime property decoder using memory-based key
15/05/2012 02:43:37 PM com.springsource.tcserver.security.PropertyDecoder <init>
INFO: tcServer Runtime property decoder has been initialized in 181 ms
15/05/2012 02:43:37 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-1234"]
15/05/2012 02:43:38 PM com.springsource.tcserver.serviceability.rmi.JmxSocketListener init
INFO: Started up JMX registry on 127.0.0.1:6969 in 75 ms
15/05/2012 02:43:38 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 651 ms
15/05/2012 02:43:38 PM org.apache.catalina.core.StandardService startInternal
INFO: Arrancando servicio Catalina
15/05/2012 02:43:38 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: VMware vFabric tc Runtime 2.6.4.RELEASE/7.0.25.B.RELEASE
15/05/2012 02:43:38 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Desplieque del descriptor de configuración C:\springsource32\vfabric-tc-server-developer-2.6.4.RELEASE\spring-insight-instance\conf\Catalina\localhost\HelloWorld.xml
15/05/2012 02:43:38 PM org.apache.catalina.startup.SetContextPropertiesRule begin
ADVERTENCIA: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:HelloWorld' did not find a matching property.
15/05/2012 02:43:38 PM com.springsource.insight.collection.tcserver.ltw.TomcatWeavingInsightClassLoader start
INFO: Context [localhost|HelloWorld] will not be woven
15/05/2012 02:43:39 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Tue May 15 14:43:39 MDT 2012]; root of context hierarchy
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/root-context.xml]
INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@a29c6e: defining beans []; root of factory hierarchy
INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 596 ms
15/05/2012 02:43:39 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'appServlet'
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization started
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'appServlet-servlet': startup date [Tue May 15 14:43:39 MDT 2012]; parent: Root WebApplicationContext
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/appServlet/servlet-context.xml]
INFO : org.springframework.context.annotation.ClassPathBeanDefinitionScanner - JSR-330 'javax.inject.Named' annotation found and supported for component scanning
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@9b2a51: defining beans [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0,org.springframework.web.servlet.handler.SimpleUrlHandlerMapping#0,org.springframework.web.servlet.view.InternalResourceViewResolver#0,trampsController,homeController,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@a29c6e
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/tramps],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.hanzellegarda.HelloWorld.controllers.TrampsController.list(org.springframework.ui.Model)
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.hanzellegarda.HelloWorld.HomeController.home(java.util.Locale,org.springframework.ui.Model)
INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization completed in 802 ms
15/05/2012 02:43:40 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Desplieque del descriptor de configuración C:\springsource32\vfabric-tc-server-developer-2.6.4.RELEASE\spring-insight-instance\conf\Catalina\localhost\insight.xml
15/05/2012 02:43:40 PM com.springsource.insight.collection.tcserver.ltw.TomcatWeavingInsightClassLoader start
INFO: Context [localhost|insight] will not be woven
15/05/2012 02:43:40 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
15/05/2012 02:43:56 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'Spring MVC Dispatcher Servlet'
15/05/2012 02:44:00 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Despliegue del directorio C:\springsource32\vfabric-tc-server-developer-2.6.4.RELEASE\spring-insight-instance\webapps\manager de la aplicación web
15/05/2012 02:44:00 PM com.springsource.insight.collection.tcserver.ltw.TomcatWeavingInsightClassLoader start
INFO: Context [localhost|manager] will not be woven
15/05/2012 02:44:01 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Despliegue del directorio C:\springsource32\vfabric-tc-server-developer-2.6.4.RELEASE\spring-insight-instance\webapps\ROOT de la aplicación web
15/05/2012 02:44:01 PM com.springsource.insight.collection.tcserver.ltw.TomcatWeavingInsightClassLoader start
INFO: Context [localhost|ROOT] will not be woven
15/05/2012 02:44:01 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-1234"]
15/05/2012 02:44:01 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 23080 ms
4

1 に答える 1

3

一般的に、home.jspなどの静的ファイルはコントローラーを介してレンダリングされます。

この場合、コントローラーはアノテーション駆動型であり、

<annotation-driven />

WEB-INF / spring / appServlet / servlet-context.xmlにあるXML要素(移動していないと仮定して、テンプレートからサンプルのmvcプロジェクトを作成しました)

これが意味するのは、SpringがJavaファイルをスキャンして@Controllerオブジェクトを探し、それを取得してビューに結び付けることです。

home.jspがレンダリングされない理由は、基本パッケージにあるHomeControllerを介してレンダリングされているためです。

次の署名が付いた注釈があることに注意してください

@RequestMapping(value = "/", method = RequestMethod.GET)

これにより、アプリケーションのルートコンテキスト(プロジェクト名が何であれ)が、このアノテーションの下にあるメソッド(つまり、localhost:8080 / your_app /)に関連付けられます。

public String home(Locale locale, Model model)

注意すべきことは、このコントローラーメソッドのStringの戻りタイプです。これは、メソッドの完了後にレンダリングされるビュー名を示します。この場合、次のようになります。

return "home";

次の部分は少し混乱するかもしれませんが、しばらくすると意味がわかるはずです。「ホーム」はViewResolverに関連付けられています。servlet-context.xmlに戻ると、クラスを持つBeanが存在するはずです。

org.springframework.web.servlet.view.InternalResourceViewResolver

設定されているプロパティに注意してください。

<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />

これが意味するのは、ビューリゾルバーが/ WEB-INF / views /で「ホーム」ビューファイルの検索を開始し、ホームの最後に.jspを追加することです。見つかった最初の一致が返されます。ディレクトリ構造を見ると、次の場所にjspファイルがあります。

/WEB-INF/views/home.jsp

この回答が少しお役に立てば幸いです。お気軽にコメントしてください。

于 2012-05-17T20:20:33.683 に答える