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错误,请各位大神看下是什么原因?
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
ouvalue="/"
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.
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
@Controller
Il n'y a pas de@RequestMapping("/XXX")
ci-dessous@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]
Il se pourrait que le répertoire jsp soit erroné, le fichier jsp n'a pas été trouvé
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 :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 audefault
servlet configuré dans Tomcat conf/web.xml.jsp
Où sont placés les fichiers ?Essayez de le modifier comme ceci :