存储可在整个.JSP网站中使用的变量的最佳方法是什么?我有一个密钥代码是一堆数字keycode = XXXXXXXXXXXXXXXXXXXXX,我希望能够在各个页面中访问该代码,同时将密钥代码放在一个位置。
变量不会经常变化,但我希望能够在一个地方交换它,而不是在任何地方交换它。
答案 0 :(得分:1)
要在应用程序范围中存储变量,您应将其保存为ServletContext
中的属性。您可以使用ServletContextListener
:
ServletContext
public class AppServletContextListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
//use this method for tasks before application undeploy
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
//use this method for tasks before application deploy
arg0.getServletContext().setAttribute("keyCode", "foo");
}
}
然后,您可以通过Expression Language:
从JSP访问此值${keyCode} //prints "foo"
${applicationScope.keyCode} //also prints "foo"
和/或在处理请求时的servlet中。例如,在doGet
:
public void doGet(HttpServletRequest request, HttpServletResponse response) {
ServletContext servletContext = request.getServletContext();
System.out.println(servletContext.getAttribute("keyCode")); // prints "foo"
}
有关Java Web应用程序开发中变量范围的更多信息:How to pass parameter to jsp:include via c:set? What are the scopes of the variables in JSP?