4

这个问题最初在我的脑海中是“我可以在 Servlet 中使用 AWT 控件吗?” ,这将显示我对这个主题的所有无知。

我是 JAVA 技术的新手,但经过一番阅读,我似乎了解 AWT 控件直接连接 OS GUI 元素,因此无法在要注入 JSP 的 Servlet 中使用或扩展 JPanel、JButton 等并让浏览器呈现这些控件(另一种方法可能是在 JSP 中嵌入一个小程序,但我不想这样做)。

我正在寻找一种使用 JSP 和 Servlet 构建自定义可重用 Web 控件的方法。

这通常是如何完成的,您能否提供一些示例/链接?

编辑:这是我对 Google 应用程序引擎进行的测试运行的一部分 - 所以探索 Google Web Toolkit 对我来说可能是有意义的 - 任何指向该方向的指针也将不胜感激。

任何帮助表示赞赏!

4

2 回答 2

4

AWT是在桌面上呈现 UI 的特定于操作系统的部分,而不是在 JSP、Servlet 等存在的事物的 Web 端。更具体地说,像Swing(它有你提到的那些 JPanel、JButton 等作为 UI 组件)和SWT目前基于 AWT 并在它之上工作以呈现 UI 并使其按预期工作。

不幸的是,这一切意味着您不能在网页上使用基于 AWT 的组件,因为网页(通常)与平台无关,因为它们无法准确决定 UI 的各个部分是如何呈现的,只有一个一堆标记被视为对 Web 浏览器的一种请求,让他们做 Web 设计师希望做的事情,但没有 100% 保证最终结果将是设计师想要的。

为了在 Java 的 Web 端实现 Swing/AWT 类型的 UI 创建,已经进行了很多重新发明,因为它是一个聪明的模型,就像您似乎已经知道Google Web Toolkit试图尽其所能使 Web 看起来更像桌面一样应用程序,而实际上它只是自动化底层所需的 JavaScript Ajax 以使网页表现得像桌面应用程序一样。另一个框架是Tapestry,我没有亲自使用过,但有些人认为它也是一个不错的选择。

当然还有我个人最喜欢的Apache Wicket,它可以让您真正分离 Java 代码和标记,它的行为也与 Swing UI 代码非常相似!事实上,对于最简单的事情,Swing 的 UI 组件类存在大量名称冲突。假设您熟悉编写桌面应用程序 UI,我强烈推荐 Wicket,它将枯燥乏味的部分(Servlet、URL 解析、页面书签功能、安全性......)抽象出来,并用类似的事件驱动模型(但不等于)到 Swing 的EDT,这是桌面 UI 魔法通常发生的地方。

虽然这与您正在寻找的东西完全不同,但使用 Wicket,您可以创建这样一组 POJO Web 组件,您可以在任何地方重用它们,从而得到您想要的东西。不过提醒一句,Wicket 假设你真的知道如何使用 Java 进行编码,一些可笑的简单事情一开始可能很乏味,但最终你应该对你所得到的感到非常满意。

于 2009-04-25T15:20:10.793 回答
1

在 JSP 中,您可能正在寻找自定义标签。自定义标记是创建可重用代码组件以在 JSP 页面显示中使用的方法。那里有一些非常好的,例如那些在struts2 框架显示标签库中找到的。

但是您可以编写自己的或使用新功能扩展现有的。

于 2009-04-25T15:19:34.850 回答