2011-02-06 168 views
0

我收到以下錯誤:春映射問題

No mapping found for HTTP request with URI [/my-app] in DispatcherServlet with name 'web'

我的web.xml看起來像:

<servlet> 
    <servlet-name>web</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>web</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

我的網絡servlet.xml中的樣子:

<bean name="myController" class="com.app.web.MyController" /> 

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

任何幫助/解釋都會很棒。另外,控制器中的視圖參數應該是new ModelAndView(?)

我的目標是能夠達到http://localhost:8080/my-app並被路由到MyController,然後加載給定的jsp。

回答

0

看起來像DispatcherServlet正在嘗試處理/ my-app的請求,這向我建議您的web.xml servlet映射正在將該空間的請求導向到DispatcherServlet。

你可能有這樣的事情?

<servlet-mapping> <servlet>dispatcher</servlet> <url-pattern>/*</url-pattern> </servlet-mapping> 

嘗試用不同的擴展名(。做舉例)調用你的控制器,並更新servlet的映射,以適應

<servlet-mapping> <servlet>dispatcher</servlet> <url-pattern>*.do</url-pattern> </servlet-mapping> 

或更改/ *到/

希望有所幫助。

3

你的配置對我來說很好看。在你MyController,請確保您有一個請求映射my-app,像這樣: -

@Controller 
public class MyController { 
    @RequestMapping(value="/my-app", method=RequestMethod.GET) 
    public String mainPage() { 
     return "index"; 
    } 
} 

當你調用http://localhost:8080/my-app,服務器將返回index.jsp/WEB-INF/jsp/文件夾。

+0

是。或者,您可以使用BeanNameUrlHandlerMapping,但現在這已經是老派了:-)但是,如果您定義了一個BeanNameUrlHandlerMapping實例,則您還必須明確請求DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter,因爲它們不會被隱式創建。 – Pavel 2011-02-06 21:25:19