2011-06-11 78 views
0

我剛從條紋切換到春天,但我有我的第一個項目的問題, 基本上我從服務器獲取404。 奇怪的是,我已經一一遵循了我書中的所有步驟。我使用Eclipse,Tomcat 6和Spring 2.5 我的項目的結構如下: src> 控制器(包)> SpringTestController(實現控制器).....然後 ...... web內容> JSP(文件夾)>的hello.jsp .....然後.... web的內容> WEB-INF> SpringTest-servlet.xml中和web.xml 內部LIB我有必要9個罐子。問題的第一個春天項目

我的控制器:

public class SpringTestController implements Controller{ 

public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { 




    return new ModelAndView("jsp/hello.jsp"); 
} 

}

我SpringTest-servet.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" 

xsi:schemaLocation="http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 

<bean name="/hello.htm" class="controllers.SpringTestController"/> 

</beans> 

我的web.xml(無頭以節省空間)

<servlet> 

     <servlet-name>SpringTest</servlet-name> 

     <servlet-class> 

      org.springframework.web.servlet.DispatcherServlet 

     </servlet-class> 

     <load-on-startup>1</load-on-startup> 

    </servlet> 

    <servlet-mapping> 

     <servlet-name>SpringTest</servlet-name> 

     <url-pattern>*.htm</url-pattern> 

    </servlet-mapping> 

你認爲問題出在哪裏? 我一直在試圖尋找文件左右,但旁邊的web.xml「裏我沒有看到任何異常」我是很新的流動結​​構,所以我真的不能得到問題的所在。

THX您的時間

+0

web.xml中的歡迎標記怎麼樣 – Kamahire 2011-06-11 22:33:38

回答

0

我懷疑使用屬性指定URL路徑的做法 - 而我敢肯定,這可能是可能的,我的回答將告訴你如何用更傳統的手段去做。

首先,這裏是新SpringTest-servlet.xml中:

<bean id="helloController" class="controllers.SpringTestController" /> 

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
     <props> 
      <prop key="/hello.htm">helloController</prop> 
     </props> 
    </property> 
</bean> 

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

你可能會注意到一些事情。我使用的是ID bean的屬性來定義您的控制器,因此它可以在其他地方引用(在urlMapping中豆你即將看到的)。

我定義了一個urlMapping bean,它完全符合您的想法 - 將請求(例如/hello.htm)映射到控制器bean。

我也用ViewResolver來把地圖視圖名稱以查看文件,但是這是個人喜好的事情。由於我現在用的是視圖解析器,你的控制器看起來是這樣的:

public class SpringTestController implements Controller { 
    @Override 
    public ModelAndView handleRequest(final HttpServletRequest request, final HttpServletResponse response) throws Exception { 
     return new ModelAndView("hello"); 
    } 
} 

我並不需要把路徑視圖,因爲視圖解析器與它前加「/ WEB-INF/JSP /」並在最後添加「.jsp」。您可以將前綴更改爲您存儲視圖文件的任何位置,或者根本不能使用它。這是個人喜好的事情,雖然我喜歡用它:)

很抱歉,如果這個答案不符合你的風格 - 我試圖得到它工作的方式和不能,那麼這是怎麼了,我通常設置建立一個Spring項目(如果我不使用註釋)。

希望這會有所幫助。

+0

嗨Ben J,thx爲答案,我已經做了所有你提到的改變,但我仍然得到了404。我在handleRequest方法中添加了這一行:System .out.println(「handleRequest accessible」);只是爲了在控制檯中看到控制器是否被訪問,但沒有,請求沒有得到那麼多,我也添加了歡迎文件作爲hello.jsp,但沒有, – JBoy 2011-06-12 05:27:19

+0

JBoy,我已經上傳了我的版本的應用程序。在這裏下載並看看 - 也許你錯過了一些小東西。 http://www.prendi.com.au/test.zip – 2011-06-12 07:17:25

+0

嗨本J,我已經導入了該項目,我仍然得到404,我已經測試了服務器(Tomcat 6.0)與其他項目(條紋和簡單servlets-mvc),它工作正常,我真的不知道問題的地方 – JBoy 2011-06-12 19:10:54