0

似乎两者都可以表示一个视图,也就是说,如果您请求 a servlet,它将向您显示一个 html 页面,因此如果您请求一个jsp文件,则相同,只是它们的实现方式不同。

现在我知道,servlet不止于此。他们控制请求等等,但是看了这么多天,仍然不知道如何将它们和谐地使用在一起。

如果我需要一些逻辑,我应该把它放在 aservlet中,然后呢?如何显示来自同一文件夹中的文件servlet或来自jsp同一文件夹中的文件的数据?

换句话说,jsp当我使用时我什至需要文件servlet,如果是的话,为什么???

4

2 回答 2

2

似乎两者都可以代表一种观点,...

引入 JSP 是因为调用 Java 来呈现在其他静态 HTML 模板中动态的部分要容易得多,而不是尝试通过 servlet 打印出 Java 中的整个页面(太多println(),转义引号等。这是一团糟) . 因此,JSP 更适合呈现视图。

MVC完全是关于关注点分离:请求处理和路由、业务逻辑和应用程序数据,以及具有所有表示逻辑的视图

后来用EL (表达式语言)JSTL (Java 标准标记库)和其他封装表示逻辑的标记库增强的 JSP 更适合支持视图层。

模型代表您的应用程序数据以及您对其应用的所有业务规则。它们被实现为POJO(普通的旧 Java 对象,即不扩展或实现特定于平台的类或接口)。

Servlet 和 Filters 具有它们的请求分派功能并且固有地存在于 Java 环境中,更适合作为控制器与应用程序服务器、模型和视图进行交互。它们促进了三层之间的所有路由和数据流。

如果我需要一些逻辑,我应该把它放在一个 servlet 中,然后呢?

您的业​​务逻辑既不在 Servlet 也不在 JSP 中。这涉及到您的业务类(POJO),它尽可能地与应用程序平台的类型(这里是J2EE )隔离开来。

演示其使用的一个简单请求是要求您将应用程序移植到.Net中。啊哈!突然之间,在 Servlet/JSP 中编写所有现在无法轻松重用的业务逻辑并不是一个好主意。

因此,理想情况下,您的 servlet 将拦截客户端请求并调用一些业务类来完成它。这可能会返回一些包装为域数据对象(也称为数据值数据传输对象)的数据(如 SQL 查询的结果)。

如何呈现来自 servlet 或位于同一文件夹中的 jsp 文件的数据?

在重定向到适当的View之前,Controller servlet 会将域对象推送到某个范围可能是requestsessionapplication ,具体取决于要求)或 MVC 框架可用的复杂数据存储(如 Struts 2 中的ValueStack)。

View是您的 JSP,然后将从这些范围之一或ValueStack中提取域对象,并通过带有 JSTL 标记的 EL 或带有 MVC 框架提供的标记库的 OGNL 表达式呈现其所需的属性。

于 2013-08-04T19:47:43.517 回答
1

将逻辑与表示分开是一种很好的风格。(1) 您可以轻松更改不触及演示文稿的逻辑,反之亦然。(2) 您可以为每项任务使用正确的工具。servlet 代码中的纯 Java 有利于实现逻辑。包括 JSP 在内的模板引擎非常适合演示,其中您的工作主要是在 HTML 中,有些地方您从应用程序中插入数据。

您可以阅读 Spring 作为示例,了解如何以最佳方式使用 JSP。

于 2013-08-04T11:36:12.100 回答