由于对设计模式和体系结构不熟悉,我很难向他人确切说明我的最新应用程序是如何设计的。我已经在认为它是纯n层,纯MVC和表示层中具有MVC的n层之间切换。目前,我认为后者是正确的,但我希望更多有经验的开发人员能有所作为。
customerBO.getById(12)
,该对象将在调用一个或多个DAO方法(即)之前再次执行业务逻辑/验证customerDAO.getById(12)
。BO向控制器返回CustomerVO的列表request.setAttribute("customers", customers);
)准备属性,并选择要使用的.jsp文件,该文件随后将迭代列表并将XHTML呈现回浏览器。表示层 :当前使用我认为是MVC的Web实现:servlet(控制器),jsp(视图)和我自己的OO
XHTML表单(即CustomerForm)实现位于此处。通过切换此表示层,而无需在下面的层中进行任何更改,应该可以使用Swing / JavaFX /
Flex GUI。
逻辑层
:分为两层,最上面是业务对象(BO)。负责业务逻辑,但是除了输入验证外,我在这里没有发现太多其他内容,因为应用程序主要由简单的CRUD动作组成…在许多情况下,这些方法只是在DAO层上调用具有相同名称的方法。
具有CRUD方法的DAO类,再次与下面的数据层联系。还具有convertToVO(ResultSet
res)方法,该方法从数据库执行ORM并处理值对象(的列表)。所有方法都将值对象作为输入,即customerDAO->
save(voter),如果成功,则返回更新的表决器,如果失败,则返回null。
数据层 :在底部,数据存储在数据库中或作为XML文件存储。除了一些MySQL存储过程和触发器之外,我这里没有“编码”任何东西。
我意识到存在诸如Java的Struts之类的MVC框架,但是由于这是我的第一个Java
Web应用程序,因此我试图对事物的工作原理有更深入的了解。回顾过去,希望您能回答我偶然发现的一些问题。
我不确定当模型是逻辑层中的业务对象返回的列表/ VO时是否可以调用此n层MVC
这些都是非常好的模型。我也认为Struts中的ActionForms是模型。Struts用于表示/建模HTML表单的是ActionForms。
在MVC中,该视图应该观察模型并进行更改更新,但这在Web应用程序中是不可能的
是的,关于是否可以在Web应用程序中拥有真正的MVC,这是一个有争议的问题。
一个人应该总是有一个业务层吗?
这取决于应用程序的类型。一些应用程序是数据库驱动的,本质上是数据库的UI。在这种情况下,几乎不需要业务逻辑。
数据层:
存储过程实际上并不是数据层代码的一部分。您应该创建由业务对象调用的数据访问对象(DAO)。DAO调用存储过程。此外,DAO接口不应向业务对象提供有关数据存储位置的任何提示,无论是数据库,文件系统还是来自某些Web服务。
使用Fork-Join框架的资源,创建一个同步多线程系统,从三个文本文件中形成一个最大长度的单词集合。不要使用中间集合来读取文本。在本例中,工作由存储在MaxLengthWord类的arr字段中的数组表示。createSubtasks()方法递归地将任务分成更小的工作部分,直到每个工作部分都小于阈值。
在我的JavaSpringMVC应用程序中,我有一个返回用户的DAO。DAO经常被命中,所以我尝试缓存用户。 我是这样做的(如下),但我不知道我是否做对了。 我在想使得它只运行一次,并且所有其他时间的值都将从缓存中加载。 和上的和会在发生更新或删除时清除缓存。 那是正确的吗?如果是,什么时候使用合适?
问题内容: 我想在Java中使用池化连接(因为每个线程创建一个连接非常昂贵),所以我正在使用该对象。我正在跨线程保留我的数据源。因此,我在整个应用程序中仅使用一个数据源,如下所示: 现在,我已经创建了数据源,然后在每个单独的线程中执行以下操作: 我猜我很困惑, 这真的 是在 获取池连接吗? 这个线程安全吗?我注意到PooledConnection具有诸如notify()和wait()之类的方法…这
我是DSA的初学者,最近几天我一直在尝试使用邻接列表找到图形的正确实现。 下面我给出了我认为邻接列表是如何实现的整个代码。 我从头开始创建了一个SiinglyLinkedlist。并且我正在使用一个Hashmap来改进时间复杂性。 Hashmap中的整数键充当顶点&在其值中包含一个Linkedlist。 在顶点中,我存储了整数ID,在Linkedlist中,我存储了该ID的所有好友名。 图中有3种
每次我在手机上运行应用程序都会崩溃。有什么不对劲吗?它说不幸的是“appname”已经停止工作。我也尝试过其他方法来检查Google Play服务,但它总是崩溃。我更新了我的google play服务,让一个运行良好的google map v2完美运行。这个代码有什么解决方案吗?它在我运行android 4.1.2的手机和我的AVD上崩溃。
问题内容: 我需要检查我的应用程序是否在更新时启动,因为我需要创建一个仅在首次安装该应用程序时才出现的视图,以便在更新后再次出现。 问题答案: 您可以将值(例如,当前应用程序版本号)保存到其中,并在每次用户启动应用程序时对其进行检查。 在迅速-2版本看起来是这样的: 在迅速-3版本看起来是这样的: