2015-09-01 72 views
4

我一直在使用Spring框架幾天嘗試建立一個基於類似this tutorial之類的項目。Spring框架項目未加載?

不幸的是,當我使用Tomcat部署項目,我得到一個屏幕,看起來是這樣的:

Tomcat 404 error

我真的不知道從這裏走。我檢查了web.xml和任何其他可能會影響錯誤的相關.xml文件,但我看不到錯誤。下面我會發布我的web.xmlspring-config.xml文件。

的web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
version="2.5"> 

<display-name>Campaign Spring V2</display-name> 

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/spring-config.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    </web-app> 

spring_config.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> 

    <context:component-scan base-package="com.bridge.campaignspring.controller" /> 

    <context:property-placeholder location="classpath:application.properties" /> 

    <!-- Enables the Spring MVC @Controller programming model --> 
    <mvc:annotation-driven /> 

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="${database.driver}" /> 
     <property name="url" value="${database.url}" /> 
     <property name="username" value="${database.user}" /> 
     <property name="password" value="${database.password}" /> 
    </bean> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>com.bridge.campaignspring.Campaign</value> 
      </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 

    <bean id="persistenceExceptionTranslationPostProcessor" class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /> 

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

    <bean id="CampaignDao" class="com.bridge.campaignspring.dao.CampaignDAOImpl" /> 
    <bean id="CampaignService" class="com.bridge.campaignspring.service.CampaignServiceImpl" /> 

</beans> 

如果需要,我可以張貼的項目,GitHub上,看看是否有一個更大的漏洞可能在代碼中找到。另外,如果項目的任何其他部分需要發佈,我將更新OP以顯示任何內容。謝謝!

編輯:http://localhost/也不加載,我對我以前的聲明不正確。

編輯2:這是鏈接到GitHub項目。

編輯3:再次通過Spring教程後,這已解決!

+1

看,如果你在部署 – Jens

+0

得到錯誤@Jens這是從當我在服務器上運行該項目的整個堆棧跟蹤:http://pastebin.com/hwM3MW0v – xtheking

+0

這裏是你問題:發現不明確的映射。無法映射'dataController'bean方法' – Jens

回答

1

你沒有很好地跟着教程。控制器映射與

@RequestMapping("/") 
public class AppController { 

第一註釋@RequestMapping("/")重要的是彈簧,以計算由所述請求中使用的路徑開始。

而這種代碼丟失

@Bean 
    public LocalSessionFactoryBean sessionFactory() { 
     LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 
     sessionFactory.setDataSource(dataSource()); 
     sessionFactory.setPackagesToScan(new String[] { "com.bridge.compaignspring.model" }); 
     sessionFactory.setHibernateProperties(hibernateProperties()); 
     return sessionFactory; 
    } 

沒有它春天不能自動裝配依賴於sessionFactory性能。

+0

更新,仍然無法正常工作。 – xtheking

+0

爲什麼你在使用xml配置,在教程中它是基於註釋的? –

+0

我對Spring框架相當陌生,我在之前的教程中看到了XML,並嘗試對其進行調整。顯然,它只是混淆了代碼。我應該刪除XML文件嗎? – xtheking

0

剛做了一個快速檢查github項目,你有更多的問題,我想。

您正在使用XML配置在Spring-config.xml中使用config創建DispatchServer,而也有在類路徑中具有AppInitializer

AppInitializer使用AppConfig創建一個Datasource bean,您的XML也創建一個Datasource bean和一個SessionFactory。

Tomcat會找到AppInitializer並且首先運行。 這意味着它會嘗試在創建XML之前自動調用SessionFactory。 要將代碼移出此問題,請執行以下操作。

移動spring_config.xml從/ web應用/ WEB-INF到/資源

以下@import行添加到AppConfig.java

@Configuration 
@EnableWebMvc 
@ImportResource("classpath:spring-config.xml") 
@ComponentScan(basePackages = "com.bridge.campaignspring") 
public class AppConfig { 

現在,你需要刪除2種數據源豆1你正在創造。我建議刪除XML中的那個,因爲它使用了無效的屬性值。即${database.driver}不存在。

做出這些更改後,您仍然會遇到其他問題,但您比您更進一步。

+0

由於混淆,我只是刪除了XML,所以現在它應該是純粹基於註釋的。任何想法? – xtheking

+0

我認爲XML是一些關鍵要求,因此您偏離了本教程。但如果你真的不需要它,那麼從原始教程中下載源代碼並重新開始。這裏打破了太多。 – muttonUp