这个问题最初出现在我的脑海中“我可以在 Servlet 中使用 AWT 控件吗?”,这将显示我对这个问题的无知。
我是 JAVA 技术的新手,但经过一些阅读后,我似乎了解 AWT 控件直接连接操作系统 GUI 元素,因此无法在 Servlet 中使用或扩展 JPanel、JButton 等以注入 JSP并让浏览器呈现这些控件(替代方案可能是在 JSP 中嵌入小程序,但我不想这样做)。
我正在寻找一种使用 JSP 和 Servlet 构建自定义可重用 Web 控件的方法。
这通常是如何完成的?您能提供一些示例/链接吗?
EDIT:这是我对 Google 应用程序引擎进行的测试运行的一部分 - 因此对我来说探索 Google Web Toolkit 可能是有意义的 - 任何有关该方向的指示也将受到赞赏。
任何帮助表示赞赏!
AWT http://www.javaworld.com/javaworld/jw-07-1996/jw-07-awt.html是桌面上 UI 渲染的特定于操作系统的部分,而不是 JSP、Servlet 等所在的 Web 端。更具体一点,比如Swing http://java.sun.com/docs/books/tutorial/uiswing/(其中有您提到的 JPanels、JButtons 等 UI 组件)和SWT http://www.eclipse.org/swt/当前基于 AWT 并在其之上工作以呈现 UI 并使其按预期工作。
不幸的是,所有这些意味着您不能在网页上使用基于 AWT 的组件,因为网页(通常)与平台无关,因为它们无法准确决定 UI 部分的呈现方式,只有一个一堆标记,被视为一种请求 Web 浏览器做 Web 设计者希望的事情,但不能 100% 保证最终结果是设计者想要的。
为了在 Java 的 Web 端实现 Swing/AWT 类型的 UI 创建,需要进行大量的重新发明轮子,因为它是一个聪明的模型,就像您似乎已经知道的那样谷歌网络工具包 http://code.google.com/intl/fi/webtoolkit/它试图尽自己的一份力量让 Web 看起来更像一个桌面应用程序,而实际上它只是自动执行底层所需的 JavaScript Ajax,以使网页的行为就像一个桌面应用程序一样。另一种框架是Tapestry http://tapestry.apache.org/我个人没有使用过,但有些人认为这也是一个不错的选择。
当然还有我个人最喜欢的阿帕奇检票口 http://wicket.apache.org/它允许您真正分离 Java 代码和标记,并且它的行为也与 Swing UI 代码非常相似!事实上,对于最简单的事情来说,Swing 的 UI 组件类存在大量名称冲突。假设您熟悉编写桌面应用程序 UI 代码,我强烈推荐 Wicket,它抽象出无聊乏味的部分(Servlet、URL 解析、页面可书签性、安全性...),并将它们替换为类似的事件驱动模型(但不等于)到 Swing 的EDT http://java.sun.com/docs/books/tutorial/uiswing/concurrency/dispatch.html这通常是桌面 UI 魔法发生的地方。
虽然这完全偏离了您正在寻找的内容,但使用 Wicket,您可以创建这样一组 POJO Web 组件,您可以在任何地方重用它们,从而获得您所要求的内容。不过需要警告的是,Wicket 假设您真的知道如何使用 Java 进行编码,一些可笑的简单事情一开始可能会很乏味,但最终您应该对所得到的感到非常满意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)