2014-05-21 58 views
0

我的目錄結構是的Tomcat無法找到請求的資源,雖然它存在

enter image description here

我在使用Spring MVC與Apache常春藤。我的web.xml是

<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

    <display-name>Spring Web MVC Application</display-name> 


    <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>/</url-pattern> 
    </servlet-mapping> 

</web-app> 

和我dispacher servlet的Spring配置是

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 

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

    </bean> 

    <bean id="urlMapping" 
     class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
     <property name="mappings"> 
      <props> 
       <prop key="/welcome.htm">testController</prop> 
       <prop key="/login.htm">loginController</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="testController" class="TestController"> 
    </bean> 

    <bean id="loginController" class="LoginController"> 
    </bean> 

</beans> 

我測試本地主機:8080/TestWebProject/login.htm。它正確地擊中登錄控制器。然而,我收到以下錯誤

enter image description here

正如你所看到的這條道路我的目錄結構相匹配。不知道我錯過了什麼。有什麼建議麼?

+1

你試過'/ TestWebProject/pages/Login.jsp'嗎? – developerwjk

+1

除此之外,建議使用此解決方案,因爲WebContent只是一個包含要作爲Web應用程序部署的資源的Eclipse文件夾。如果您在Tomcat的webapp部署目錄中查看,pages文件夾將位於最高級別,即/ TestWebProject /頁面,而不是/ TestWebProject/WebContent /頁面 –

+0

是的,它解決了這個問題。 TX! –

回答

0

改變了路徑/TestWebProject/pages/Login.jsp但它給我

java.lang.LinkageError: loader constraint violation: 
when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature 

這是因爲依賴的主要是常春藤下載與那些Tomcat的運行時提供的衝突。

首先去Project - > Properties - >target Runtime並選擇Apache Tomcat

enter image description here

這解決了部分問題,如常春藤下載傳遞依賴,它在運行時發生衝突。

所以我不得不提供選項來禁用傳遞依賴關係解決方案。我的名牌最後不得不依賴

<dependency org="org.springframework" name="spring-context" rev="4.0.4.RELEASE" transitive="false"/> 
<dependency org="org.springframework" name="spring-beans" rev="4.0.4.RELEASE" transitive="false"/> 
<dependency org="org.springframework" name="spring-core" rev="4.0.4.RELEASE" transitive="false"/> 
<dependency org="org.springframework" name="spring-web" rev="4.0.4.RELEASE" transitive="false"/> 
<dependency org="org.springframework" name="spring-expression" rev="4.0.4.RELEASE" transitive="false"/> 

這修復它,是因爲意見建議/TestWebProject/pages/Login.jsp的工作,而不是/TestWebProject/WebContent/pages/Login.jsp