当 Servlet、JSP 和轻量级 DAO 层可以工作时,为啥要使用 MVC 框架?

Posted

技术标签:

【中文标题】当 Servlet、JSP 和轻量级 DAO 层可以工作时,为啥要使用 MVC 框架?【英文标题】:Why use an MVC framework when Servlets, JSPs and a lightweight DAO layer will work?当 Servlet、JSP 和轻量级 DAO 层可以工作时,为什么要使用 MVC 框架? 【发布时间】:2010-12-02 20:51:08 【问题描述】:

我发现很难采用 Java MVC 框架,因为看起来 Servlet、JSP 和轻量级 DAO 几乎可以满足您为解耦控制器/视图/模型而需要它做的所有事情。对于 php,我可以看到它的必要性,因为没有像 servlet 这样的内置结构,但是 Java MVC 框架真的能给你更多吗?

【问题讨论】:

【参考方案1】:

Servlet/JSP 比较薄弱的一个领域是可测试性。尽管使用 mock 对 Servlet 进行单元测试当然是可能的,但它们并不觉得它们是在设计时考虑到单元测试的。 JSP 更加棘手。您可以依靠 Selenium 之类的功能测试,但如今,人们想要单元测试覆盖率。一些更现代的 Java MVC 框架为您提供更易于测试的代码单元。

不过,总体而言,您肯定是正确的,带有 mysql 数据库的普通旧 Tomcat 堆栈可以完成工作。

【讨论】:

【参考方案2】:

大多数 Web 框架都将底层细节抽象出来。例如,Wicket、Tapestry 和 JavaServer Faces 允许您根据组件(例如,按钮、标签、下拉列表等)而不是 http 协议进行思考。甚至像 Spring MVC 和 Struts 这样的面向操作的 Web 框架也可以为您带来比所使用的底层技术更高的水平。

作为额外的奖励,这些框架带有额外的功能,例如 Ajax、Comet、与持久性框架的集成,这些功能开箱即用。

当然,正如 Asaph 所指出的,Web 框架通常更容易测试。

【讨论】:

以上是关于当 Servlet、JSP 和轻量级 DAO 层可以工作时,为啥要使用 MVC 框架?的主要内容,如果未能解决你的问题,请参考以下文章

我无法使用 JSP - Servlet - DAO 进行搜索

jsp开发中、servlet、dao层、biz层、entity层到底各自啥作用?

jsp+servlet+javaBean+Dao

无法使用 JSP/DAO/Servlet 更新表

带有 Servlet、JSP 和 MySQL 的 Java 中的 CRUD Web 应用程序,没有 DAO

servlet一调用dao就报错?啥毛病?jsp正常调用