2012-05-31 51 views
0

我已經配置休眠&春天沒有任何錯誤,我的項目部署,但我嘗試通過控制器「HomeController的」加載我回到Home.jsp但我m到處「錯誤:404未找到資源...」:春3.0 MVC,無法註冊家庭控制器,404錯誤


我已經試過3點不同的方法:

方法1號(不是我的理想方法)。

一)定義使用@Controller @RequestMethod

C)HomeController的回報通過註釋在歡迎列表中的index.htm文件(web.xml)

B)地圖的HomeController爲「將/index.htm」鑑於「家」(WEB-INF /視圖/回到Home.jsp)用於所有3種方法


通用項目結構:

enter image description here


Web.xml中:

<web-app metadata-complete="true" version="3.0" 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_3_0.xsd"> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>yourmarketnet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>yourmarketnet</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>index.htm</welcome-file> 
    </welcome-file-list> 
</web-app> 

Yourmarketnet-spring.xml片段:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"  
     p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:viewClass="org.springframework.web.servlet.view.JstlView" /> 

的applicationContext.xml:

<!-- Activates various annotations to be detected in bean classes --> 
    <context:annotation-config /> 
    <!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. For example @Controller and @Service. Make sure to set the correct base-package--> 
    <context:component-scan base-package="com.yourmarketnet.controller" />  
    <!-- Configures the annotation-driven Spring MVC Controller programming model. Note that, with Spring 3.0, this tag works in Servlet MVC only! --> 
    <mvc:annotation-driven/> 
    <!-- mapping of static resources--> 
    <mvc:resources mapping="/resources/**" location="/resources/" /> 
    <import resource="hibernate-context.xml" /> 

HomeController類:運行應用程序的

package com.yourmarketnet.controller; 
@Controller 
@RequestMapping("/index.htm") 
public class HomeController { 
    public String requestHandler() 
    { 
     return "Home"; 
    } 
} 

結果:

Http狀態404

所請求的資源()是不可用的。


方法2號,(不是我的理想方法)

一)創建redirect.jsp中,並定義歡迎列表(web.xml)中

B)地圖的HomeController以「/ HomeController的」經由使用@Controller @RequestMethod

c)具備redirect.jsp中的註釋‘<%response.sendRedirect是( 「/ HomeController中」);%>’到我的HomeController

d)HomeController中返回查看「家園」(WEB-INF /視圖/回到Home.jsp)

網絡。XML:

<web-app metadata-complete="true" version="3.0" 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_3_0.xsd"> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>yourmarketnet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>yourmarketnet</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>redirect.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

Yourmarketnet-spring.xml片段:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"  
     p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:viewClass="org.springframework.web.servlet.view.JstlView" /> 
</beans> 

的applicationContext.xml片段:

<!-- Activates various annotations to be detected in bean classes --> 
    <context:annotation-config /> 
    <!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. For example @Controller and @Service. Make sure to set the correct base-package--> 
    <context:component-scan base-package="com.yourmarketnet.controller" />  
    <!-- Configures the annotation-driven Spring MVC Controller programming model. Note that, with Spring 3.0, this tag works in Servlet MVC only! --> 
    <mvc:annotation-driven/> 
    <!-- mapping of static resources--> 
    <mvc:resources mapping="/resources/**" location="/resources/" /> 
    <import resource="hibernate-context.xml" /> 

HomeController類:

package com.yourmarketnet.controller; 
@Controller 
@RequestMapping("/HomeController") 
public class HomeController { 
    public String requestHandler() 
    { 
     return "Home"; 
    } 
} 

運行的應用程序的結果:

Http狀態404/HomeController的

所請求的資源(/ HomeController中)不可用。


方法3號,(如果有任何關閉上述工作的罰款,但是這是我真正想要的)

一)從web.xml中

刪除所有歡迎文件標籤

b)中MapDispatcher爲「/」

C)地圖的HomeController爲「/ HomeController的」通過使用註釋@Controller @RequestMethod」

d)的HomeController返回查看「主頁」(WEB-INF /視圖/回到Home.jsp)

Web.xml中:

<web-app metadata-complete="true" version="3.0" 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_3_0.xsd"> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>yourmarketnet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>yourmarketnet</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
</web-app> 

** Yourmarketnet-spring.xml片段:**

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"  
     p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:viewClass="org.springframework.web.servlet.view.JstlView" /> 

的applicationContext.xml片段:

<!-- Activates various annotations to be detected in bean classes --> 
    <context:annotation-config /> 
    <!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. For example @Controller and @Service. Make sure to set the correct base-package--> 
    <context:component-scan base-package="com.yourmarketnet.controller" />  
    <!-- Configures the annotation-driven Spring MVC Controller programming model. Note that, with Spring 3.0, this tag works in Servlet MVC only! --> 
    <mvc:annotation-driven/> 
    <!-- mapping of static resources--> 
    <mvc:resources mapping="/resources/**" location="/resources/" /> 
    <import resource="hibernate-context.xml" /> 

HomeController類:

package com.yourmarketnet.controller; 
@Controller 
@RequestMapping("/") 
public class HomeController { 

    public String requestHandler() 
    { 
     return "Home"; 
    } 
} 

Apache服務器日誌:

警告:否的DispatcherServlet找到HTTP請求與URI [/ yourmarketnet /]名爲 'yourmarketnet'

映射結果運行的應用程序:

Http狀態404

所請求的資源()不可用。

請爲我提供正確的代碼/標籤,以服務器我的家。JSP從HomeController中沒有404錯誤,謝謝。

+1

標註控制器的方法也一樣,除了(或無)在類級別 –

+1

拉維@RequestMapping註解你絕對寫我增加了@RequestMapping(值=「/」,方法= RequestMethod.GET)我的方法和eveything工作,太感謝了好友:) – cyber101

+0

謝謝你玩得開心 –

回答

0

我說的是從你的問題的第三種方法。

在web.xml更改請求映射到/,而不是*.htm。 如果一切都恰到好處,我可以在這裏看到別的。因此,這應該爲你工作。

希望這可以幫助你。

乾杯。

+0

這只是在我的帖子一個錯字,在實際項目中的「/」。謝謝 – cyber101