0

以下の方法を実装して、データを DTO に保存し、コンテキストに移動するのではなく、アプリケーションの任意の場所からアクセスできますか?

提案をしてください!!!

public class DummyDTO {
    private String name = null;
    private String age = null;

    // getters and setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

public class MyServletClass extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        DummyDTO dummyDTO = new DummyDTO();
        dummyDTO.setName(request.getParameter("name"));
        dummyDTO.setAge(request.getParameter("age"));
        AnotherClass.setValues(dummyDTO);
    }

    public class AnotherClass {
        String name = "";
        String age = "";

        public static void setValues(DummyDTO dummyDTO) {
            name = dummyDTO.getName();
            age = dummyDTO.getAge();
        }
    }
}
4

2 に答える 2

2

いいえ、できません。静的フィールドは、ClassLoader 全体 (全体) に対してグローバルです。したがって、サーブレットに対して複数の同時リクエストがある場合、2 番目のリクエストは、最初のリクエストによって静的フィールドに格納されたデータを上書きします (さらに、スレッドセーフでない方法で)。

データがリクエストに対してローカルである場合は、リクエスト属性に保存する必要があります。それが彼らの目的です。

補足: フィールドは静的ではありませんが、コードをコンパイルする唯一の方法は、フィールドを静的にすることです。

于 2012-07-20T05:54:47.983 に答える
0

このように使えます....

ユーザーのセッション ID をキーとするマップに値を入れます。

public class MyServletClass extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    DummyDTO dummyDTO = new DummyDTO();
    dummyDTO.setName(request.getParameter("name"));
    dummyDTO.setAge(request.getParameter("age"));
    AnotherClass.setValues(dummyDTO, request.getSession().getSessionId());
}

public class AnotherClass {
    String name = "";
    String age = "";

    private static HashMap<String, DummyDTO> map; 
    public static HashMap<String, DummyDTO> setValues(DummyDTO dummyDTO, String key) {
      return map.put(key, dummyDTO);
    }
}

}

于 2012-07-20T12:08:27.947 に答える