2013-02-26 49 views
0

我一直在閱讀很多這樣的問題,但我沒有擺脫困境,我開始認爲問題是tomcat玩弄。 首先,這裏是我的web.xml,my * -servlet.xml和我的控制器。在web.xml中彈出PageNotFound和URLMapping

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 

<display-name>Spring REST Server</display-name> 
<description>Spring REST Server</description> 
<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>classpath:env/log4j.properties</param-value> 
</context-param> 
<context-param> 
<param-name>contextConfigLocation</param-name> 
<param-value> 
      classpath:config/applicationContext.xml 
      classpath:config/kimboo-servlet.xml 
</param-value> 
</context-param> 
<context-param> 
    <param-name>webAppRootKey</param-name> 
    <param-value>Kimboo</param-value> 
</context-param> 
<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
</listener> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<!-- Spring MVC Dispatcher Servlet --> 
<servlet> 
    <servlet-name>kimboo</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     classpath:config/applicationContext.xml 
     classpath:config/kimboo-servlet.xml 
    </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>kimboo</servlet-name> 
    <url-pattern>/home/</url-pattern> 
</servlet-mapping> 
</web-app> 

這是我kimboo-servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
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-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 

<context:component-scan base-package="ar.com.kimboo.server.ui.controller" /> 

<mvc:annotation-driven /> 

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

這是我的控制器

@Controller 
@RequestMapping(value = "/home") 
public class HomeController { 

@RequestMapping(value = "/") 
public String home() { 
    return "login"; 
} 

@RequestMapping(value = "/main") 
public String main() { 
    return "main"; 
} 

    @RequestMapping(value = "/about") 
public String main() { 
    return "about"; 
} 
} 

這是一個非常簡單的例如,我不知道w爲什麼不工作。我在這裏和另一個網站上收到了很多像這樣的問題,我不知道我錯過了什麼。

順便說一句,在控制器中,我嘗試了所有的匹配網址;在課程級別放置「/ home /」或「home /」,並將「login」或「main」放在方法級別。

唯一可行的是當我打localhost:8080/myServer/home /。我嘗試在web.xml的url-pattern中使用「/ home/」,而不是「/ home /」。我也試過使用「/」和「/」,但是是一樣的。

,這個工作的唯一方法是當web.xml中的url-pattern的我用

<url-pattern>/home/</url-pattern> 
<url-pattern>/home/main/</url-pattern> 
<url-pattern>/home/login/</url-pattern> 

然後我就可以打所有的網址。我不知道該怎麼做,也許這是一個tomcat 7的問題?

回答

1

您沒有爲控制器和註釋處理程序配置映射。在kimboo-servlet.xml中添加下面的bean配置,並添加相應的jar。它可能工作。

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> 

<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
     <value> 
      /home/**=homeController 
     </value> 
    </property> 
</bean> 
+0

這沒有奏效,我嘗試了幾次,這樣的配置,這真的很煩人,因爲在日誌中我實際上看到映射的URL像'DefaultAnnotationHandlerMapping - 映射的URL路徑[/ home/main]到處理程序'homeControlle'映射的URL路徑[/ home/main /]到處理程序'homeController''和控制器bean SimpleUrlHandlerMapping-映射的URL路徑[/ home/**]到處理程序'homeController''上,但是當我點擊' http:// localhost:8080/server/home/main'在日誌中顯示我沒有找到映射...在URI中[/ server/home/main]在''kimboo''中 – 4gus71n 2013-03-01 20:51:39

+0

我不知道爲什麼它不適合你。改變web.xml的url模式。/*。但我不確定這一點。 – Harish 2013-03-05 04:00:58

0

而不是這是一個TomCat問題我懷疑這是如何註釋控制器的問題。請按照以下方式替換您的控制器註釋

@Controller 
public class HomeController { 

@RequestMapping(value = "/home") 
public String home() { 
    return "login"; 
} 

@RequestMapping(value = "/home/main") 
public String main() { 
    return "main"; 
} 

    @RequestMapping(value = "home/about") 
public String main() { 
    return "about"; 
} 

} 

這只是一個猜測。對不起,如果我錯了。我記得在REST服務中看到這個問題。也許它是相同的。現在,我沒有時間來測試它。

+0

對不起,我認爲那是另一種錯誤,因爲在你的映射或者我的視圖中,我一直在控制檯看到相同的映射,比如Mapped URL path [/ home/main]到處理程序'homeController'和等等... – 4gus71n 2013-03-01 20:48:26