Aucune correspondance N'a été trouvée pour la requête HTTP avec URI [/WEB-INF/pages/apiForm.jsp] [dupliquer]

cette question a déjà une réponse ici:

mon gestionnaire avance vers internalresourceview 'apiForm' mais ensuite j'obtiens l'erreur 404 RequestURI=/WEB-INF/pages / apiForm.JSP. Je suis sûr que apiForm.jsp located in/WEB-INF/ pages /

13:45:02,034 DEBUG [org.springframework.Web.servlet.vue.JstlView] - Transfert de ressources [/WEB-INF/pages/apiForm.jsp] in InternalResourceView"'

13:45:02,035 DEBUG [org.springframework.Web.servlet.DispatcherServlet] - DispatcherServlet with name "testamp2" determining Dernière modification de la valeur pour [/WEB-INF/pages/apiForm.jsp]

13:45:02,038 DEBUG [org.springframework.Web.servlet.Répartiteurservlet] - aucun handler trouvé en getLastModified

13:45:02,038 DEBUG [org.springframework.Web.servlet.DispatcherServlet] - DispatcherServlet with name 'testam2' processing request for [/WEB-INF/pages / apiForm.jsp]

13:45:02,038 WARN [org.springframework.Web.servlet.PageNotFound] - aucune correspondance trouvée pour Demande HTTP avec URI [/WEB-INF/pages / apiForm.JSP] in DispatcherServlet with name 'testam2'

