2017-03-15 5 views
0

Springアプリケーションをゼロから構築しようとしていて、次のディレクトリ構造とファイルで簡単なアプリケーションを作成しました。Spring - DispatcherServletでマッピングが見つかりませんでした。要求URIにはアプリ名が含まれています

Eclipse folder structure


のweb.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 

    <display-name>LearningSpring</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 

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

</web-app> 


ディスパッチャ-servlet.xml

<mvc:annotation-driven/> 
<context:component-scan base-package="com.learn.spring.app.web" /> 

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


CentralController.java

@Controller 
public class CentralController { 

    @RequestMapping("/profile.html") 
    public ModelAndView showProfile(HttpServletRequest request, HttpServletResponse response){ 
     return new ModelAndView("profile"); 
    } 
} 

私は上記のコードで間違って何が起こっているのか理解していないが、私はいつも404エラーを取得します。 Tomcatのログを示し私が気づい以下

15-Mar-2017 16:16:33.127 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /Users/SomeUser/Documents/apache-tomcat-9.0.0.M17/webapps/LearningSpring.war 
15-Mar-2017 16:16:34.303 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
15-Mar-2017 16:16:34.501 INFO [localhost-startStop-1] org.springframework.web.servlet.DispatcherServlet.initServletBean FrameworkServlet 'dispatcher': initialization started 
15-Mar-2017 16:16:34.533 INFO [localhost-startStop-1] org.springframework.web.context.support.XmlWebApplicationContext.prepareRefresh Refreshing WebApplicationContext for namespace 'dispatcher-servlet': startup date [Wed Mar 15 16:16:34 EDT 2017]; root of context hierarchy 
15-Mar-2017 16:16:34.594 INFO [localhost-startStop-1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions Loading XML bean definitions from ServletContext resource [/WEB-INF/dispatcher-servlet.xml] 
15-Mar-2017 16:16:35.238 INFO [localhost-startStop-1] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.registerHandlerMethod Mapped "{[/profile.html],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.learn.spring.app.web.CentralController.showProfile(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 
15-Mar-2017 16:16:35.341 INFO [localhost-startStop-1] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.initControllerAdviceCache Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcher-servlet': startup date [Wed Mar 15 16:16:34 EDT 2017]; root of context hierarchy 
15-Mar-2017 16:16:35.413 INFO [localhost-startStop-1] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.initControllerAdviceCache Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcher-servlet': startup date [Wed Mar 15 16:16:34 EDT 2017]; root of context hierarchy 
15-Mar-2017 16:16:35.517 INFO [localhost-startStop-1] org.springframework.web.servlet.DispatcherServlet.initServletBean FrameworkServlet 'dispatcher': initialization completed in 1016 ms 
15-Mar-2017 16:16:35.527 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /Users/SomeUser/Documents/apache-tomcat-9.0.0.M17/webapps/LearningSpring.war has finished in 2,399 ms 
15-Mar-2017 16:16:35.530 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080] 
15-Mar-2017 16:16:35.536 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009] 
15-Mar-2017 16:16:35.536 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 2492 ms 
^[15-Mar-2017 16:19:22.994 WARNING [http-nio-8080-exec-5] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/LearningSpring] in DispatcherServlet with name 'dispatcher' 
15-Mar-2017 16:19:27.755 WARNING [http-nio-8080-exec-6] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/LearningSpring/] in DispatcherServlet with name 'dispatcher' 
15-Mar-2017 16:19:40.881 WARNING [http-nio-8080-exec-7] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/LearningSpring/WEB-INF/jsp/profile.jsp] in DispatcherServlet with name 'dispatcher' 

ことの一つは、すべてのリクエストURIが(私はすべきではないと思います)接頭辞として/LearningSpring/(アプリ名)を持っているということです。

profile.jspページにはURL localhost:8080/LearningSpring/profile.htmlでアクセスできません。また、index.htmlはウェルカムページとして表示されません。私がアクセスするとただ404を投げるlocalhost:8080/LearningSpring/

私は多くの答えを読んで、何時間もグーグルで運がないと読んだ。何が間違っているかを指摘して助けてください。

はあなたに "/" などのディスパッチャサーブレットの物事の

+0

解決法1:あなたのweb.xml * .htmlをにし、あなたのyourlのローカルホストでこれを追加します:8080/appNameの/プロフィール.html解決策2:あなたのメソッド@RequestMapping( "/ profile")とあなたのyour localhost:8080/appName/profileベストプラザ –

+0

@hichamabdedaimeのrequestMappingを更新しようとしました。助けてくれませんでした –

+0

ワークスペースのフォルダmetadaを削除してecliseを再起動してもう一度やり直してください –

答えて

1

カップル...

  1. 変更URLパターンをありがとう。

<url-pattern>/</url-pattern>

  • すべての静的リソースをサーブディスパッチャサーブレットを通過します。
  • <mvc:resources location="/**" mapping="/"></mvc:resources>

    チェックこのサンプル例 - https://github.com/code-4-fun/spring-mvc-demo/blob/master/src/main/webapp/WEB-INF/dispatcher-servlet.xml

    +0

    URLマッピングを '/ 'に変更すると、' profile.jsp'ページへのアクセスの問題を解決できました。 2つ目は何もせず、私はまだ私の 'インデックスにアクセスできません。html'ページ(ようこそページ) –

    +0

    @AdityaVikasDevarapalli _index.html_ファイルは** webapp **フォルダにありますか?** WEB-INF **フォルダにはありませんか? –

    関連する問題