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

在本文中,我将主要与JSF讨论基于Web的项目的各种组织结构。 开始新项目时,首先想到的是如何组织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包含子文件夹user,groups和common,包括在user / group management上下文中在不同页面上共享的文件夹。

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

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

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

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

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

相关文章

自定义scoll样式

使用伪类自定义scroll样式 效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0,maximum-scale1.0,minimum1.0,…

关于常用的编码工具如何引入jar包

myeclipse和eclipse&#xff08;差不多&#xff09;引入jar包&#xff1a; 普通项目&#xff1a; 1.对准你的项目创建一个文件夹名字尽量命名成lib&#xff08;注意要和src平级&#xff0c;不要在src下创建文件夹&#xff09;。 2.将下载好的依赖放到lib文件夹下&#xff0c; 3…

win10商店打不开_win10自带的照片查看器打不开的修复方法

我们知道win10或win7等系统都自带有默认的照片查看器&#xff0c;安装好系统后&#xff0c;我们再不用安装第三方看图软件来查看照片了&#xff0c;给我们玩电脑带来了极大的方便。但有些朋友近来向我求教照片查看器打不开&#xff0c;或打开很慢不正常的问题。下面我来跟大家介…

休眠事实:访存策略的重要性

在使用ORM工具时&#xff0c;每个人都承认数据库设计和实体到表映射的重要性。 这些方面引起了很多关注&#xff0c;而诸如获取策略之类的事情可能只是推迟了。 我认为&#xff0c;不应将实体获取策略与实体映射设计分开&#xff0c;因为除非经过适当设计&#xff0c;否则它可…

自定义checkbox样式

通过选中时添加背景图片自定义CheckBox样式 效果&#xff1a; CSS样式&#xff1a; <style type"text/css>label {width: 10%;display: flex;display: -webkit-flex;display: -moz-flex;flex-direction: row;justify-content: center;align-items: center;}label i…

安装步骤

1、安装node&#xff0c;安装全局webpack&#xff0c;npm init 生成package.json文件全局打包命令webpack b.js -o bundle.js旧版本的是webpack b.js bundle.js2、npm install webpack --save-dev 引入本项目webpack&#xff0c;package.json文件中会生成对应的webpack版本号…

fpu测试_I510400性能及温度测试详解

5月20号&#xff0c;INTEL将正式销售十代民用桌面级处理器&#xff0c;此次上市的型号相对9代与8代来说要多了很多型号&#xff0c;仅I9系列就有4个型号&#xff0c;下图有此次INTEL更新所有型号的参数&#xff1a;从上图参数可知&#xff0c;Intel有史以来I3~I9全部支持超线程…

ADFLogger的SLF4J绑定–缺少的部分

由于最好的原因&#xff0c;在我的日常工作中&#xff0c;我希望为ADF Logger Oracle ADF提供一个SLF4J适配器。 毫不奇怪&#xff0c;slf4j没有用于ADFLogger的适配器&#xff0c;但是由于ADFLogger只是Java Util Logging的轻巧包装&#xff0c;因此花了一个多小时来填补这一空…

c语言int 转bool_C++代码实现逆波兰式_C 语言

