jee web_您基于JEE的Web项目的结构是什么?

jee web

在这篇文章中,我将尝试讨论基于Web的项目的各种组织结构,主要是使用JSF。 开始新项目时,首先想到的是如何组织Java包? 想象一下,您开发了一个基于Web的用户和组管理系统。 很长时间以来,我使用了以下Java包结构,该结构将Bean类与模型类分开(模型类有时称为视图助手)。

结构Java1

我认为这是一个不错的布局,但是如果您有大型项目,这还不够好。 为什么? 尽管某些Bean和模型类属于同一类,但它们彼此之间的距离很远。 您必须在Bean和模型包之间导航并滚动IDE。 这会占用一些时间。 多年来,我意识到根据逻辑/语义含义对类进行分组可能会更好。 这就是说,模型包和类与它们所属的bean位于同一高级包中。 常用的bean和模型类可以放在一个额外的包中,例如common。

结构Java2

但请注意这里。 一些开发人员更喜欢炸毁bean的数量。 如果严格遵循MVC模式,则需要支持bean,控制器bean和视图接口bean。 支持bean负责组件,值绑定和事件委托。 他们将业务逻辑的执行委托给控制器bean。 控制器Bean与基础后端系统进行通信。 对概念的这种精细调整的分离提高了小型软件的可测试性,但是它导致了很多类,并且在某些情况下会使项目的结构复杂化。

结构Java3

网页是什么? 这里或多或少有两种相同的方法。 第一个遵循本文中介绍的方法。 有三个主要文件夹:模板,视图和部分。 模板是在(几乎)每个页面上使用的facelets模板。 视图是整页。 它们绑定到浏览器中的URL。 视图使用模板。 部分是页面上的小块。 视图包含各节(请考虑ui:include)。 结构如下:

structureXhtml1

您还可以在此处看到一个共享文件夹,其中包含一些常用的东西。 用户和组的页面包含一个公共部分dialogs.xhtml。 它位于/ sections / shared / usergroups下面。 正如我的负责人所说,我意识到,将页面和部分组合在一起时,将它们分组是一种更好的方法。 因此,下一个结构具有两个主要的文件夹页面和模板。 节与包含它们的页面位于相同的上级文件夹中的包含之下。

structureXhtml2

现在,在IDE导航方面,该分组看起来更加高效。 同样清楚的是哪些部分属于同一部分。 在上一张图片中,您还可以看到文件夹usergroups包含子文件夹用户,组,并且在用户/组管理的上下文中,common包含在不同页面上共享的文件夹。

您首选的结构是什么? 分享你的意见。 欢迎任何反馈。

参考: 基于JEE的Web项目的结构是什么? 来自我们的JCG合作伙伴 Oleg Varaksin,来自“软件开发思想”博客。

翻译自: https://www.javacodegeeks.com/2013/11/what-is-your-structure-of-jee-based-web-projects.html

jee web

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数字信号处理】希尔伯特变换系列1之相位处理(含MATLAB代码)

利用希尔伯特变换进行相位处理 相位的频域处理 在讨论“理想DFT滤波”时,我们注意到通常信号的相位将保持不变,这意味着不会发生由非线性相位引起的失真。然而,应该总是考虑相位响应(或者至少意识到它的存在)和幅度响应。对于所有频率,应该考虑幅度和相位。那么一个明显的…

【数字信号处理】分贝dB、dBm的概念及其日常使用中常见的错误

分贝的基本概念 首先,分贝的英文为decibel,单位为dB;其中bel表示声音计量单位(单位为Bel),并且有 1 dB ⁡ = 1 / 10 Bel ⁡ 1\operatorname{dB}=1/10\operatorname{Bel} 1dB

日期使用

时区糟透了。 特别是夏令时。 我不介意像与此行为相关的编程错误那样,不停移动时钟或失去一个小时的睡眠。 更糟糕的是Java的旧日期/时间API。 Java社区通过JSR 310公开承认了这一点,该版本取代了Java Date&Time API,但是由于其复…

【数字信号处理】复数的另一种思考之平均风向测量(Python实现)

平均风向和风速测量 气象站每分钟测量一次风向。编写一个程序来指示五分钟内的平均方向。在以下几组读数上试一试:12、15、13、9、16 358、1、359、355、2 210、290、10、90、170 修改您的程序以处理风速输入以及方向。代码 import cmath from matplotlib.pylab import * tau…

开源mindmap_Java开发人员访谈的MindMap

开源mindmap多年来,我在许多Java开发人员的访谈中担任小组成员。 之前,我曾写过一篇标题为成功参加软件工程师技术面试的7大技巧的文章,其中涵盖了很少的一般准则。 在本文中,我将分享一个思维导图,其中包含Java开发人…

【数字信号处理】希尔伯特变换系列2之基于定向多普勒超声的胎儿心率监测(含MATLAB代码)

希尔伯特变换的应用 希尔伯特变换在许多工程应用中都有使用,此处主要介绍两种用法。 首先,它解决了多普勒超声胎儿心率监测器中出现的运动方向不明确的问题。第二,它与众所周知的解析信号联系起来了,在极坐标中,它能够找到信号的瞬时幅度和瞬时频率。 基于定向多普勒超…

轻松地与Java完全集成

