不工作弹簧控制器的URL请求映射如预期(Spring Controller's URL re

2019-07-30 03:22发布

我已经创建了在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);  
    }  
}

而我的调度员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要求的工作? 有什么建议?

Answer 1:

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



Answer 2:

既然你已经在你的web.xml映射“/约”,就意味着通过该网址会是这样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)



Answer 3:

好吧,我得到的东西的工作,这里有事情,我在调度-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>


文章来源: Spring Controller's URL request mapping not working as expected