2009-10-02 14 views
6

Otrzymuję ten błąd.Nie znaleziono mapowania dla żądania HTTP z identyfikatorem URI: w aplikacji Spring MVC

mój web.xml ma to

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

<servlet-mapping> 
    <servlet-name>springweb</servlet-name> 
    <url-pattern>/app/*</url-pattern> 
</servlet-mapping> 

mam to w moim web-aplikacji-config.xml

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
</bean> 

<bean name="/Scheduling.htm" class="com.web.SchedulingController"/> 

mój com.web.SchedulingController wygląda następująco

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package com.web; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.springframework.web.servlet.ModelAndView; 
import org.springframework.web.servlet.mvc.Controller; 


public class SchedulingController implements Controller{ 

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { 

    ModelAndView modelAndView = new ModelAndView("/jsp/Scheduling_main.jsp"); 
    modelAndView.addObject("message","Hello World MVC!!"); 
    return modelAndView; 
} 
} 

Po naciśnięciu tego kontrolera pod adresem URL http://localhost:8080/project1/app/Scheduling.htm Plik Scheduling_main.jsp zostanie wyświetlony, ale obrazy nie będą wyświetlane poprawnie. Również plik js i css nie są renderowane.

mam dostępu do zdjęć jak to

<img src="jquerylib/images/save_32x32.png" title="Save Appointment"> 

Jeśli zmienić mapowanie adresu URL w definicji serwletu do * .htm, obrazy dostać wyświetlane w porządku. Czy możesz wskazać, gdzie tracę?

Oto kompletny komunikat o błędzie

WARN [PageNotFound] No mapping found for HTTP request with URI [/mavenproject1/app/jquerylib/images/save_32x32.png] in DispatcherServlet with name 'springweb' 

dzięki. Ravi

+0

Oto pełna Komunikat o błędzie: WARN [PageNotFound] Nie znaleziono żądania HTTP z URI [/mavenproject1/app/jquerylib/images/save_32x32.png] w DispatcherServlet z nazwą 'springweb' – Ravi

Odpowiedz

7

Ja myślę, że dzieje się tak dlatego spróbować uzyskać obraz chociaż serwletu (odwzorowany jako/app/*) Musisz dostać statyczny bez poradzić z serwletu, na przykład ustawić źródło obrazu do

<img src="../jquerylib/images/save_32x32.png" title="Save Appointment">

następnie rzeczywistym identyfikatorem URI twojego obrazu będzie /mavenproject1/jquerylib/images/save_32x32.png, a zostanie on zwrócony przez twój tomcat, tak jak jest, bez żadnego przetwarzania.

+0

dzięki dużo mapowanie, zadziałało. Właśnie dowiedziałem się więcej o mapowaniach adresów URL. – Ravi

+0

zapisał mój dzień. Czy mógłbyś wytłumaczyć trochę więcej? kiedy poprzedzam ścieżkę pliku "../" czy pośrednio staje się absoultepath? i tak, że przewodnik nie jest wywoływany? – kalyan

+0

@kalyan Nie, ".." nie oznacza absolutnej ścieżki, ".." oznacza najwyższy katalog goto. Co się właściwie dzieje: po ustawieniu src obrazu na ../jquerylib/images/save_32x32.png twoja pełna ścieżka będzie /mavenproject1/app/../jquerylib/images/save_32x32.png i zostanie przekształcona na/mavenproject1/jquerylib /images/save_32x32.png przez twoją przeglądarkę. Ale twój serwer obsługuje tylko/mavenproject1/app/* url, więc /mavenproject1/jquerylib/images/save_32x32.png będzie obsługiwany przez tomcat i zwracany jak zwykle, jak statyczna zawartość. Przepraszam za mój zły angielski –

2

Dodam tylko trzy zasady przed domyślnej reguły (wiosna/**) do urlrewritefilter Tuckey'S (urlrewrite.xml) do rozwiązania problem

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" "http://tuckey.org/res/dtds/urlrewrite3.0.dtd"> 
    <urlrewrite default-match-type="wildcard"> 
     <rule> 
      <from>/</from> 
      <to>/app/welcome</to> 
     </rule> 
     <rule> 
      <from>/scripts/**</from> 
      <to>/scripts/$1</to> 
     </rule> 
     <rule> 
      <from>/styles/**</from> 
      <to>/styles/$1</to> 
     </rule> 
     <rule> 
      <from>/images/**</from> 
      <to>/images/$1</to> 
     </rule> 
     <rule> 
      <from>/**</from> 
      <to>/app/$1</to> 
     </rule> 
     <outbound-rule> 
      <from>/app/**</from> 
      <to>/$1</to> 
     </outbound-rule>  
    </urlrewrite> 

How to handle static content in Spring MVC?

2

Dodaj to do springweb-servlet.xml

<mvc:default-servlet-handler/>

tekście poniżej ekstrahowano z Spring reference

Znacznik umożliwia odwzorowanie DispatcherServlet na "/" (zastępując mapowanie domyślnego serwletu pojemnika), natomiast wciąż pozwalając na obsługę statycznych żądań zasobów przez domyślny serwlet kontenera. Konfiguruje DefaultServletHttpRequestHandler z mapowaniem adresu URL (o najniższym priorytecie) "/ **". Ten program obsługi przekazuje wszystkie żądania do domyślnego serwletu.

Powiązane problemy