这里介绍了如何编写完整的堆栈数据库Web应用程序,而无需使用SQL,HQL,PHP,ASP,HTML,CSS或Javascript,而是使用Vaadin的UI层和Speedment Stream ORM完全依赖Java。 是否曾经想过快速创建连接到您…

MATLAB读取结构体mat文件报错已损坏

遇到一个挺奇怪的事情,用MATLAB R2021a保存下来的.mat文件,里面是一个结构体;结果在MATLAB R2018b中load这个mat文件,提示“无法读取,改文件可能已损坏” 初步猜想可能是MATLAB版本的问题,正好虚拟机里有便…

【自适应盲均衡11】基于Volterra级数的双线性CMA盲均衡算法与MATLAB仿真(采用16QAM信号模型)

结果预览 16QAM信号的星座图: 输入信号的星座图: Volterra-CMA盲均衡算法的MSE曲线: 均衡后的星座图: 一、Volterra级数 由于多方面的原因,Volterra级数模型是非线性系统广泛采用的模型。简单起见,本文仍采用线性系统进行测试。 Volterra级数展开是由非递归级数组成…

矩形和升余弦成型下OQPSK信号的调制与解调仿真(最大功率法定时)

关注公号【逆向通信猿】更精彩!!! 仿真结果预览 OQPSK矩形和升余弦成型误码率曲线: 关于QPSK信号的仿真在之前的博客里已经 一、OQPSK调制原理 在QPSK体制中,它的相邻码元最大相位差达到180。由于这样的相位突变在频带受限的系统中会引起信号包络的很大起伏,这是不希…

java web 刷新_Java Web项目的保存和刷新

java web 刷新如何配置计算机以保存并刷新Java Web项目? 当您向开发人员提出此问题时,答案以“哦,好吧……”开头,并以某种可行的方式继续描述。 每个人都有自己的方式。 首先–为什么需要这个? 因为执行复制和重新启…

【数字信号处理】希尔伯特变换系列3之解析信号(含MATLAB代码)

希尔伯特变换&解析信号 你可能从未将DFT应用于复信号,因此你的数据将是实的,这样做的一个影响是DFT是对称的。在许多应用中,正频和负频分量都必须被处理——参见早期理想的DFT滤波,其中正频和负频分量都必须以相同的方式处理,以便滤波后的数据是实的(根据需要)。然而…

Java SE 11(18.9)中的API更新

Java SE 11也被命名为18.9(基于使用发布年份和月份的新命名方案),预计将在9月的最后一周发布GA。 频繁发布新JDK版本的新方法是允许语言创建者引入新功能,并向开发人员社区更快地进行API更新。 通常,API更新不会引起注…

【数字信号处理】卷积和乘法系列1之引言(含MATLAB代码)

引言 要了解 DSP 的许多方面,以及使用傅里叶分析 (FA) 的其他应用,以下几点很重要 了解卷积的过程要知道时间/频率域中的卷积/乘法 等价于 频域/时间域中的乘法/卷积会应用这些知识卷积是一个会引起很多混淆的过程,但使用采样数据(离散)比使用连续时间数据更容易理解。这是…

【数字信号处理】卷积和乘法系列2之AM调制、幅度谱和相位谱(含MATLAB代码)

关注公号【逆向通信猿】更精彩!!! 案例2的应用——幅度调制(AM) 能够预测卷积两个信号的结果是很有用的。一个明显的例子是 AM 调制(参见上一节 和下面的图 1),其中载波通过混合(混频)由基带信号调制。在频域中,这两个信号的频谱是卷积的。 在图1中,显示了幅度调制…

java方法传对象参数_Java方法中的参数太多,第2部分:参数对象

java方法传对象参数在上一篇文章中 ,我研究了与方法和构造函数的长参数列表相关的一些问题。 在那篇文章中,我讨论了用自定义类型替换基元和内置类型以提高可读性和类型安全性。 这种方法使方法或构造函数的众多参数更具可读性,但并没有减少参…

VB语言与测量程序设计之水准网平差程序(任务8-3含代码,完整工程文件见CSDN资源)

一、程序总体设计 二、程序界面设计 对象属性设置 三、程序代码 矩阵计算类代码 文件名:Matrix.cls 操作矩阵的类 Matrix Option Explicit Const eps As Double = 0.00000001 缺省精度 Dim nRo

【数字信号处理】卷积和乘法系列3之傅里叶变换对

关注公号【逆向通信猿】更精彩!!! 声明:底部的小广告标签并不是博主所加!! 傅里叶变换对(Fourier Transform pairs, FTP) 我们考虑的第一个FTP从时间域中的梳状函数开始,这是一个简单地由相同幅度的规则放置的“冲激(spike)”组成的信号。下面的程序在时域中生成这样…

Gradle教程

1.简介 在本课程中,我们将学习Gradle ,它是一个构建工具和一个依赖管理系统,与Maven和Ant非常相似,并且是专门为构建基于Java的项目而设计的。 与Maven和Ant构建系统不同,Gradle不使用XML。 它实际上是基于Groovy构建…

【定时同步系列6】Gardener误差检测算法原理

关注公号【逆向通信猿】更精彩!!! 引言 离散时间符号定时同步方法 如下图所示为比较常用的一种符号定时同步的离散时间方法,通常由三个基本单元组成离散时间锁相环,分别为:定时误差检测器(TED)、环路滤波器和插值控制。其中,插值器和TED作用相当于鉴相器,插值控制相…