1

我之所以问,是因为我只看到与 struts 或 JSF 等框架一起使用的 java bean。

是否可以通过 AJAX 请求发送和访问 java bean?

Servlet myServlet 创建并填充一个 java bean 实例,并将其设置在请求范围内。已加载的 jsp/html 页面使用 AJAX 从 myServlet 请求数据。可以以任何方式访问此 bean 吗?想了一会儿,我已经接受了这是做不到的。

如果无法做到,那么在使用 Tomcat/Servlets 和 JSP 时尝试将数据从模型(即数据库中的用户信息)异步传输到客户端时,最佳实践是什么?

4

2 回答 2

1

如果您使用通常的Java Serialization API将 javabean 序列化为字节数组甚至是 base64 编码的字符串,这在技术上是可行的。

但是,使用专有格式传输数据有什么意义呢?非 Java 客户端(例如 JavaScript!)如何能够使用序列化的 Java 对象?如今,XML、JSON 甚至 CSV 得到了更广泛的支持和接受。几乎每一种自尊的编程语言都有工具可以轻松地在 XML/JSON/CSV 和相关编程语言中定义的模型之间进行转换。例如,Java 有 JAX-RS API 可以轻松地在 javabean 和 XML 或 JSON 之间进行转换。JavaScript 显然具有对 JSON 的内置支持(猜猜 JSON 中的“JS”代表什么)。

要学习和使用基本概念,请查看以下答案:如何使用 Servlets 和 Ajax?

要了解 JAX-RS 相对于 servlet 的优势,请查看以下答案:Servlet vs RESTful

于 2013-05-16T15:43:23.770 回答
1

您仍然可以像通常那样使用 struts 或 jsf 来构造 markup(html)。然后使用通过 ajax 构建的标记,然后附加到 dom。如果你熟悉 jQuery,比如 jQuery('#selector').load('actionUrl.action'); 但是,如果您要检查 java bean,则必须将其序列化为 xml 或 json。如果您使用的是诸如 struts2 或 spring 之类的 Web 框架,则可能有一种机制可以为您执行此序列化。如果要编辑 bean,则必须序列化,然后编辑序列化的 bean,然后反序列化回 java bean。

于 2013-05-16T16:27:17.137 回答