java - 在JSP中使用类

标签 java jsp

我有课

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 也会被修改,但事实并非如此。

我哪里错了?我怎样才能获得这种行为?谢谢

编辑

为了清楚起见,这是我想要获得的行为

  1. 启动服务器
  2. 获取 my_jsp_object 中存储 myobject 初始值的 jsp
  3. 某人在某处以某种方式修改了 myobject
  4. 当我重新加载 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/

相关文章:

Java GC 开销 : Does it matter if you have 10mb or 10gb of *referenced* objects?

java - 单击独立于其余 jPanel 的按钮时创建一个新的相同 jPanel

java - org.apache.catalina.connector.ResponseFacade.sendRedirect (ResponseFacade.java :463)) 处的 IllegalStateException

java - 如何在jspx页面中发表评论

javascript - ajax调用servlet时不会调用成功回调函数

JSP Ajax 发布到另一个 JSP 页面

java - 如何根据 Java 中的参数值进行分派(dispatch)?

java - 如何删除或更新 ObservableList 中的某些行

java - Java中Iterable的实现

jsp - Sublime Text 2 JSP 语法高亮问题