【问题标题】:map url to controller将 url 映射到控制器
【发布时间】:2009-08-10 15:14:26
【问题描述】:

在我的 applicationContext.xml 中,我把这个

<bean id="something" class="com.to.theController"/>

com.to.theController

我有这样的方法

@Controller
public theController{
 @RequestMapping(value="/api/add", method= RequestMethod.GET)
  public String apiAddHandler(Model model){
      model.addAttribute("api", new Api());
      return "apiForm";

  }
}

当码头启动时,我可以看到定义bean [something,...

但是当我转到 http://localhost:8080/api/add 时,我收到 404 错误。我错过了什么?我已经调试了apiAddHandler方法,调用URL时不会调用这个方法

【问题讨论】:

  • 404 消息说什么?

标签: java spring spring-mvc


【解决方案1】:

确保 Spring 正在查找您的注释。您应该在日志中看到类似“INFO DefaultAnnotationHandlerMapping:343 - 映射 URL 路径 [/api/add] 到处理程序 [com.example.ExampleController@6f3588ca]”的内容。

另外,如前所述,您需要确保在 web.xml 中有正确的 url 映射。

我会用

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

如果使用注释,则将所有 url 映射到调度程序 servlet。

如果您想在调度程序 servlet 之外提供一些内容,请添加以下内容

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>

【讨论】:

    【解决方案2】:

    您的web.xml 中是否有一个&lt;servlet-mapping&gt; 元素来将看起来像/api/add 的URL 映射到DispatcherServlet

    如果不是,那么如果请求一开始就没有到达 Spring MVC,那么 Spring MVC 如何将 URL 映射到控制器就无关紧要了。

    【讨论】:

      【解决方案3】:

      你需要做一些设置。

      1. 在您的 web.xml 中,您添加了 DispatcherServlet 的映射。 像

        <servlet>
            <servlet-name>springapp</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        
        <servlet-mapping>
            <servlet-name>springapp</servlet-name>
            <url-pattern>*/api/add</url-pattern>
        </servlet-mapping>
        
      2. 你必须在 spring 配置中添加注解处理程序

        <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
        <context:component-scan base-package="learn.web.controller" />
        

        learn.web.controller 是你有注释组件的包

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-04
        • 2013-08-17
        • 2016-10-14
        • 2012-10-25
        • 1970-01-01
        • 2020-01-16
        相关资源
        最近更新 更多