Javaweb开发基本项目结构

2023-11-01

学校里老师都没讲这个,所以浅讲一下

web项目尽量要照这种格式,方便扩展和阅读

比方说这个项目:

api层/controller/servlet/logic层(接口层)

此层可以说是最外层,也是与前端直接接触的层,它会直接使用其他层的代码处理数据

这层用来处理前端传入的数据进过处理后返回给前端

common层(配置层)

如其名,一些基本的处理.比方说对于404页面的处理等等

config层(配置层)

放置配置比方说swagger或者异常处理等等

dao层(数据访问层)

具体作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求。

dto层(数据规范化层)

DTO:数据传输对象(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。简单来说,当我们需要一个对象10个字段的内容,但这个对象总共有20个字段,我们不需要把整个PO对象全部字段传输到客户端,而是可以用DTO重新封装,传递到客户端。此时,如果这个对象用来对应界面的展现,就叫VO。

简单来说就是把查出来的数据库字段删去一些部分,返回规范化后的数据

service层(服务层)

具体作用是处理业务逻辑的,设计service时候,其书写规范是,需要先写一个接口,然后再去实现。其中接口声明了具体业务的处理方法,方法的实现由具体的业务类来完成。

比方说:

 而在接口中

 entity/models层(实体层)

  • 用于存放实体类,与数据库中的属性值基本一致,实现getter和setter方法。
  • 一般数据库一张表对应一个实体类,类属性同表字段一一对应。
  • 简单来说,就是将数据表用代码中的数据类型重新表示
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javaweb开发基本项目结构 的相关文章

  • Java Swing BoxLayout 忽略 AlignmentX

    在下面的代码中 通过调用setAlignmentX with Component LEFT ALIGNMENT我希望在居中的滑块上获得左对齐的标签 由于某种原因 标签也居中 似乎与传递给 setAlignmentX 的值无关 我必须向 se
  • Android Toast 消息不起作用

    我正在通过 Andengine 为 Android 开发游戏 我有 MainActivity 类和 GameScene 类 我在 GameActivity 中使用 Toast 消息 它正在发挥作用 Toast makeText this H
  • 不支持的字段:将瞬间格式化为日期 ISO 时的年份[重复]

    这个问题在这里已经有答案了 我正在尝试将 Instant 格式化为 ldap 日期 ISO8601 但在 f format Instant now 处失败 String input 20161012235959 0Z DateTimeFor
  • 是否可以使用 Java 读写 Parquet,而不依赖 Hadoop 和 HDFS?

    我一直在寻找这个问题的解决方案 在我看来 如果不引入对 HDFS 和 Hadoop 的依赖 就无法在 Java 程序中嵌入读写 Parquet 格式 它是否正确 我想在 Hadoop 集群之外的客户端计算机上进行读写 我开始对 Apache
  • Java 小程序在 Mac 上闪烁

    这个问题很奇怪 问题并非在每个平台上都会发生 我在使用 MacOSX 的 Google Chrome 中出现了这种情况 但在 Safari 中却没有出现这种情况 对于使用 Windows 的朋友来说 在 Google Chrome 上运行得
  • 如何用 C 语言通过 HTTP 协议发送图像?

    我是一名正在做网络服务器练习的学生 我需要一些帮助 我的网络服务器在文本页面上运行良好 但是每当浏览器发送一个 GET img jpg HTTP 1 1请求 我不知道如何处理 我听说 HTTP 协议是基于文本的 那么如何在 HTTP 响应中
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • Maven WebApp META-INF context.xml

    我正在使用 Maven 3 并且尝试在 webapp 文件夹下添加 META INF 文件夹 所以我正在尝试执行以下操作 src main webapp META INF context xml WEB INF 下面是我的 POM 文件
  • 绘制平滑曲线

    我想创建更平滑的曲线 而不仅仅是线角 这是我现在画的图 这是我的代码 case FREEHAND float pts float ptk ptk new float 2 imageMatrix invert inv if mCurrentS
  • 从 CLI 部署 Maven 项目?

    在 IDE 中构建并运行良好 cd home thufir NetBeansProjects HelloMaven JAVA HOME usr lib jvm java 8 openjdk amd64 home thufir local s
  • JERSEY:错误跟踪:java.lang.IllegalStateException:实体输入流已关闭

    我正在使用 Jersey 2 x 以下是我的控制器 GET Path id Produces application json public Response getUser PathParam id int userId Context
  • 避免 @Secured 注释的重复值

    我正在尝试使用以下方法来保护我的服务方法 Secured如下 public interface IUserService Secured ROLE ROLE1 ROLE ROLE2 ResponseEntity saveUser Creat
  • Time.valueOf 方法返回错误值

    我使用 Time valueOf 方法将字符串 09 00 00 转换为 Time 对象 如下所示 Time valueOf LocalTime parse 09 00 00 当我调用 getTime 来显示我得到的值时 28800000
  • 了解Kafka流groupBy和window

    我无法理解 kafka 流中的 groupBy groupById 和窗口的概念 我的目标是聚合一段时间内 例如 5 秒 的流数据 我的流数据看起来像 value 0 time 1533875665509 value 10 time 153
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • 检查按钮是否可用?如果没有,请等待 5 秒钟,然后再次检查?

    基本上我想看看此刻是否可以单击按钮 如果没有我想再试一次 所以我需要某种 goto 函数来返回到代码的前一行 尽管我怀疑我写得非常糟糕 但它本来可以做得更容易 try driver findElement By xpath button i
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • 从 InputStream 中删除换行符

    我喜欢从一个文件中删除所有换行符 对于 n 和 r n java io InputStream 在读取文件时 相应的方法如下所示 param target linkplain File return linkplain InputStrea
  • Unicode(希腊语)字符存储在数据库中,例如“??????”

    数据库中的希腊字符就像问号 我找不到解决办法 我使用 Java Swing 开发了一个应用程序 但是当我在 MySQL 中插入希腊字母时 就像问号一样 我将数据库排序规则更改为 utf8 并将列也更改为 utf8 我的项目编码设置为UTF

随机推荐

  • networkx报错:TypeError: object of type 'dictionary-keyiterator' has no len()

    TypeError object of type dictionary keyiterator has no len 这是networkx1 x和network2 x不同导致的 在node集合的基础上加list 即可 更多 https bl
  • Sigmoid激活函数和ReLU激活函数的区别:

    Sigmoid激活函数和ReLU激活函数的区别 特性 Sigmoid 激活函数 ReLU 激活函数 梯度弥散 只有在0附近的时候有比较好的激活性 在正负饱和区 其梯度都接近于0 导致梯度弥散 在大于0的部分梯度为常数 不会出现梯度弥散 单侧
  • 第一篇:UE4如何输出全景图,和自定义截图

    首先 向大家介绍一下UE4的两种输出全景图的方法 一种是利用UE4自带的输出插件 一种是NVIDIA的插件 一 UE4自带插件 1 打开Edit gt Plugins 选择Stereo Panoramic Movie Capture插件导入
  • QT 学习之键盘事件( keyPressEvent)

    Qt keyPressEvent keyPressEvent是QWidget里面的函数 所以凡是继承自QWidget的类都可以通过实现这个函数来完成对按键事件的响应 要让当前的widget能够响应按键事件 最先需要做的事情是 调用 setF
  • golang知识点

    一 Go的GC机制 1 Go的垃圾回收机制采用了标记 清除算法和三色标记法 垃圾回收器会在程序运行期间定期地扫描堆上的对象 并将其标记为 活动对象 或 垃圾对象 当所有的活动对象都被标记后 垃圾回收器会清除所有未标记的对象 这个过程被称为
  • MyBatis的动态SQL语句

    文章目录 1 动态SQL之
  • win10 修改java环境变量不生效

    Microsoft Windows 版本 10 0 19045 2728 c Microsoft Corporation 保留所有权利 C Users Administrator gt java version C Users Admini
  • 宝塔linux面板,修改root密码

    root 密码忘记了 但宝塔vps的密码没忘记 翻完宝塔linux面板都没看到有修改系统root密码的选项 后来尝试定时任务shell 也没成功 最终快绝望的时候 发现通过添加插件成功修改密码并登陆终端 详情如下 系统工具 linux工具箱
  • 现阶段Java高可用集群架构与微服务架构的简单分析

    可能大部分读者都在想 为什么在这以 dubbo spring cloud 为代表的微服务时代 我们还要整理这种已经 过时 高可用集群架构 本人工作上大部分团队都是7 15人编制的开发团队 对应的公司项目也大都是中小型项目 最大的项目 PV
  • 【猿人学WEB题目专解】猿人学第20题

    据说 看我文章时 关注 点赞 收藏 的 帅哥美女们 心情都会不自觉的好起来 前言 作者简介 大家好我是 user from future 意思是 来自未来的用户 寓意着未来的自己一定很棒 个人主页 点我直达 在这里肯定能找到你想要的 专栏介
  • 如何排查工程中的死代码(devops为例)

    前言 死代码 Dead Code 指的是在程序中没有被执行过或者已经不会被执行到的代码 它们可能会导致程序体积变大 影响程序的性能和可维护性 为了减少死代码的存在 我们需要在工程中进行死代码的排查和清理 本文将介绍一些排查工程中死代码的方法
  • Linux中glob()、globfree()、getcwd()函数

    Linux中glob 与globfree 函数 文章目录 一 glob 函数 二 globfree 函数 三 getcwd 函数 四 代码演示 总结 一 glob 函数 glob 函数作用 glob 函数用于文件系统中路径名称的模式匹配 函
  • 一些个人经验

    如果是运行时动态随机生成 dataset splitting training val test 而不是事先生成静态 splitting 就保存一下 splitting indices 后面可能 case study 的时候会用到 数据集足
  • 静态代码块、动态代码块、构造方法

    类与对象 类 描述事物属性和行为 属性 私有化 行为 公开化 对象 就是类的一个具体实例 代码块 静态代码块 发生在创建对象之前 时机 随着类的加载而加载 构造代码块 发生在创建对象之前 类加载之后 构造方法 创建对象 发生在构造代码块之前
  • 6.21.4upload第4关

    trim去空 deldot去点 strrchr strtolower str ireplace 上传htaccess文件再上传webshell jpg文件 更换phpstudy5 2 17版本
  • Docker 容器重命名

    命令 docker rename oldName newName 例子
  • 云计算基础——云存储技术简介

    云存储的种类及其合适的应用 可以把云存储分成块存储与文件存储两类 块存储 快速更改的单一文件系统 针对单一文件大量写的高性能计算 HPC 文件存储 文件及内容搜寻 Tier 2 NAS 多文件大量写入的应用 数据大量读写的应用 多个使用端都
  • GA遗传优化算法(附MATLAB源码)

    优化算法之遗传算法GA 遗传算法 Genetic Algorithm GA 最早是由美国的 John holland提出 主要模拟生物进化论的自然选择和遗传学机理生成计算模型 是一种通过模拟自然进化过程搜索最优解的方法 将问题的求解过程转换
  • 帆软图表下钻后,设置为数据分析模式

    在图表的特效 gt 网络报表中 添加一个op参数 值设置为 公式 view 因为参数会在URL后添加 op view
  • Javaweb开发基本项目结构

    学校里老师都没讲这个 所以浅讲一下 web项目尽量要照这种格式 方便扩展和阅读 比方说这个项目 api层 controller servlet logic层 接口层 此层可以说是最外层 也是与前端直接接触的层 它会直接使用其他层的代码处理数