Servlet中的静态类用法

时间:2018-02-08 23:56:54

标签: java jsp servlets model-view-controller

我已经看过几次代码,其中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"));
    }

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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