我在WEB-INF中有一个属性文件,其中有一些属性需要我的servlet使用(属性如数据库密码,......)。加载此文件的最佳方法是什么?我应该覆盖servlet的init方法,以便我只加载一次文件吗?
由于
答案 0 :(得分:1)
我并不是说这种方式是正确的,因为我不使用JEE,但是从我记忆中你可以使用ServletContextListener
方法。只需像
class ContextListenerImpl implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
//lets skip it for now
}
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext sc = sce.getServletContext();
//read parameter from properties and add it to servlet context attributes
sc.setAttribute("yourParameterName", "value");
}
}
您应该可以在任何servlet中使用它,例如
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//...
getServletContext().getAttribute("yourParameterName");
//...
}
属性的BTW值也可以容纳其他对象,而不仅仅是字符串。
哦,不要忘记将此监听器添加到您的Web应用程序中。只需添加
<listener>
<listener-class>full.name.of.ContextListenerImpl</listener-class>
</listener>
到您的web.xml
文件。