13:45:02,045 DEBUG [org.springframework.Web.servlet.Demande dûment remplie

13:45:02,048 DEBUG [org.springframework.Web.servlet.Répartiteurservlet] - terminé avec succès demande

c'est comme ça que mon répartiteur.xml ressembler..

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>
89
demandé sur Maxime Rouiller 2009-08-12 17:54:51

16 réponses

on dirait que DispatcherServlet essaie de traiter la demande d'un formulaire.jsp, ce qui me suggère que votre web.xml servlet-mapping oriente les demandes de cet espace vers DispatcherServlet.

Vous pourriez avoir quelque chose comme ça?

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

essayez d'appeler vos contrôleurs avec une extension différente (.faire par exemple) et mettre à jour le servlet-mapping pour convenir

 <servlet-mapping>
  <servlet>dispatcher</servlet>
  <url-pattern>*.do</url-pattern>
</servlet-mapping>
153
répondu ptomli 2009-08-12 14:54:35

Oui, je sais que je suis en retard à cette fête, mais ça pourrait aider les autres.

le conteneur servlet choisit la cartographie en fonction du chemin le plus long qui correspond. Ainsi, vous pouvez mettre ce mapping pour vos JSPs et il sera choisi sur le /* mapping.

<servlet-mapping>
  <servlet-name>jsp</servlet-name>
  <url-pattern>/WEB-INF/pages/*</url-pattern>
 </servlet-mapping>

en fait pour Tomcat c'est tout ce dont vous avez besoin puisque jsp est un servlet qui existe hors de la boîte. Pour les autres conteneurs, vous devez soit trouver le nom du servlet JSP ou ajouter un définition de servlet comme:

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
90
répondu sourcedelica 2010-05-27 17:49:39

il suffit d'ajouter <mvc:default-servlet-handler /> à votre configuration de DispatcherServlet et vous avez terminé!

17
répondu James Jithin 2014-09-21 06:35:23

, vous obtiendrez une No mapping found for HTTP request with URI erreur

si vous avez scanné le mauvais paquet

E. g votre contrôleur est dans my.paquet.abc mais vous avez mis par erreur

<context:component-scan base-package="my.package.efg*" />

ou

@ComponentScan("my.package.efg*")

qui dans le sens, votre contrôleur ne se fait pas Scanner dans le contexte de l'application web, quand demande vient dans pas seulement url, mais toute la classe n'est pas trouvé!

11
répondu Junchen Liu 2016-06-22 09:30:49

la Solution qui m'a aidé est: ne pas map DispatcherServlet à /* , map it à / . La config finale est alors:

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

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
9
répondu AlexZam 2014-05-23 23:50:57

je pense que j'ai lu tout l'internet pour comprendre comment obtenir sitemesh pour gérer mes chemins html sans extension + chemins API sans extension. J'étais enveloppé dans une veste droite pour comprendre ça, chaque tour semblait casser quelque chose d'autre. Puis je suis finalement tombé sur ce poste.

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>

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

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>/WEB-INF/views/*</url-pattern>
 </servlet-mapping>

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>/WEB-INF/decorators/*</url-pattern>
</servlet-mapping>

inscrivez ceci dans votre répartiteur-servlet.xml

<mvc:default-servlet-handler/>
9
répondu motoprog 2015-03-23 20:16:45

Simple vérification peut être effectuée. J'utilise actuellement L'architecture de printemps MVC avec hibernation. Je n'avais pas écrit les annotations @Controller juste au-dessus du nom de la classe. C'était à l'origine du problème pour moi.

@Controller
public class MyClass{
    ...
}

J'espère que ce simple chèque résoudra votre problème.

8
répondu Karthik N G 2014-12-05 16:10:58

avec Spring 3.1 et Tomcat 7 j'ai eu la prochaine erreur:

org.springframework.Web.servlet.Répartitionservlet noHandlerFound Aucune correspondance trouvée pour la requête HTTP avec URI [/baremvc/] dans DispatcherServlet avec le nom 'appServlet '

et j'avais besoin d'ajouter à web.configuration xml suivante:

<welcome-file-list>
    <welcome-file/>
</welcome-file-list>

et l'application a fonctionné!

8
répondu Chem 2015-03-23 20:15:48

j'ai eu le même problème, bien sûr il y avait une petite différence. L'histoire était que lorsque j'ai enlevé la ligne ci-dessous:

<mvc:resources mapping="/resources/**" location="classpath:/resources/" />

tout était OK mais en présence de cette ligne la même erreur s'élève.

après quelques essais et erreurs, j'ai trouvé que je devais ajouter la ligne ci-dessous à mon fichier de contexte d'application de printemps:

<mvc:annotation-driven />

Espère que cela aide!

3
répondu Vahid Hassani 2016-05-25 03:46:46

cela peut aussi se produire lorsque votre application ne compile pas, mais qu'elle est toujours lancée dans Tomcat. Quand j'ai vu cela se produire, ce n'était pas une compilation parce que le projet avait un JDK "spécifique au projet" spécifié, et le code a été vérifié sur une machine qui n'avait pas ce JDK spécifique. Eclipse est passée à un JRE à la place, pas à un JDK, et l'application n'a pas été compilée.

pour corriger cela dans notre cas spécifique, nous venons de désactiver "paramètres spécifiques au projet" ici:

"Projet | Propriétés | Compilateur Java"

Voici plus d'informations détaillées sur la façon de le faire: https://stackoverflow.com/a/2540730/26510

1
répondu Brad Parks 2017-05-23 12:26:31

même réponse que Brad Parks... plus de texte bien que

j'ai eu exactement le même problème et essayé les solutions ci-dessus avec beaucoup d'autres, tous avec des résultats négatifs. J'ai même commencé avec un nouveau, frais Dev env et simplement installé un spring-mvc-modèle et essayé de l'exécuter directement après l'installation (devrait fonctionner, mais a échoué pour moi)

pour moi, le problème était que j'utilisais jdk1.6 dans mon projet, mais mon l'environnement d'exécution sélectionné dans eclipse était jdk1.7. la solution était de modifier les paramètres d'environnement d'exécution spécifiques au projet de sorte que ce projet soit réglé sur jdk1.6. Cliquez avec le bouton droit de la souris sur project --> Properties --> Java Compiler --> cochez "Enable project specific settings" si elle n'est pas déjà cochée --> sélectionnez le jdk approprié (ou ajoutez s'il n'est pas installé).

j'espère que cela peut aider à quelqu'un et sauver cette personne du temps, parce que j'ai passé les derniers jours à la recherche de la réponse sur tous les coins de L'Internet. J'ai accidentellement trébuché sur elle moi-même quand j'ai commencé à désespérer et chercher la solution dans les zones où elle (selon mon cerveau) était moins susceptible d'être trouvée. = )

mes 2 cents. Merci!

Edit1: utiliser des paramètres spécifiques au projet

Edit2: vient de réaliser que Brad Parks a déjà répondu à cette dans ce thread. Eh bien, au moins j'ai obtenu le"rédacteur" -badge de celui-ci =d

1
répondu Roger 2013-03-17 21:22:48

malheureusement, il s'agit d'un message d'erreur de classe assez large. Encore une autre chose qui pourrait aller mal est si vous manquez certaines classes/pots. Par exemple, si vous manquez le fichier jar "spring-expression , le dispatch-servlet ne sera pas capable de localiser votre contrôleur, peu importe à quel point vous essayez et comment tout le reste est configuré correctement.

1
répondu demongolem 2013-05-31 20:45:19

j'ai rencontré ce problème dans Eclipse Luna EE. Ma solution était simplement de redémarrer eclipse et il a commencé à charger magiquement servlet correctement.

1
répondu Evald 2015-07-02 10:31:14

ce dont vous avez besoin est d'avoir un controller qui réponde d'abord à l'url qui rend ensuite votre jsp. Voir ce lien pour une solution .

0
répondu NA. 2009-08-12 15:02:15

"/openStudentPage" est la page que je veux ouvrir tout d'abord, j'ai fait :

 @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(Model model) {
     return "redirect:/openStudentPage";
    }

@RequestMapping(value = "/openStudentPage", method = RequestMethod.GET)
public String listStudents(Model model) {
    model.addAttribute("student", new Student());
    model.addAttribute("listStudents", this.StudentService.listStudents());
    return "index";
}
0
répondu Tarnveer Kaur 2015-01-22 10:46:07

changez le nom de votre servlet dispatcher en tout autre nom .parce que dispatcher est un nom prédéfini pour spring3, spring4 versions.

<servlet>
    <servlet-name>ahok</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>ashok</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
-4
répondu Ashok 2014-07-19 12:40:48