2009-10-02 4 views
6

Je reçois cette erreur.Aucune correspondance trouvée pour la requête HTTP avec l'URI: dans une application Spring MVC

mon web.xml a cette

<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> 

J'ai dans mon application web-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"/> 

mon com.web.SchedulingController ressemble à ceci

/* 
* 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; 
} 
} 

Lorsque j'appuie sur ce contrôleur avec l'URL http://localhost:8080/project1/app/Scheduling.htm Le fichier Scheduling_main.jsp est affiché mais les images ne s'affichent pas correctement. Les fichiers js et css ne sont pas rendus.

Je suis accès aux images comme celui-ci

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

Si je change le mappage d'URL dans la définition de servlet * .htm, les images s'affiche bien. Pouvez-vous indiquer où je suis absent.

Voici un message d'erreur complète

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

Merci beaucoup. Ravi

+0

est ici un message complet d'erreur: WARN [pagenotfound] Aucun mappage trouvé pour la requête HTTP avec URI [/mavenproject1/app/jquerylib/images/save_32x32.png] dans DispatcherServlet avec le nom '' springweb – Ravi

Répondre

7

Je pense que ce qui se passe parce que vous essayez obtenir votre image si servlet (cartographiée/app/*) Vous devez obtenir le contenu statique sans le manipuler avec votre servlet, par exemple de source d'image pour

L'adresse URI réelle de votre image sera alors /mavenproject1/jquerylib/images/save_32x32.png, et elle sera retournée par votre tomcat lui-même tel quel, sans aucun traitement.

+0

Merci beaucoup, ça a marché. Juste pour en savoir plus sur les mappages d'URL. – Ravi

+0

a sauvé ma journée. Cela vous dérangerait-il d'expliquer un peu plus? quand je prefixe le chemin du fichier avec '../', devient-il indirectement absoultepath? et de sorte que le gestionnaire n'est pas invoqué? – kalyan

+0

@kalyan Non, ".." ne signifie pas être le chemin absolu, ".." signifiera le répertoire supérieur. Donc, ce qui se passe réellement: lorsque vous définissez image src à ../jquerylib/images/save_32x32.png votre chemin complet sera /mavenproject1/app/../jquerylib/images/save_32x32.png et sera transformé en/mavenproject1/jquerylib /images/save_32x32.png par votre navigateur. Mais votre servet gère seulement les/mavenproject1/app/* urls, donc /mavenproject1/jquerylib/images/save_32x32.png sera transmis par tomcat lui-même et retourné tel quel, comme d'habitude le contenu statique. Désolé pour mon mauvais anglais –

2

Je viens d'ajouter trois règles avant la règle par défaut de ressort (/ **) au urlrewritefilter de Tuckey (de urlrewrite.xml) pour résoudre le problème

<?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

Ajouter à cette springweb-servlet.xml

<mvc:default-servlet-handler/>

Ci-dessous le texte est extrait de Spring reference

Cette balise permet de cartographier le DispatcherServlet à "/" (remplaçant ainsi la cartographie de Servlet par défaut du conteneur), alors que permettant toujours aux demandes de ressources statiques d'être traitées par le Servlet par défaut du conteneur. Il configure un DefaultServletHttpRequestHandler avec un mappage d'URL (avec l'ordre de priorité le plus bas) de "/ **". Ce gestionnaire transmet toutes les demandes au servlet par défaut.

Questions connexes