如何在java servlet中重新初始化构造函数中的变量
我有这样一个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); }
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、会话、作用域等的内容。