有没有一种方法可以让你;通用变量;在JavaWeb中?
在JavaWeb、Javaservlet和JSP中,有没有一种方法可以使变量影响所有会话和所有用户有没有一种方法可以让你;通用变量;在JavaWeb中?,java,jsp,tomcat,jakarta-ee,Java,Jsp,Tomcat,Jakarta Ee,在JavaWeb、Javaservlet和JSP中,有没有一种方法可以使变量影响所有会话和所有用户 我知道数据库中可以有这些变量,但是有没有其他方法可以实现这一点?声明公共类,然后添加静态变量 public class Globals { public static int globalVariable = 0; } 然后Globals.globalVariable将可在应用程序中的任何位置访问。声明公共类,然后添加静态变量 public class Globals { publi
我知道数据库中可以有这些变量,但是有没有其他方法可以实现这一点?声明公共类,然后添加静态变量
public class Globals {
public static int globalVariable = 0;
}
然后
Globals.globalVariable将可在应用程序中的任何位置访问。声明公共类,然后添加静态变量
public class Globals {
public static int globalVariable = 0;
}
然后Globals.globalVariable将可在应用程序中的任何位置访问。您可以通过多种方式实现:
- 使用配置文件
也许您可以使用配置文件,例如,有一个config.properties,它的级别为
level=10
,您可以在web服务器启动时将其加载到侦听器中,并通过映射存储在内存中,您可以随时更改/访问它,您也可以通过json将值发送到前端
- 在jsp/servlet中使用应用程序范围变量
您可以通过多种方式实现:
- 使用配置文件
也许您可以使用配置文件,例如,有一个config.properties,它的级别为
level=10
,您可以在web服务器启动时将其加载到侦听器中,并通过映射存储在内存中,您可以随时更改/访问它,您也可以通过json将值发送到前端
- 在jsp/servlet中使用应用程序范围变量
我认为servlet上下文将完成这项工作
例如:
ServletContextListener
public void contextInitialized(final ServletContextEvent arg0) {
arg0.getServletContext().setAttribute("my_var", 0);
...
}
HttpServlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int myVar = (Integer) getServletContext().getAttribute("my_var");
...
}
我认为servlet上下文将完成这项工作
例如:
ServletContextListener
public void contextInitialized(final ServletContextEvent arg0) {
arg0.getServletContext().setAttribute("my_var", 0);
...
}
HttpServlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int myVar = (Integer) getServletContext().getAttribute("my_var");
...
}
您可以使用三个范围;请求、页面或应用程序。我指的是可以从任何会话和客户端访问的会话和应用程序,你知道,每次一个用户登录到我的web应用程序时,他们都会创建一个与其他会话分离的新会话,除非他们通过数据库进行通信,否则不会与其他会话进行通信。请再次阅读我的评论,因为你的问题除了数据库外,还明确提出了一些方法。你能解释一下这三种方法吗?只是我们有需要存储在应用程序上的数据,但我们既不能有外部文档(例如.json),也不能将其存储在数据库中,但我们可以将其存储为所有应用程序都可以访问的变量。此外,这是一个变量,因此它会随着时间的推移而变化。然后您可以将其存储在应用程序范围中。为了获得完整的解释,我建议您阅读Head-First servlet和JSP;请求、页面或应用程序。我指的是可以从任何会话和客户端访问的会话和应用程序,你知道,每次一个用户登录到我的web应用程序时,他们都会创建一个与其他会话分离的新会话,除非他们通过数据库进行通信,否则不会与其他会话进行通信。请再次阅读我的评论,因为你的问题除了数据库外,还明确提出了一些方法。你能解释一下这三种方法吗?只是我们有需要存储在应用程序上的数据,但我们既不能有外部文档(例如.json),也不能将其存储在数据库中,但我们可以将其存储为所有应用程序都可以访问的变量。此外,这是一个变量,因此它会随着时间的推移而变化。然后您可以将其存储在应用程序范围中。关于完整的解释,我建议您阅读Head-First servlet和JSP.ServletContext(应用程序范围变量)是一个很好的选择。@arturojain是的,这是JSP/servlet应用程序的最佳选择。但是,如果您想使其独立于编程语言,例如为php提供API,您可能会喜欢基于配置文件的approch.ServletContext(应用程序范围变量)是一个不错的选择。@arturojain是的,这是jsp/servlet应用程序的最佳选择。但是,如果你想让它独立于编程语言,例如为php提供API,你可能会喜欢基于配置文件的方法。但这会在每次新用户登录时改变,不是吗?但这会在每次新用户登录时改变,不是吗?