1 回答

TA贡献1796条经验 获得超4个赞
ServletRequest 是特定于 servlet 的类型,不应暴露给应用程序的其他层。
如果您的服务、数据访问对象等都绑定到 ServletRequest 类(例如,它们都以 ServletRequest 作为参数),那么您有两个主要缺点:
该代码只能在 servlet 上下文中使用:您不能在控制台应用程序中使用它们,也不能在不基于 servlet 规范的 Web 应用程序中使用它们,或者当操作由 HTTP 请求以外的其他东西触发时(例如来自一个队列,例如)
代码更难阅读、理解和测试
我们举一个简单的例子。这两个版本的方法之间最容易理解的是什么:
class TransferForm {
String fromAccountId;
String toAccountId;
BigDecimal amount;
// constructor, methods omitted for brevity
}
void transferMoney(TransferForm form);
或者
void transferMoney(HttpServletRequest request)
知道必须将什么作为参数传递给这两种方法有多容易?
在第一种情况下,它非常清楚。
在第二种情况下:请求中的金额在哪里?是参数吗?一个属性?它是如何命名的?它应该有什么类型?如何在测试中创建和填充 HttpServletRequest 的实例?
添加回答
举报