java - springmvc不能扫描到Controller,报404?
阿神
阿神 2017-04-17 17:45:41
0
9
227
applicationContext.xml
 <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util"  
        xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
            http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
            http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd" >
    <!-- 定义支持注解的HanlderMapping -->
        <mvc:annotation-driven/>
        <!-- 开启组件扫描,启用IOC注解配置 -->
        <context:component-scan 
            base-package="com.caibai"/>
            
        <util:properties id="dbParams" 
            location="classpath:db.properties">
        </util:properties>
        
        <bean id="viewResolver" 
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/">
            </property>
            <property name="suffix" value=".jsp">
            </property>
        </bean>
        
    </beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
 <servlet>
     <servlet-name>springmvc</servlet-name>
     <servlet-class>
 org.springframework.web.servlet.DispatcherServlet
     </servlet-class>
     <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:applicationContext.xml</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
     <url-pattern>*.form</url-pattern>
 </servlet-mapping>
 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

LoginController.java

package com.caibai.controller;

import javax.annotation.Resource;
//import javax.ejb.Remove;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.caibai.search.User;
import com.caibai.search.UserService;

@Controller
public class LoginController {
    @Resource
    private UserService service;
    
    
    @RequestMapping("/tologin.form")
    public String toLogin(){
        return "login";
    }
    @RequestMapping("/login.form")
    public String login(
        String username,String number,Model model){
        User user = service.checkLogin(username,number);
        if(!"".equals(user.getCard())){
            model.addAttribute("name", user.getName());    
            model.addAttribute("card", user.getCard());    
            model.addAttribute("number", user.getNumber());    
            model.addAttribute("score", user.getScore());    
            return "ok";
        }else {
            model.addAttribute("msg", "会员信息错误!");
            return "login";
        }

    }
}

代码如上,页面访问login.jsp静态页面是可以的,但是填写上登陆数据不能跳转,直接访问login.form也是报404错误,请各位大神看下是什么原因?

阿神
阿神

闭关修行中......

répondre à tous(9)
刘奇

Trouvez le point crucial

J'ai relu ta description et tu as dit 你可以直接访问.jsp页面 ! ! !
Ensuite, votre jsp doit être placé directement sous le chemin racine  ! Ensuite, vous ne devez pas configurer le paramètre prefix ou value="/"

Et la raison pour laquelle la vue est placée sous WEB-INF est simplement pour empêcher les utilisateurs d'y accéder directement sans passer par le contrôleur. Cela empêchera les données de modèle sur la page , donc. Je vous conseille de le mettre là aussi.
—————————————————————————————————

Il semble qu'il n'y ait aucun problème avec la configuration. Je vous suggère de définir un point d'arrêt dans la méthode .form.

Il semble maintenant que Le mappage a réussi, mais la vue renvoyée n'a pas été trouvée .
Veuillez confirmer si /WEB-INF/ok.jsp et /WEB-INF/login.jsp existent.

De plus, les vues que je vois habituellement ne sont pas directement placées sous /WEB-INF/, mais sont toutes sous le répertoire /WEB-INF/views ou /WEB-INF/jsps.
Voyez si vous l'avez placé comme ceci. Si c'est le cas, alors vous avez mal écrit le fichier de configuration.

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

404 a généralement deux raisons. L'une est que le RequestMapping est mal écrit ou n'est pas trouvé, mais votre configuration devrait être correcte. L'autre est que votre modèle n'existe pas. Vérifiez les deux modèles que vous avez renvoyés ok.html login. Est-ce que html ou ok.jsp ok.html existe ?
De plus, il y aura une invite sur la page 404 qui en est la raison. Veuillez publier l'erreur spécifique

.
左手右手慢动作

@ControllerIl n'y a pas de @RequestMapping("/XXX") ci-dessous

洪涛
<context:component-scan base-package="cn.com.xxx.xxx">
    <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/>
</context:component-scan>
小葫芦

@ruixie est plus correct.
PS : Pour ajouter, vous pouvez mettre un point d'arrêt dans la méthode qui doit être appelée par le contrôleur pour voir si la requête entre dans la méthode qui doit être appelée.

  • S'il n'entre pas, il s'agit généralement d'une erreur dans le mappage de configuration.

  • Si vous entrez la méthode, cela prouve que le "login" renvoyé n'a pas été analysé par l'analyseur de vue.

刘奇

À en juger par le fichier de configuration, il n'y a pas de problème, car une erreur 404 est signalée, indiquant que l'URL est introuvable. Vous pouvez d'abord essayer de la déboguer. Le problème doit être combiné avec l'ensemble de votre projet. À en juger par le projet, vous pouvez l'essayer d'abord, puis vérifier le problème en fonction de la réponse de [Fallen Angel 008]

PHPzhong

Il se pourrait que le répertoire jsp soit erroné, le fichier jsp n'a pas été trouvé

Ty80

Vous pouvez d'abord le tester avec JUnit

黄舟

404 Not Found : La ressource demandée est introuvable (ressource demandée introuvable)

LoginController Utilisez uniquement @Controller sans utiliser @ResponseBody ou @RestController ensemble, indiquant l'utilisation de la redirection de demande d'affichage. Si "/tologin.form" et "/login.form" sont mappés et surveillés avec succès, vous pouvez le voir dans le journal de démarrage de l'application, qui est similaire au journal suivant :

2016-04-12 23:29:35.157 INFO 2398 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto public java.lang.String hello.HelloController.index()

Le springmvc mappage de servlet que vous avez configuré n'écoute que *.form et n'écoutera pas les requêtes redirigées par *.jsp. Ces requêtes reviendront au default servlet configuré dans Tomcat conf/web.xml. jspOù sont placés les fichiers ?
Essayez de le modifier comme ceci :

 <servlet-mapping>
     <servlet-name>springmvc</servlet-name>
     <url-pattern>/</url-pattern>
 </servlet-mapping>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal