spring 在 DispatcherServlet 中找不到名称为“dispatcher”的带有 URI 的 HTTP 请求的映射

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/6732804/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 04:35:17  来源:igfitidea点击:

No mapping found for HTTP request with URI in DispatcherServlet with name 'dispatcher'

springnetbeans

提问by Developer404

I'm new to Spring framework. I just started implementing multiaction controller in netbeans. But. I'm getting the above error. I'm pasting my code below. Plz take a look into it and resolve me the issue.

我是 Spring 框架的新手。我刚刚开始在 netbeans 中实现多动作控制器。但。我收到上述错误。我在下面粘贴我的代码。请查看它并解决我的问题。

dispatcher-servlet.xml:

调度程序servlet.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:p="http://www.springframework.org/schema/p"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
            </props>
        </property>
    </bean>

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />

    <bean name="indexController"
          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />
    <bean name="/*.htm" class="controller.MyController"/>
</beans>

index.jsp:

索引.jsp:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Hello</title>
</head>

<body>
    <h4>Multi Action Controller Example</h4>
    <a href="add.htm">Add</a>
    <a href="update.htm">Update</a>
    <a href="remove.htm">Remove</a>
</body>
</html>

MyController.java:

我的控制器.java:

package controller; 

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class MyController extends MultiActionController {

    public ModelAndView add(HttpServletRequest req, HttpServletResponse resp) throws      Exception {
        System.out.println("Add ma");
        return new ModelAndView("result","message","Add Method Called");
    }

    public ModelAndView update(HttpServletRequest req, HttpServletResponse resp) throws Exception {
        System.out.println("Update ma");
        return new ModelAndView("result","message","Update Method Called");
    }

    public ModelAndView remove(HttpServletRequest req, HttpServletResponse resp) throws Exception {
        System.out.println("Remove ma");
        return new ModelAndView("result","message","Remove Method Called");
    }
}

result.jsp:

结果.jsp:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Nee Varaatha</title>
</head>
<body>
    <h1>Please Show it </h1>
    ${message}
</body>
</html>

回答by Alicia

Try checking your apachelog in the output Window of netbeansand see what's the default mapping of your controller in it, and append that mapping in the index.jsp.

尝试在 的输出窗口中检查您的 apachelognetbeans并查看其中控制器的默认映射是什么,并将该映射附加到index.jsp.

For example in the log you'll find

例如在日志中你会发现

Mapped URL path [/employee] onto handler '/*.html'

将 URL 路径 [/employee] 映射到处理程序 '/*.html'

Simply append employee/add.htm in the JSP

只需将employee/add.htm 添加到 JSP

回答by OlliS

Have you considered using @Controller annotated classes? Since spring 2.5 annotations are usually preferred.

您是否考虑过使用 @Controller 注释类?由于 spring 2.5 注释通常是首选。

Here's an example web.xml:

这是一个示例 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">
<display-name>Example</display-name>



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

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/example-servlet.xml        
    </param-value>

</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

</web-app>

example-servlet.xml:

示例servlet.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
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.0.xsd 
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">


<!--Tell the servlet where to look for annotated methods-->
<context:component-scan base-package="controller" />

<!--if no controller logic is required, mvc:view-controller can be used to simply show a view for a request  -->
<mvc:view-controller path="/" view-name="index"/>

<!--Enables many annotations and searches for @Controller annotated methods etc.. -->
<context:annotation-config />

<!--JSR-303 (Bean validation) support will be detected on classpath and enabled automatically-->
<mvc:annotation-driven />

<!--This tag allows for mapping the DispatcherServlet to "/" (all extensions etc)-->
<mvc:default-servlet-handler/>

<mvc:resources location="/resources/**, classpath:resources" mapping="/resources/**"/>

<!--Configures the application to search for views in folder /WEB-INF/jsp/ with the suffix ".jsp" 
in controllers prefix and suffix are therefore no longer needed-->  
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
    p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /> 

And an example simple controller:

以及一个简单的控制器示例:

@Controller
public class ExampleController {

    @RequestMapping("/test")
    public String test(Model model) {
            model.addAttribute("message","Test message");
            return "result";
    }
}

Also see the spring reference documentation here

另请参阅此处的弹簧参考文档