2014-03-24 141 views
2

我有以下配置在web.xml在web.xml中映射Spring MVC URL模式?

<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"; 
    } 


} 

现在,客户端将通过发送网址参数作为贝罗调用控制器:

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

但控制器方法不会被调用。

我的网址是否正确?

回答

6

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

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

当然也可以将注解和URL更改为@RequestMapping(“/ somePath.do”)。在任何情况下都需要进行配置,以使规则不会相互冲突。 – Gimby

+1

如果配置'/',那么springMVC调度器也会得到类似image/js/css的静态资源吗? –

2

至于调度servlet的URL模式设置为*。做,该控制器将只叫只通过模式“something.do”的url请求。

因此,如果所有其他配置都正确,您的网址http://localhost:8080/myApp/somePath.do?param1=456&param2=456可以正常工作。