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>
答案 0 :(得分:0)
上下文路径正确""
,即应用程序部署在应用程序服务器的根URL中。我所期望的实际上是url-pattern
这是完全不同的东西(并且可能有几个url模式,这就是为什么在请求实际发生之前无法解决的原因)。
虽然可能可以从例如WebApplicationInitializer检索,但我选择了手动方法。