我有课
public class MyServlet extends HttpServlet {
...
private static MyObject myobject;
public static MyObject getMyObject(){
return myobject;
}
}
和一个jsp,其中我有
<%! MyObject my_jsp_object = MyServlet.getMyObject();%>
myobject 有一个初始状态,我可以修改和保存它。
当我修改服务器上的 myobject 时出现问题。我希望,如果我修改 myobject 然后重新加载 jsp,my_jsp_object 也会被修改,但事实并非如此。
我哪里错了?我怎样才能获得这种行为?谢谢
编辑
为了清楚起见,这是我想要获得的行为
- 启动服务器
- 获取 my_jsp_object 中存储 myobject 初始值的 jsp
- 某人在某处以某种方式修改了 myobject
- 当我重新加载 jsp 时,我将 myobject 的新值存储在 my_jsp_object 中
到目前为止,当我重新加载jsp时,我仍然将myobject的旧值存储在my_jsp_object中
最佳答案
你需要知道
-
<%! ... %>
用于在 servlet 中创建成员(字段/方法),该成员将从 JSP 代码生成(并在请求 jps 页面时执行)。 - 在大多数情况下,服务器会创建一个 servlet 实例,这意味着
<%! ... %>
中的代码将仅执行一次(在构造函数中),并且您将重用同一实例来处理许多请求。
您似乎需要的是执行 MyServlet.getMyObject();
的代码每次都会要求您提供 jps。在这种情况下,您需要确保此代码将在 service()
中执行。方法,这意味着你需要使用<% ... %>
(注意缺少 !
)。
但最好的选择是避免在 JSP 中使用 Java 代码。欲了解更多信息,请阅读: How to avoid Java code in JSP files?
关于java - 在JSP中使用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27880187/