Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从Spring启动控制器获取web.xml中的上下文参数_Java_Xml_Spring_Spring Mvc_Servlets - Fatal编程技术网

Java 无法从Spring启动控制器获取web.xml中的上下文参数

Java 无法从Spring启动控制器获取web.xml中的上下文参数,java,xml,spring,spring-mvc,servlets,Java,Xml,Spring,Spring Mvc,Servlets,我有一个简单的webapp,它使用springboot和web 我有一个web.xml文件 src/main/webapp/WEB-INF包含如下上下文参数 <context-param> <description>Directory containing the configuration files</description> <param-name>confDir</param-name> <para

我有一个简单的webapp,它使用springboot和web 我有一个web.xml文件
src/main/webapp/WEB-INF
包含如下上下文参数

<context-param>
    <description>Directory containing the configuration files</description>
    <param-name>confDir</param-name>
    <param-value>/opt/rasdaman/etc/</param-value>
</context-param>
但是当我试图获取参数时,它返回null

servletContext.getInitParameter("confDir");
当我试图获得servletContext的真实路径时

servletContext.getRealPath(File.separator);
它回来了

 "..../src/main/webapp/"
如何在web.xml中获取配置变量


谢谢,我自己没有试过,但我自己没有试过。如果让控制器实现ServletContextAware,我认为可以从以下位置获取上下文参数:

这个想法是

public class MyCoolController implements ServletContextAware {


    @Override
    setServletContext(ServletContext servletContext) {
        String confDir = servletContext.getInitParameter("confDir");
    }
}
试一试

因为问题是我使用了带jar的部署Spring Boot而不是war,所以无法从web.xml读取


接下来更改为war并使用tomcat EE正常部署

为什么不将您的参数放入属性文件中?它是一个使用web.xml配置的遗留源,因此我无法移动到其他文件。您是否将应用程序部署为war文件?它是一个jar文件,因为Spring启动时像此公共静态void main(字符串[]args)一样启动{ApplicationContext app=SpringApplication.run(ApplicationMain.class,args);您可能应该看看这一点,然后我尝试更改为war并为maven添加依赖项,但对web.xml中的配置变量仍然为null。打包war时,您是否在相应目录中的war文件中看到您的web.xml?
public class MyCoolController implements ServletContextAware {


    @Override
    setServletContext(ServletContext servletContext) {
        String confDir = servletContext.getInitParameter("confDir");
    }
}