我在大学教授 Java EE,这是一个学生问的问题。我说“不”,但我不太确定,所以我想我可以问问你们强大的开发人员。:)

基本上,我想做的是使用实体(如果它们在我的上下文中):cat getter、setter 等,就像普通的 POJO 一样。如果我使用 EJB 来使用其远程接口,实体就会与核心基础设施解耦,所以这是不行的。

我想过在我的硕士论文中写一个这样的层。如果这是一个死主意,请随时告诉我。如果不是,请告诉我您是否想要一个。

或者如果有这样的工具,请告诉我!

有帮助吗?

解决方案

在基本的现代 Java EE 应用程序中,它分为各个层,其中有 4 个基本层

+--------------------+
|   Presentation     |
+--------------------+
| Controller/Actions |
+--------------------+
| Business Delegate  |
|     (Service)      |
+--------------------+
|  Data Access Layer |
+--------------------+
|      Database      |
+--------------------+

您的应用程序应该从一开始就分成这些层,这样您就可以在任何给定时间点替换任何层,而不会影响其任何同级层。

例如,如果您将 JDBC 用于数据访问层,您应该能够将其替换为 Hibernate,而不会影响业务委托或数据库层。使用这种架构的好处是允许与多种技术协作。您的业​​务代表(服务层)应该能够与 Web 服务对话并处理应用程序,甚至无需使用浏览器!

关于使用 JSP 作为表示层,还有其他可用的技术,例如: 速度, 自由标记, 正如上面 iberck 提到的,tapestry 也有自己的渲染引擎。您还可以使用 XML + XSLT 来呈现 UI。还有一些 UI 管理应用程序可用,例如 瓷砖站点网格, ,帮助您将各种技术集成为页面的不同组件并将它们显示为一个整体。

您还可以使用轻质挥杆组件 自然语言处理 并开发桌面风格的企业应用程序。我们所需要的只是一点想象力和客户需求,我们可以使用任何东西作为表示层。

其他提示

我从未尝试过,但JSF应该可以更好地使用 Facelets 而不是JSP。

IBM已经有关它的文章

阿。看来你没问我的问题:)

Beans可以在应用程序内部提供服务。让我们说我想开发一个带有swing gui的独立java应用程序,从那个应用程序我想使用java ee app范围内的实体。

这就是我想要的无缝:创建实体,修改它们,以直观的方式删除它们,而不关心EntityManager-detachment问题(如果你远程调用EJB并且它传回一个实体对象,它将在返回前分离。)

我不想开发Web应用程序。 JSF / JSP等是强有力的集成,但在许多环境中,独立的客户端应用程序会更好。 :)

在中间看到您的评论,我发现您需要一个基于Java EE的桌面框架。

这里的答案是JSF在servlet api上工作。绝对是网络,但等等,你仍然可以在你的应用程序中嵌入tomcat或jetty!

如果您的业务层定义明确,可能性几乎是无穷无尽的,只需构建一个调用业务功能的swing层。

此外,Java EE是一个API,一些部分可以替换,或者您可以只使用它的一部分。该容器主要用于处理EJB,Servlets JNDI和其他小东西。所有这些也可以被桌面应用程序使用。

所以答案取决于您的具体目标和应用程序的实际设计/实现。

另一种选择是 Spring Framework 。 Spring提供了自己的支持,可以将实体对象绑定到视图,并在连接后处理获取/设置。有许多Spring模块可供选择。 Spring MVC和Spring Webflow都值得一试。 Spring MVC(IMO)开始使用起来比较简单,但Sring Webflow允许更复杂的导航和更多范围选项(例如:流程范围)。如果您正在寻找一本书,那么 Spring In Action 即将出版。为了使用Spring,你需要解决一些概念(例如依赖注入),但是值得花时间。

另一种选择是 Tapestry5 框架。 Tapestry是一个开源框架,用于在Java中创建动态,健壮,高度可伸缩的Web应用程序。 Tapestry补充并构建在标准Java Servlet API之上,因此它可以在任何servlet容器或应用程序服务器中使用。

Tapestry将Web应用程序划分为一组页面,每个页面都由组件构成。这提供了一致的结构,允许Tapestry框架承担关键问题的责任,例如URL构造和分派,客户端或服务器上的持久状态存储,用户输入验证,本地化/国际化和异常报告。开发Tapestry应用程序涉及使用纯HTML创建HTML模板,以及将模板与少量Java代码组合在一起。在Tapestry中,您可以根据对象以及这些对象的方法和属性创建应用程序 - 特别是在URL和查询参数方面。 Tapestry为Java Web应用程序带来了真正的面向对象开发。

目前,bean背后的意识形态已经存在于我所知道的任何适当的Java框架中。正如富人所提到的,Spring是一个优秀/伟大的全方位业务逻辑框架(请查看它的 jdbc模板类,简直太棒了 - 另一个伟大的宝石是 applicationContext.xml ,对于视图层我个人更喜欢 Apache Wicket

我不相信你应该自己做,而是找到一个适合你需求的框架并开始为它的代码库做贡献,这样你就可以从已经形成的用户群开始,你的代码将得到更彻底的编写这反过来会让你成为一个更好的程序员。

grails( http://www.grails.org/ )或griffon( http://griffon.codehaus.org/ )可能会引起关注

StringTemplate 由ANTLR背后的人Terrence Parr撰写。如果您对从模型中生成某种文本表示感兴趣,这非常好。

我使用它从同一模型生成XML,网页和点文件,效果非常好。您编写一个模板来渲染对象。该模板可以基于从模型派生的数据调用其他模板(包括递归)。 (qv 图片功能

Getters和map.get()可直接从模板中调用。该模型可以是任何POJO。 ST因其与控制器的严格分离而自豪,因此模板本身只允许很少的逻辑。

与所有这些小语言一样,这是一些新的东西,可能不是你想要的东西。这对我来说非常合适。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top