【问题标题】:How to create Java Custom Web Controls?如何创建 Java 自定义 Web 控件?
【发布时间】:2010-10-21 19:18:10
【问题描述】:

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

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

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

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

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

任何帮助表示赞赏!

【问题讨论】:

    标签: java jsp servlets awt web-user-controls


    【解决方案1】:

    AWT 是在桌面上呈现 UI 的特定于操作系统的部分,而不是在 JSP、Servlet 等所在的 Web 端。更具体地说,像Swing(其中包含您提到的那些JPanels、JButtons 等作为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 进行编码,一些可笑的简单事情一开始可能很乏味,但最终您应该对所得到的感到非常满意。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-11
        相关资源
        最近更新 更多