Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
有没有一种方法可以让你;通用变量;在JavaWeb中?_Java_Jsp_Tomcat_Jakarta Ee - Fatal编程技术网

有没有一种方法可以让你;通用变量;在JavaWeb中?

有没有一种方法可以让你;通用变量;在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

在JavaWeb、Javaservlet和JSP中,有没有一种方法可以使变量影响所有会话和所有用户


我知道数据库中可以有这些变量,但是有没有其他方法可以实现这一点?

声明公共类,然后添加静态变量

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,你可能会喜欢基于配置文件的方法。但这会在每次新用户登录时改变,不是吗?但这会在每次新用户登录时改变,不是吗?