将url映射到控制器

时间:2009-08-10 15:14:27

标签: java spring spring-mvc

在我的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";

  }
}

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

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

时,不会调用此方法

3 个答案:

答案 0 :(得分:1)

您的<servlet-mapping>中是否有web.xml个元素来映射看似/api/addDispatcherServlet的网址?

如果没有,那么无论Spring MVC如何将URL映射到控制器都没关系,如果请求从未首先进入Spring MVC。

答案 1 :(得分:1)

你需要做一些设置。

  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. 您必须在弹簧配置中添加注释处理程序

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

    其中learn.web.controller是包含带注释组件的包

答案 2 :(得分: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>