Raw Servlet vs. Spring MVC

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

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

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

我应该注意,对于使用Spring无法做到的java servlet,你无能为力。 最大的不同是设置时间。

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

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

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框架旨在使构建Web应用程序变得更加容易,这些应用程序可以更轻松地处理HTTP请求和响应。 大多数Java Web框架(包括Spring MVC)都在后台使用servlet。

您可以使用servlet编写Web应用程序,但您必须手动处理所有详细信息。 对于典型的Web内容,例如validation,REST,JSON的请求/响应主体,表单绑定等,您将得到很少的帮助。您最终将编写大量实用程序代码来支持您的Web应用程序。

另一方面,Web框架旨在使所有这些内容变得简单。 使用Spring MVC,您可以手动处理请求和响应,即使您仍然可以在需要时访问它们。 想在Spring MVC中返回JSON吗? 只需添加@ResponseBody注释,Spring就会附加它。 想要RESTful URL吗? 简单。 输入validation? 小菜一碟。 想要将表单数据绑定到对象? 简单。 使用servlet,您必须手动完成所有这些操作。

但是,使用原始servlet可以提供良好的学习体验。 有助于澄清Web框架如何让您轻松生活!

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

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

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

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

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