惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Cloudbric
Cloudbric
P
Palo Alto Networks Blog
T
Threatpost
T
Tor Project blog
T
Tenable Blog
AWS News Blog
AWS News Blog
Project Zero
Project Zero
L
LangChain Blog
Cyberwarzone
Cyberwarzone
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
C
CERT Recently Published Vulnerability Notes
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Latest
Security Latest
云风的 BLOG
云风的 BLOG
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
MongoDB | Blog
MongoDB | Blog
aimingoo的专栏
aimingoo的专栏
K
Kaspersky official blog
Jina AI
Jina AI
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
D
DataBreaches.Net
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
Recorded Future
Recorded Future
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Secure Thoughts
TaoSecurity Blog
TaoSecurity Blog
P
Privacy & Cybersecurity Law Blog
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
IT之家
IT之家
Forbes - Security
Forbes - Security
The Hacker News
The Hacker News
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
Y
Y Combinator Blog

博客园 - Augur

又开始使用,学习 Integer和int Mybatis的学习1 初次安装与错误排除 知乎的 Java开发中的23种设计模式(转) vo与po entityVo对象与entity对象 网上Java总结 dto vo html css col-md-offset VUE - 相对路径 转:防止跨站攻击,安全过滤 Java中的包装数据类型 一些名词 数据表 键值定义 mysql 表结构 楚乔传 Princess Agents Java学习08 (第一遍) - SpringMVC
dao
Augur · 2017-12-14 · via 博客园 - Augur
从名字上看:
UserDAO数据层接口,上接服务层,下接数据库
UserDAOImpl 是UserDAO的实现类,具体操作数据库的
UserService服务层,上接用户层,下接数据层
UserServiceImpl 服务层UserService的实现类
User**Action用户层,根据用户请求调用service
比如,用户在网页上点击登录,我们把这个请求叫login吧
User**Action会接到这个action请求,发现这是个登陆请求login,这里可以进行一下初步的验证,比如用户名格式,密码格式,如果没问题,那么它就调用service中的login登陆方法,在UserServiceImpl进行验证,比如用户名和密码是否正确。怎么验证呢?UserServiceImpl会调用DAO层的方法,DAO会从数据库中查询。
例如用户是张三,密码是111,的用户登录
User**Action接到请求,请求类型是login,用户名张三,密码111,
做初步判断,用户名不是空的,密码不是空的,格式正确,好,调用service中的方法,传递参数是张三和111
service接到命令,调用DAO的方法,传递参数张三,DAO链接数据库,根据张三这个用户名查到用户信息(包括用户密码),如果没有,证明用户名写错了或者没注册。如果有,那么把结果返回给service
service接到返回的内容,看一下DAO返回的密码是不是111,如果是,那就登陆成功,如果不是,提示密码错误。将处理结果返回给User**Action,
User**Action接到返回结果,在显示到页面上给用户看。
你也可以问为什么分这么多层?不一起直接写?
可以直接写,但是很乱。这样分层,把逻辑都分割,很多地方都可以共用。
还拿登陆和注册来说,登陆的时候要用到根据用户名查询细信息,注册的时候也要判断用户名是否存在。如果你不分层,都写在User**Action里,是不是同样的代码要写两次呢?
而且出了问题也不好查找出在哪里。比如404错误,通常是找不到页面,可以很快的知道是在User**Action里面,数据库操作错误,马上就知道是在DAO里面