当前位置:  开发笔记 > 编程语言 > 正文

Spring MVC 404找不到错误

如何解决《SpringMVC404找不到错误》经验,为你挑选了1个好方法。

我试图在Spring MVC中运行一个项目。这是代码

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>



    
        
        Welcome to Spring Web MVC project
    

    
        

Spring 3 Register!

click
Spring MVC Form Demo - Registration
User Name
Password
Email
BirthDate (mm/dd/yyyy)
Profession

RegistrationController.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package RegisterInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 *
 * @author Harshit Shrivastava
 */
import RegisterInfo.model.User;

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

@Controller
@RequestMapping(value = "/register")
public class RegistrationController {

    @RequestMapping(method = RequestMethod.GET)
    public String viewRegistration(Model model)
    {
        User userForm = new User();
                model.addAttribute("userForm", new User());

                /*List professionList = new ArrayList();
                professionList.add("Developer");
                professionList.add("Designer");
                professionList.add("IT Manager");
                model.put("professionList", professionList);*/
        return "index";
    }

    @RequestMapping(method = RequestMethod.POST)
    public String processRegistration(@ModelAttribute("userForm") User user, Map model)
    {       
        System.out.println("Username : " + user.getUserName());
        model.put("userForm", new User());
        return "index";
    }
}

User.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package RegisterInfo.model;

/**
 *
 * @author Harshit Shrivastava
 */
import java.util.Date;

public class User {
    private String username;
    private String password;
    private String email;
    private Date birthDate;
    private String profession;

    public String getUserName()
    {
        return username;
    }
    public void setUserName(String username)
    {
        this.username = username;
    }
        public String getPassword()
    {
        return password;
    }
    public void setPassword(String password)
    {
        this.password = password;
    }
        public String getEmail()
    {
        return email;
    }
    public void setEmail(String email)
    {
        this.email = email;
    }
        public Date getBirthDate()
    {
        return birthDate;
    }
    public void setBirthDate(Date birthDate)
    {
        this.birthDate = birthDate;
    }
        public String getProfession()
    {
        return profession;
    }
    public void setProfession(String profession)
    {
        this.profession = profession;
    }
}

web.xml



    
        contextConfigLocation
        /WEB-INF/dispatcher-servlet.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    
    
        dispatcher
        org.springframework.web.servlet.DispatcherServlet
        2
    
    
        dispatcher
        *.htm
    
    
        
            30
        
    
    
        index.htm
    

dispatcher-servlet.xml




    

    
    
    
    
        
            
                indexController
            
        
    

    

    
    


项目结构:

在上面的程序中,我总是得到404 not found status。我试过了

http:// localhost:8080 / RegisterInfoMaven / index

http:// localhost:8080 / RegisterInfoMaven / index.htm

两者都不起作用。

当我从项目中删除web.xml和dispatcher-servlet.xml时,它可以http://localhost:8080/RegisterInfoMaven/index.jsp很好地加载,但是正如我所说的web.xml & dispatcher-servlet.xml,它再次开始404 not found出现错误。

web.xml & dispatcher-servlet.xml文件有什么问题?



1> Ken Bekov..:

第一。web.xml文件中的映射:


   dispatcher
   *.html

意味着,调度程序Servlet将仅处理以结尾的请求.html。将其更改为下一个:


   dispatcher
   /

之后,调度程序servlet将处理所有传入的请求。

第二。来自您的解析器声明dispatcher-servlet.xml


意味着,当Controller方法返回String值时,解析器将在任何值/WEB-INF/jsp之前和.jsp之后添加。然后将使用该名称查找文件。因此,您需要在jsp目录中创建WEB-INF目录,并将jsp文件放在此处。

第三。当您输入类似http:// localhost:8080 / index的内容时,spring会尝试查找标有的 Controller 类或方法@RequestMapping(value = "/index"),而不是文件 index.jsp。

因此,您必须声明标有的Controller方法@RequestMapping(value = "/index")。您的请求字符串将看起来像http:// localhost:8080 / index这样的东西,没有任何扩展名。

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有