我已经看过几次代码,其中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"));
}
答案 0 :(得分:1)
servlet的主要目标是将HTTP请求解析为键入的参数,将业务实体对象序列化为HTTP结果。 (其次,它也可能直接或间接地执行某些周边任务,如数据压缩/解压缩,安全性,日志记录等)。
在此基础上,我认为没有充分的理由将内部bean类包含到servlet中以存储输入参数,因为它们肯定会复制实体bean。并且,作为私有,这些内部对象将需要转换为实体bean。
答案 1 :(得分:0)
演示用法用于创建一个包含请求所有值的java对象。所以它在某种程度上是一个模型,如果请求。不是商业逻辑。
如果静态类中的代码没有重复,并且只会在servlet中使用,那么私有静态类是封装和隐藏其他类的好方法。 如果你始终如一地使用这种写作风格,也会很容易阅读。
基本上将私有静态类添加到servlet具有在任何其他类中使用私有静态类的所有优点和缺点。