I am using Tomcat. I would like to put the config file in WEB-INF
instead of the default root class path which is WEB-INF/classes
. Currently I put the config.xml
in WEB-INF
and use the following relative addressing to locate it:
InputStream input = Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("..//config.xml");
Is this the correct way to do?
Or should I use the getServletContext().getRealPath("config.xml")
first? But I don't know how to obtain the getServletContext()
in a .java
. (I tried to new HttpServlet
for obtaining getServletContext()
, but since it is an abstract class, can't be instanced... how can I get the getServletContext()
?)
The method getRealPath()
is not guaranteed to work, eg if your webapp is not expanded from a war file there is no 'real path' on the filesystem to a file inside the war file.
Since you say you are using a ServletContextListener , you can get the ServletContext out of the ServletContextEvent :
sce.getServletContext().getResourceAsStream("/WEB-INF/config.xml");
You can use getServletConfig() method return an instance of ServletConfig.
ServletContext sc=getServletConfig().getServletContext();
EDIT:
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{
ServletContext sc=getServletContext();
...
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.