ServletContext.getContextPath()始终返回根路径

时间:2014-08-10 02:06:35

标签: java spring spring-mvc annotations

预计servletContext.getContextPath()时,

""始终会返回foo。有没有办法找出控制器所在的确切上下文路径?

程序化弹簧配置

@Configuration
@EnableWebMvc
public class WebConfig {

   @Autowired
   private ServletContext servletContext;

   @PostConstruct
   public void init() {
       System.out.println(servletContext.getContextPath());
   }
}

的web.xml

<servlet>
    <servlet-name>foo</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextClass</param-name>
        <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
    </init-param>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            some.pkg.WebConfig
        </param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>foo</servlet-name>
    <url-pattern>/foo/*</url-pattern>
</servlet-mapping>

1 个答案:

答案 0 :(得分:0)

上下文路径正确"",即应用程序部署在应用程序服务器的根URL中。我所期望的实际上是url-pattern这是完全不同的东西(并且可能有几个url模式,这就是为什么在请求实际发生之前无法解决的原因)。

虽然可能可以从例如WebApplicationInitializer检索,但我选择了手动方法。