34

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

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

4

5 回答 5

31

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

我应该注意,你可以用 java servlet 做任何你不能用 Spring 做的事情。最大的区别是设置时间。

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

于 2012-05-27T16:34:39.510 回答
23

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 应用程序,但您必须手动处理所有细节。在验证、REST、JSON 的请求/响应主体、表单绑定等典型 Web 内容方面,您将获得的帮助很少。您最终将编写大量实用程序代码来支持您的 Web 应用程序。

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

不过,使用原始 servlet 可能是一种很好的学习体验。它确实 有助于阐明 Web 框架如何让您的生活变得轻松!

于 2015-01-07T03:31:08.033 回答
13

我已经使用原始 servlet 和 Web 应用程序框架开发了项目。框架为您提供一切,您只需要设置和配置环境,编码更容易。结果是您对 Web 开发一无所知。但是,带有原始 api 和 servlet 的代码使您有机会获得经验并成为一名程序员。

于 2014-03-13T05:21:22.573 回答
5

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

对于大多数项目,我会使用普通的 servlet/jsp。如果我需要可重复使用的组件,我会使用 wicket。Servlets 与 JSPs/freemarker/velocity 或其他模板引擎一起用于表示。

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

于 2012-05-27T20:55:33.570 回答
2

我发现,随着 Spring 3+ 版本的添加,使用所有基础知识引导 Spring Web 应用程序变得更加容易。Spring MVC 的优势在于,一旦您启动了应用程序上下文和数据库连接,创建新控制器就变得异常容易,并且它遵循更多逻辑架构,新开发人员实际上可能会发现更容易熟悉它.

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

于 2014-04-10T10:44:40.157 回答