Spring Controller的URL请求映射无法按预期工作

Ath*_*rva 5 model-view-controller web.xml controller spring-mvc url-mapping

我在web.xml中创建了一个映射,如下所示:

<servlet>  
        <servlet-name>dispatcher</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
</servlet>
<servlet-mapping>  
        <servlet-name>dispatcher</servlet-name>  
        <url-pattern>/about/*</url-pattern>  
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

在我的控制器中我有这样的事情:

import org.springframework.stereotype.Controller;  
@Controller  
public class MyController{  
    @RequestMapping(value="/about/us", method=RequestMethod.GET)
    public ModelAndView myMethod1(ModelMap model){  
        //some code  
        return new ModelAndView("aboutus1.jsp",model);  
    }  
    @RequestMapping(value="/about", method=RequestMethod.GET)
    public ModelAndView myMethod2(ModelMap model){  
        //some code  
        return new ModelAndView("aboutus2.jsp",model);  
    }  
}
Run Code Online (Sandbox Code Playgroud)

我的dispatcher-servlet.xml有一个视图解析器,如:

<mvc:annotation-driven/>  
<bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:viewClass="org.springframework.web.servlet.view.JstlView"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp"/>
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是:请求.../about/us未到达控制器中的myMethod1.浏览器显示404错误.我在方法中放了一个记录器但它没有打印任何东西,这意味着它没有被执行.
.../about工作良好!如何使.../about/us请求工作?有什么建议?

Rav*_*har 12

您需要使用@RequestMapping(value="/us", method=RequestMethod.GET)或需要请求about/about/us

  • 原因是:您已将web.xml中的**/about/**映射到DispatcherServlet.因此,您只需要映射**/about**之后的部分. (3认同)