100行以内C代码实现逆波兰式逆波兰式(Reverse Polish notation&#xff0c;RPN&#xff0c;或逆波兰记法)&#xff0c;也叫后缀表达式(将运算符写在操作数之后)。算术表达式转逆波兰式例子&#xff1a;逆波兰式整体的算法流程图如下&#xff1a;下面给出我基于C 语言对逆波兰式…

css的再深入9(更新中···)

一 单位 1.px 就是一个基本的单位 像素 2.em 也是一个单位 用父级元素的字体大小乘以em前面的数字。如果父级没有就继承上一个父级直到body&#xff0c;如果body没有那就默认是16px。 3.rem 也是一个单位&#xff0c;只跟根节点<html>的字体大小有关&#xff0c;如果没…

指令的存储与执行初探

前言导读&#xff1a;从零开始构造一台二进制加法器 假设一个处理器与存储器相连&#xff0c;存储器中存放着一些指令。这些指令通过处理器发出的寻址信号被加载到处理器中&#xff0c;这个过程称为取指令。 下面通过简单的加法运算&#xff0c;来看一下指令和数据是怎么存储在…

java 中的流_Java中的流(IO

Java中的流(IO流.java.io包中定义了多个流类型(类或抽象类)来实现 输入 / 输出功能&#xff0c;可以从不同的角度对其进行分类&#xff1a;按单位可分为&#xff1a; 字节流 (一个字节一个字节的读取) 字符流 (一个字符一个字符的读取『一个字符是两个字节』)按…

python基础学习_35岁零基础学习Python编程是否能学得会并用得上

首先&#xff0c;学习编程语言并没有年龄上的限制&#xff0c;在当前的工业互联网时代&#xff0c;不论是初级职场人还是资深职场人&#xff0c;学习一门编程语言都是有必要的&#xff0c;从这个角度来看&#xff0c;35岁开始学习编程语言是完全可以的。虽然说学习Python语言并…

css的再深入7(更新中···)

1.transparent 透明的 2.placeholder 提示语 写页面 搞清结构层次&#xff0c;保证模块化&#xff0c;让他们之间不能受到影响 (1) 元素性质 (2) 标准流 浮动带来的脱离文档流撑不起父级的高度的问题可以采用清除浮动的方式消除影响&#xff0c;absolute和fixed带来的脱…

窥探JBoss Fuse 6.1的新功能

我对即将发布的Fuse 6.1版本感到非常兴奋&#xff0c;因为有很多很棒的新功能是我真正想要的&#xff0c;而且已经有一段时间了。 HAWT工具。 因此&#xff0c;这是一个快速的先睹为快&#xff0c;主要关注于新版本的Fuse Management Console&#xff08;现已由hawtio开源项目…

[C语言] 选择排序之直接选择排序的特性及实现

[C语言] 选择排序之直接选择排序的特性及实现 1、算法特性 直接选择是一种简单、不稳定的选择排序方法&#xff0c;属于最为基础的排序方法之一。 其时间复杂度最好情况为O&#xff08;n&#xff09;、最差为O&#xff08;n&#xff09;、平均为O&#xff08;n&#xff09;&…

电脑测速软件_联通你我【宽带提速】让网速飞!超实用的宽带测速提速攻略来啦!...

宅在家里&#xff0c;在家娱乐、在家办公、在家上课&#xff0c;都需要畅快的宽带网络&#xff0c;所以很多小伙伴都办理了联通宽带怎样才是正确的宽带测速姿势&#xff1f;小沃给大家介绍两种简便的测速方法&#xff0c;同时说说怎样才能完全释放宽带网速、让咱享受到真正的提…

MyEclipse - 查询使用的JDK版本

查询 MyEclipse 使用的 JDK 版本 MyEclipse 菜单->Windows->Proferences->java->Installs Jres重新设置JDK路径&#xff0c;改为开发程序时的JDK版本&#xff08;如上图&#xff09;&#xff08;我做到这一步就可以了&#xff01;我的eclipse是7.0&#xff0c;jdk…

解析什么是绝对定位,相对定位与浮动

在理解定位之前&#xff0c;先说一个概念&#xff0c;文档普通流&#xff0c;就是元素标签正常在HTML里的顺序&#xff0c;块级元素从上至下排列&#xff0c;行内元素从左到右排列。 绝对定位 绝对定位&#xff1a;absolute&#xff0c;元素相对于离它最近的已定位祖先元素进…

具有多个查询参数的Camel CXF服务

出色的Apache Camel团队忙于解决查询中多个参数的处理问题&#xff0c;这是一种解决方法。 希望该帖子将在下一版本的Camel中变得过时。 &#xff08;当前&#xff0c;我使用2.7.5&#xff09; 问题 大于1的查询参数作为null值传递给Camel-CXF服务。 假设网址中有四个查询参数…