Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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
如何在java servlet中重新初始化构造函数中的变量_Java_Servlets_Constructor - Fatal编程技术网

如何在java servlet中重新初始化构造函数中的变量

如何在java servlet中重新初始化构造函数中的变量,java,servlets,constructor,Java,Servlets,Constructor,我有这样一个servlet类: public class ServletClass extends HttpServlet { Object obj; public ServletClass (){ //obj is initialized by reading the "filename" from the method readFile obj=readFile(filename); }

我有这样一个servlet类:

        public class ServletClass extends HttpServlet {
        Object obj;

        public ServletClass (){
        //obj is initialized by reading the "filename" from the method readFile
         obj=readFile(filename); 
        }

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

           // the value of the obj is modified inside this method.
        }

 }
现在在某个用户单击事件上,我想通过读取构造函数中的文件来重新初始化对象“obj”

我该怎么做?如果这不是正确的方法,我如何才能做到这一点


提前感谢

java中的构造函数用于初始化对象的实例,并且在初始化时只调用一次(
ServletClass obj=new ServletClass()
在您的情况下,这通常由servlet容器完成)。因此,不能从该类的任何方法内部再次调用构造函数

您需要做的是调用适当的方法:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       obj=readFile(filename); 
}

那是可以接受的

首先,对于给定实例,构造函数只被调用一次。两个,
Servlet
实例跨多个线程使用。您的实现不是线程安全的。@SotiriosDelimanolis:如果用户希望放弃对“obj”的更改并将其恢复为从文件读取的初始值,是否有办法?
Object obj=null@重写public void init(){obj=readFile(filename);}
构造函数只执行一次。因此,为什么要将解决方案限制在“构造函数内”?为什么对象首先是类成员?您需要继续/开始阅读关于servlet、会话、作用域等的内容。