【问题标题】:Spring MVC URL pattern mapping in web.xml?web.xml中的Spring MVC URL模式映射?
【发布时间】:2014-05-01 21:13:40
【问题描述】:

我在 web.xml 中有以下配置

<servlet>  
        <servlet-name>mvc-dispatcher</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/mvc-dispatcher-servlet.xml</param-value>
         </init-param>  
        <load-on-startup>1</load-on-startup>  
    </servlet>

    <servlet-mapping>  
        <servlet-name>mvc-dispatcher</servlet-name>  
        <url-pattern>*.do</url-pattern>  
    </servlet-mapping>

我有如下控制器。

@Controller  
public class SomeController { 

   @RequestMapping("/somePath")
    public String showExtendedUi() {
        return "somePage";
    }


}  

现在客户端将通过发送 url 参数来调用控制器:

http://localhost:8080/myApp/somePath?param1=456&param2=456

但是控制器方法没有被调用。

我的网址正确吗?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    您的控制器方法没有被调用,因为您已将 mvc-dispatcher 映射到 *.do 将 servlet 映射更改为

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

    【讨论】:

    • 当然也可以把注解和url改成@RequestMapping("/somePath.do")。在任何情况下都需要进行配置,以免规则相互冲突。
    • 如果config/,那么像image/js/css这样的静态资源也会被springMVC dispatcher获取吗?
    【解决方案2】:

    由于 Dispatcher Servlet 的 URL 模式被配置为 *.do,控制器只能被模式“something.do”的 url 请求调用。

    如果所有其他配置正确,您的网址http://localhost:8080/myApp/somePath.do?param1=456&amp;param2=456 将起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-04
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      相关资源
      最近更新 更多