一尘不染

如何创建Java自定义Web控件?

jsp

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

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

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

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

编辑: 这是我提供给Google Application Engine的测试运行的一部分-因此,探索Google Web
Toolkit对我来说可能很有意义-对此方向的任何指教也将不胜感激。

任何帮助表示赞赏!


阅读 480

收藏
2020-06-10

共1个答案

一尘不染

AWT是桌面上UI呈现的特定于OS的部分,而不是JSP,Servlet等所在的Web端。更具体地说,诸如Swing(具有您提到的UI组件的JPanels,JButtons等)和SWT之类的东西目前基于AWT,并且在其之上工作以呈现UI并使其按预期工作。

不幸的是,所有这些都意味着您不能在网页上使用基于AWT的组件,因为(通常)网页在某种程度上与平台无关,因为它们无法完全确定UI的各个部分如何呈现,因此大量的标记被视为对Web浏览器的一种恳求,Web设计人员希望在没有100%隔离的情况下完成最终工作将是设计人员想要的事情。

由于Java Web工具是一个聪明的模型,因此已经进行了很多重新发明以在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进行编码,并且一些可笑的简单事情起初可能很乏味,但最后您应该对所获得的东西感到满意。

2020-06-10