2013-05-21 3 views
0

Je suis novice à spring mvc et essayant de développer une application web de connexion très basique. Je reçois l'erreur ci-dessous lors de l'exécution du projet. J'ai essayé presque tout et je n'ai pas pu corriger cette erreur depuis deux semaines. Est-ce que quelqu'un peut m'aider, s'il vous plaît.Spring MVC Aucun gestionnaire trouvé

May 21, 2013 2:37:12 PM org.springframework.web.servlet.DispatcherServlet noHandlerFound 
WARNING: No mapping found for HTTP request with URI [/SpringWeb/WEB-INF/jsp/loginnn.jsp] in DispatcherServlet with name 'spring' 

Mes pages jsp résident sous WEB-INF/jsp. La page de connexion à la méthode dans mon contrôleur est appelée, mais le nom de la vue n'est pas rendu et résolu. Appréciez grandement votre aide.

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_2_5.xsd" id="WebApp_ID" version="2.5"> 
<display-name>testspring</display-name> 
<servlet> 
<servlet-name>frontcontrol</servlet-name> 
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>frontcontrol</servlet-name> 
<url-pattern>/</url-pattern> 
</servlet-mapping> 
</web-app> 

frontcontrol-servlet.xml

<context:component-scan base-package ="com.shell.spring.testspringapp"> 
</context:component-scan> 
<bean id ="viewResolver" 
class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 

<property name="prefix" value="/WEB-INF/jsp/" /> 
<property name="suffix" value=".jsp" />  
</bean> 

</beans> 

classe contrôleur

@Controller 

public class Firstcontrol { 

@RequestMapping(value="/") 
public ModelAndView invokeme(Model m) 
{ 

ModelAndView mav=new ModelAndView(); 
mav.setViewName("result"); 
System.out.println("In method"); 
return mav; 
} 

@RequestMapping(value="/submit" ,method=RequestMethod.GET) 
public String submit(Model m) 
{ 
System.out.println("In submitmethod"); 
return "submit"; 
} 
} 

Répondre

0

I Dans le fichier web.xml, le fichier de configuration (spring-servler.xml) doit être spécifié pour être utilisé par la servlet du répartiteur, puisque vous n'utilisez pas le nom conventionnel, qui est le [nom-servlet] -context.xml.

Étant donné que Spring ne trouve pas le fichier de configuration pour le servlet dispatcher, le viewresolver n'est jamais enregistré. Je suppose que 'spring-servler.xml est situé dans le dossier WEB-INF dans mon exemple, donc vous devrez peut-être ajuster.

Notez également que j'ai changé le mappage de servlet à /, ce qui aide si vous avez besoin de résoudre des ressources statiques, puisque / agit comme un tout attraper par opposition à tout mapper à travers le répartiteur.

<servlet> 
<servlet-name>spring</servlet-name> 
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
<init-param> 
<param-name>contextConfigLocation</param-name> 
<param-value>WEB-INF/spring-servler.xml</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>spring</servlet-name> 
<url-pattern>/</url-pattern> 
</servlet-mapping> 

Vous pouvez également essayer d'utiliser un résolveur à affichage standard, si vous n'utilisez pas JSTL.

Remplacer la vue jstl résolveur:

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

Avec:

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

Essayez retourner un String de votre contrôleur qui indique le nom de la vue:

@RequestMapping(value="/") 
public String loginpage(Model model) 
{ 
    Employee emp=new Employee(); 
    ModelAndView mav=new ModelAndView(); 
    model.addObject("emp", emp); 
    return "loginnn"; 
} 
+0

Bonjour Kevin, je suis désolé que ce soit une faute de frappe sur spring-servlet.xml. Je viens d'éditer mon post. Comme vous l'avez suggéré, j'ai modifié à la fois web.xml et spring-servlet.xml mais j'ai toujours la même erreur. J'ai essayé d'imprimer quelques sysouts dans la méthode de connexion. Il est appelé et le problème se produit lors de la résolution du nom de la vue. – Jasu

+0

@Jasu Voir la mise à jour concernant le contrôleur. –

+0

Salut Kevin, je reçois l'erreur ci-dessous 21 mai 2013 4:17:12 PM org.springframework.web.servlet.DispatcherServlet noHandlerFound AVERTISSEMENT: aucun mappage trouvé pour la requête HTTP avec URI [/SpringWeb/login.html] dans DispatcherServlet avec le nom 'printemps' – Jasu

1

Puisque vous êtes mappez votre DispatcherServlet pour '/' essayez d'ajouter <mvc:default-servlet-handler/> à votre spring-servlet.xml

1

je vis même erreur, avéré que vous avez besoin d'activer les annotations MVC séparément

<mvc:annotation-driven/> 

En plus de

<context:Annotation-config/> 
0

@sanjay et @Will Keeling sont à la fois à droite.Il est nécessaire d'utiliser <mvc:default-servlet-handler/> (comme le dernier gestionnaire) et permettre à la fois <mvc:annotation-driven/> et <context:Annotation-config/>

0

<context:component-scan base-package="your base packege " />

Vous devriez vérifier la section suivante dans la configuration de printemps xml. Peut-être que vous l'avez copié de quelque part et avez oublié d'en faire votre nom de paquet. Spring ne sera pas en mesure d'analyser les paquets si c'est le cas et finalement montrer cette erreur.

Questions connexes