5

我在 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>

在我的控制器中,我有这样的东西:

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

我的 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"/>

令我惊讶的是:请求.../about/us没有到达控制器中的 myMethod1。浏览器显示 404 错误。我在方法中放置了一个记录器,但它没有打印任何内容,这意味着它没有被执行。
.../about工作正常!可以做些什么来使.../about/us请求起作用?有什么建议么?

4

3 回答 3

12

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

于 2012-06-26T09:13:22.470 回答
2

由于您在 web.xml 中映射了“/about”,它将传递的 url 将像这样 www.xyz.com/about/*

正如您的配置所说,它将适用于

  1. www.xyz.com/about/about/us
  2. www.xyz.com/about/about

为了正常工作,要么 /*在 web.xml 中使用,而不是/about

或将控制器的端点更改为

@RequestMapping(value="/us", method=RequestMethod.GET)

@RequestMapping(value="/", method=RequestMethod.GET)

于 2014-04-26T09:39:16.937 回答
-3

好的,我得到了工作,这是我在 dispatcher-servlet.xml 中添加的内容:

<bean
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="alwaysUseFullPath" value="true" />
    </bean>

    <bean
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="alwaysUseFullPath" value="true" />
</bean>
于 2012-06-26T10:50:19.513 回答