java - 将数据存储在 servlet 的 DTO 中...?

标签 java servlets dto getter-setter

是否可以实现以下方法来将数据存储在 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();
        }
    }
}

最佳答案

不,不能。静态字段对于整个类加载器来说是全局的。因此,如果您的 servlet 有多个并发请求,则第二个请求将覆盖第一个请求在静态字段中存储的数据(并且另外以线程不安全的方式)。

如果数据是请求的本地数据,则应将其存储在请求属性中。这就是他们的目的。

旁注:您的字段不是静态的,但编译代码的唯一方法就是使它们静态。

关于java - 将数据存储在 servlet 的 DTO 中...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11573574/

相关文章:

wpf - 我应该在 MVVM 中使用 DTO 作为我的数据模型吗?

java - mapstruct 未在双向 OneToMany 上正确设置关系

c# - 复合 Dto 更新,最佳实践

java - Maven:在 JAR 的 META-INF 中包含文件

java - 使用 lambda 排除列表条目

java - 如何将异步 HTTP 请求响应合并为一个?

尝试在 java static 中打印矩阵值时出现 java.lang.NullPointerException

jsp - 在 JSP/Servlet 中填充级联下拉列表

java - 需要从过滤 @WebFilter 中排除 js/css/jpg 等文件

google-app-engine - 如何在 GAE 的 sitebricks 方法中注入(inject)请求范围的 HttpSession?