Spring mvc Spring MVC请求未到达控制器类

Spring mvc Spring MVC请求未到达控制器类,spring-mvc,Spring Mvc,我知道以前已经有人问过这个问题,但上面提到的解决方案似乎都不适合我。 我正在编写一个SpringMVCWeb应用程序。但是我的请求没有到达控制器类。 这是相关文件。 有谁能帮我指出哪里出了问题吗?谢谢 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

我知道以前已经有人问过这个问题,但上面提到的解决方案似乎都不适合我。 我正在编写一个SpringMVCWeb应用程序。但是我的请求没有到达控制器类。 这是相关文件。 有谁能帮我指出哪里出了问题吗?谢谢

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>booksWorld</display-name>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:**/*applicationContext.xml</param-value>
</context-param>
</web-app>
jsp(欢迎使用的jsp文件)


欢迎大家
你好,世界

login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Books World - Login</title>
    </head>

    <body>

        <sf:form method="POST" action="login.do" modelAttribute="Login">

            <h3>Please enter your credentials</h3>
            Login Name<sf:input path="userName" />
            Password<sf:password path="password" />

            </br>
            </br>
            <input type="submit" value="Log In" />
            <input type="reset" value="Reset" />
        </sf:form>

    </body>

    </html>

图书世界-登录
请输入您的凭据
登录名
密码


我正在eclipse中开发,并使用Tomcat。服务器日志没有错误。只有标准的启动日志


请帮我指出哪里出了问题。

您没有指定要点击的URL以及看到的错误或输出,因此我将查看您发布的文件。你发布的内容似乎至少有一些问题。我假设您正在尝试访问
http://[server]:[port]/index.jsp
http://[server]:[port]/

问题1:使用MVC框架时,通常不会直接请求JSP文件等web模板。因此,
web.xml
中的欢迎文件列表不应包含
index.jsp
。更常见的是完全省略这一部分。相反,您应该为应用程序根添加到控制器类的请求映射,例如:

@RequestMapping("/")
public String home() { return "index"; }
完成此操作后,您应该能够点击http://[server]:[port]/并获得响应

问题2:文件
index.jsp
重定向到URL
继续。执行操作
,但控制器中没有此URL的映射。相反,控制器具有URL的映射
procedure
。当您试图配置URL映射时,可能与Struts有些混淆

问题3:文件
login.jsp
提交到
login.do
,但此URL没有映射。相反,这里有一个
登录的映射。因此,表单操作应该从
login.do
更改为
login

问题4
login.jsp
中的表单绑定到名为
login
的模型属性,但控制器不添加任何具有该名称的模型对象

问题5:使用HTTP POST提交
login.jsp
中的表单,但控制器没有为
login
方法指定此表单。用
@RequestMapping
注释的控制器方法的默认值是HTTP GET,因此在提交表单时不会调用
登录
方法

问题6:文件
index.jsp
似乎是多余的,因为它的唯一目的是重定向到同一服务器上的不同URL。使用以下简化的控制器代码会更好:

@Controller
public class CommonController {
  @RequestMapping("/")
  public String loadLoginPage(Model model) {
    model.addAttribute("Login", new Login()); // Or something like this, which represents the actual model object that should collect the login information.

    return "login";
  }

  @RequestMapping(method = RequestMethod.POST, value="/login")
  public String login(Login login) {
    // Use the login object to authenticate the user.

    return "abc";
  }
}
我还建议你遵守规定

<context:component-scan base-package="com.booksworld.controllers" />
<context:annotation-config />
<mvc:annotation-driven />


在文件
dispatcherservlet.xml
中,因为这些行特定于您的表示层。

Try@RequestMapping(value=“/login.do”)您尝试的URL是什么?您是否收到404或其他错误?
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Books World - Login</title>
    </head>

    <body>

        <sf:form method="POST" action="login.do" modelAttribute="Login">

            <h3>Please enter your credentials</h3>
            Login Name<sf:input path="userName" />
            Password<sf:password path="password" />

            </br>
            </br>
            <input type="submit" value="Log In" />
            <input type="reset" value="Reset" />
        </sf:form>

    </body>

    </html>
@RequestMapping("/")
public String home() { return "index"; }
@Controller
public class CommonController {
  @RequestMapping("/")
  public String loadLoginPage(Model model) {
    model.addAttribute("Login", new Login()); // Or something like this, which represents the actual model object that should collect the login information.

    return "login";
  }

  @RequestMapping(method = RequestMethod.POST, value="/login")
  public String login(Login login) {
    // Use the login object to authenticate the user.

    return "abc";
  }
}
<context:component-scan base-package="com.booksworld.controllers" />
<context:annotation-config />
<mvc:annotation-driven />