【问题标题】:Static class usages inside ServletsServlet 中的静态类用法
【发布时间】:2018-07-19 16:28:30
【问题描述】:

我见过几次代码,其中 Servlet 内部是用于存储参数值并进行各种验证等的内部类。这样做是否被认为是一种好习惯?在我看来,您有时会复制实体类。业务逻辑是否应该与 serlvet 分离? 这种用法的一个例子:

 private static class RequestShiftPreferences {

    private final String numbOfWorkingHoursPerWeek;
    private final String numbOfDaysOFf;
    private final String workTimePreference;

    private RequestShiftPreferences(String numbOfWorkingHoursPerWeek, String numbOfDaysOFf, String workTimePreference) {
        this.numbOfWorkingHoursPerWeek = numbOfWorkingHoursPerWeek;
        this.numbOfDaysOFf = numbOfDaysOFf;
        this.workTimePreference = workTimePreference;
    }

    public static ShiftPreferencesController.RequestShiftPreferences fromRequestParameters(HttpServletRequest request) {
        return new ShiftPreferencesController.RequestShiftPreferences(
                request.getParameter("numbOfWorkingHoursPerWeek"),
                request.getParameter("numbOfDaysOFf"),
                request.getParameter("workTimePreference"));
    }

【问题讨论】:

    标签: java jsp servlets model-view-controller


    【解决方案1】:

    servlet 的主要目的是将 HTTP 请求解析为类型化参数将业务实体对象序列化为 HTTP 结果。 (其次,它也可能直接或间接执行一些外围任务,如数据压缩/解压缩、安全、日志记录等)

    在此基础上,我认为没有充分的理由在 servlet 中包含类似内部 bean 的类来存储输入参数,因为它们肯定会复制实体 bean。而且,由于是私有的,这些内部对象将需要转换为实体 bean。

    【讨论】:

      【解决方案2】:

      演示的用法用于创建一个保存请求的所有值的 java 对象。因此,如果请求,它在某种程度上是一个模型。不是业务逻辑。

      如果静态类中的代码不重复并且只会在 servlet 中使用,那么私有静态类是封装和隐藏其他类的好方法。 如果你一直使用这种写作风格,它也会很容易阅读。

      基本上将私有静态类添加到 servlet 具有在任何其他类中具有私有静态类的所有优点和缺点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        • 2011-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-24
        相关资源
        最近更新 更多