如何 save/get 对象的当前状态 to/from Servlet 的上下文路径

how to save/get current state of an object to/from the context path of a Servlet

我是 Java Servlet 的新手,对于我目前正在处理的应用程序,(某种没有转发或重定向的代理 类)我想保存一个对象到应用程序的上下文路径。

我知道有类似的问题,但我无法让它工作或者我只是不明白。

我是否必须在 web.xml 中指定上下文路径? 我需要上下文监听器吗?

这是代码片段,但保存的对象中的对象为空; 如何将对象的当前状态保存到上下文路径?

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

    try {

        if(this.getServletContext().getAttribute("oldConnector")==null){
            Connector connection = new Connector(); 
            connection.sendRequest(request);
            this.getServletContext().setAttribute("oldConnector", connection);
        }else{
             ((Connector)this.getServletContext().getAttribute("oldConnector")).sendResponse(response); 
             this.getServletContext().removeAttribute("oldConnector");
        }

HttpServletResponse 的响应对象永远不会为 null,因为它是在向您的 servlet 发出第一个请求时由 Web 容器创建的。

因此,未设置属性 "oldConnector",因此您得到的值为 null。

建议:通过删除 if(response==null) 条件设置上下文属性 "oldConnector"。并在另一个 servlet 或同一个 servlet 中检索该属性,然后在需要时将其删除。

下面的代码可以帮助您在评论中查询。

        if(getServletContext().getAttribute("oldConnector") == null){
            getServletContext().setAttribute("oldConnector", "old value");//dummy value added, replace it with your connection object.
            System.out.println("oldConnector attribute has be set.");
        }else{
            getServletContext().removeAttribute("oldConnector");
            System.out.println("oldConnector attribute has be removed");
        }