Raw Servlet vs. Spring MVC

时间:2012-05-27 16:30:47

标签: java spring web-applications servlets

使用原始Java Servlet或使用Spring MVC(或任何其他框架)构建Web应用程序的原因是什么?

当你应该避免使用Spring MVC时有没有例外,使用Raw Servlets这样做有什么好处?

5 个答案:

答案 0 :(得分:24)

如果您正在构建一个非常快速且肮脏的演示,而您无意在以后进行扩展,那么Spring可能会导致许多其他配置问题(如果您之前已经完成此操作,则不会真的如此,但我总是最终战斗用这种或那种方式),这可能是考虑使用普通旧servlet的时候了。一般来说,除了一个超级快速和肮脏的演示之外,使用某种形式的MVC框架将使未来的生活变得更加容易并且也符合最佳实践。 Spring让事情变得非常简单,只需花一些时间在前端配置一切。

我应该注意,使用Spring无法用java servlet做什么。最大的不同是设置时间。

编辑:值得注意的是,当我发布这个答案时,我不知道Spring Boot实际上很容易使用嵌入式Web服务器或更传统的Web容器来运行。以下是快速入门示例的链接:http://projects.spring.io/spring-boot/#quick-start

答案 1 :(得分:11)

Servlet技术用于更通用的服务器端扩展,用于请求 - 响应范例。 Spring只是通过HTTP将它用于Web应用程序。

有人引用此处的话:http://www.reddit.com/r/java/comments/29f3ul/why_is_spring_mvc_better_than_servlets_jsp/

  

Servlet基于用于处理请求的低级API   响应。像Spring MVC这样的Web框架旨在实现   构建处理HTTP请求和响应的Web应用程序,   更轻松。大多数Java Web框架(包括Spring MVC)都使用servlet   在幕后。

     

您可以使用servlet编写Web应用程序,但您必须这样做   手动处理所有细节。你会得到很少的帮助   典型的Web内容,如验证,REST,请求/响应主体   JSON,表单绑定等。您最终将编写大量实用程序代码   支持您的Web应用程序。

     另一方面,Web框架旨在实现所有这些目标   东西简单。使用Spring MVC,您不会受到手动困扰   处理请求和响应,即使您仍然可以访问   如果你需要的话。想在Spring MVC中返回JSON吗?只需添加一个   @ResponseBody注释和Spring会追加它。想要RESTful URL吗?   简单。输入验证?小菜一碟。想要将表单数据绑定到   宾语?简单。使用servlet,你必须完成所有这些工作   手动

     

使用原始servlet可能是一个很好的学习经验。它确实   有助于澄清网络框架如何让您轻松生活!

答案 2 :(得分:8)

我使用原始servlet和Web应用程序框架开发了项目。 Framework为您提供了一切,只需要设置和配置env,编码就更容易了。结果是你对web dev一无所知。 但是,使用原始api和servlet的代码可以让您获得经验并成为程序员。

答案 3 :(得分:4)

我不太常用Spring。但我不知道它会如何对性能产生重大影响。 MVC可以提供帮助,但它们可以造成混乱,额外的工作和挫败感。 对于一个程序员实现的大多数项目来说,旧的好方法已经足够了。当有多个开发人员时,MVC可以提供帮助。

对于大多数项目,我会使用普通的servlet / jsp。如果我需要可重复使用的组件,我会使用wicket。 Servlet使用JSP / freemarker / velocity或其他模板引擎进行演示。

如果您遵循Servlets / JSP的命名模式,我认为您不需要Spring MVC。

答案 4 :(得分:2)

我发现,通过添加Spring版本3+,使用所有基础知识来引导Spring Web应用程序变得更加容易。 Spring MVC的优势在于,一旦您启动了应用程序上下文和数据库连接,创建新控制器变得异常简单,它遵循更多的逻辑体系结构,新的开发人员实际上可以更容易地发现它们变得更加熟悉用它。

事实上,在我之前的工作地点,我们正在构建Java Servlet Web应用程序,但我们发现我们必须创建自己的应用程序架构或主干,这实际上是更多的工作。 Spring可以处理这一点,这意味着开发人员可以继续使用实际的应用程序逻辑,而不是过多地担心架构。