dao service view pojo utils tools都放什么? jsp的(MVC)三层架构入门

java的(MVC)三层架构(dao、service、view)

dao service view pojo utils tools都放什么? jsp的(MVC)三层架构入门

Java EE典型架构,分层的目的:高内聚,低耦合。

一般java都是三层架构   (还可加一个:工具类:util比如处理多语言功能,网站非法信息过滤等等功能的代码集);

三层架构体系,是逻辑上的三层,按照完成功能不同,所做事宜不同,将项目分为三个层次

1:数据访问层(dao) 2:业务逻辑层(services)  3:界面层(view)

视图层view: 涉及技术:HTML/JSP         主要职责:与用户进行交互 业务逻辑层;

service层:使用JDBC技术   主要职责:完成业务功能 数据访问层;    

Dao层:使用JDBC技术    主要职责:对数据库表进行CRUD操作。

view:视图。

这个很容易理解,其实view层就是用户用户可以看到的东西。后台怎么处理不关心,只关心怎么样想用户展示信息。

view层的功能:

1.与用户进行交互

2.收集用户信息

3.展示查询结果

Service 做相应的业务逻辑处理 ,又称业务逻辑层。

Service 层功能:

1.处理业务功能

2.调用 dao数据

3.给视图层提供结果

4.接收视图层的数据

Action是一个控制器,action 是业务层的一部分,(取出前台界面的数据,调用Service方法,转发到下一个action或者页面) 模型成(model)一般是实体对象(把现实的的事物变成java中的对象),作用是暂时存储数据方便持久化(存入数据库或者写入文件),作为一个包裹封装一些数据来在不同的层以及各种java对象中使用。

dao(数据访问对象data access object)是数据访问层,dao主要做数据库的交互工作,就是用来访问数据库实现数据的持久化(把内存中的数据永久保存到硬盘中)。

只负责对数据进行访问,而不管其他的什么业务逻辑,其实就是只干活,而不管为什么干。在dao层里面要完成的是数据访问逻辑以及对数据的访问。

dao层为上层的service层提供接口。

dao层在操作完成后,如果是查询,则返回对象,如果是增删改,则仅仅需要返回一个boolean值表示成功失败即可。

dao包含你对数据库的所有操作,所以只要是你有对象要对数据库进行操作,都把这些方法放在dao层里,最好先写一个抽象类(interface)来封装所有的方法,再新建一个impl文件夹(implement)即来实现这个抽象类,为什么呢?直接在类里面写方法不就可以了吗?其实这样有利于接口与实现的分离,以后也方便管理。

dao层功能:

1.访问数据库urcd

2.将查询到的数据返给业务逻辑Service

Model 是模型 存放你的实体类;


1、分层的优点:

1)整个项目的组件之间耦合度低,某一层的改变,不会影响整个系统的运行。

2)开发人员可以只去关注系统中的某一个层次

3)利于协作开发

4)后期的可维护性高

这样看起来结构是很清晰的,虽然对很对新人来说确实看起来很复杂;

可扩展性和适应性更加强,比如将来用户的业务逻辑有一定的改变,你需要做的仅仅就是在service层中多调用一个方法即可,而不需要对代码有太多的改动,抑或是你将来想换个mvc的框架的话,只需要对接收和返回参数方面做些处理即可,而不需要对service层和dao层做任何改动;

维护更加简单,只需要有这种分层意识,很容易就能够对系统有个很好的掌握,也很容易能够对问题进行排查和修改。

2、service层步骤总结:

service层的概念: 主要封装业务功能。 需要通过调用DAO来完成。

service中需要做的事:

1. 必须手动控制事务:  conn.setAutoCommit(false);

2. 手动提交事务: conn.commit();

3. 手动回滚事务: conn.rollback();

4. 调用DAO

5. 数据的处理和验证

注意事项: 当service和 dao 使用同一个连接对象时, 连接不在dao关闭, 在service中关闭。

java SE(java)基础,比如什么是对象,解释多态,继承,多线程等,用一个main封装所有的逻辑,不会涉及到其他语言的交互,比如tomact,jsp,html等。

java Enterprise是针对Java EE开发所要用到的,就是会涉及到网页与后端交互,重定向,转发,数据库的操作等。

pojo实例类:pojo包(Plain Ordinary Java Object),意思就是表示一个很普通的对象,不需要实现什么接口,没有任何的逻辑,有的只是属性,和空参构造函数还有getter/setter方法,其实就是获取和设置每一个属性值的方法,Alt+Ins快捷键。

dao service view pojo utils tools都放什么? java的(MVC)三层架构入门

controller控制层:在web包下面新建controller包,是要和前端页面打交道的。主要负责具体的逻辑处理,所以该层是会调用service里面的接口来实现业务流程,注意的是这里面的类是一个个HttpServlet的子类,你需要根据用户get还是post,然后对应的去写里面的实现方法逻辑呀等,这里就会涉及重定向获取session等等。

扩展:

spring中的IOC理论推导
1.UserDao 接口
2.UserDaoImpl实现类
3.UserService业务接口
4.UserServiceImpl业务实现类

在java工程中,一般我们会用Utils或Tools的包名来封装一些通用的工具类。

包名 定义 方法或属性 举例
utils 通用的且与项目业务无关的类的组合;可供其他项目使用 方法通常是public static的;一般无类的属性,如果有,也是public static的 字符串工具类,文件工具类等
tools 当前项目中通用的业务类的组合;仅能当前项目使用 不限 用户校验工具类,支付工具类等

 

例子:

Utils:

public class StringUtils {
 ...
 public static final String SPACE = " ";
 	public static final String EMPTY = "";
 	...
 	public static boolean isEmpty(final CharSequence cs) {
        return cs == null || cs.length() == 0;
    }
     public static boolean isBlank(final CharSequence cs) {
        int strLen;
        if (cs == null || (strLen = cs.length()) == 0) {
            return true;
        }
        for (int i = 0; i < strLen; i++) {
            if (!Character.isWhitespace(cs.charAt(i))) {
                return false;
            }
        }
        return true;
    }
    ...
 }

Tools:

/**
*验证工具类接口定义
*/
public interface VerificationTools {

    /**
     * 发送邮件验证码
     * @param code 验证码
     * @return EmailVo
     */
    EmailVo sendEmail(VerificationCode code);

    /**
     * 验证用户
     * @param user实体类
     * @return 返回是或否
     */
    Boolean validatedUser(User user);
}

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/8821.html

(0)
江山如画的头像江山如画管理团队
前后端开发、售前、运维、安全工程师招聘-北京数字科技有限公司
上一篇 2020年10月16日 下午4:29
ABB robotstudio 机器人圆形轨迹实现(图)
下一篇 2020年10月24日 下午4:55

99%的人还看了以下文章

  • 什么是 Python ?Python 有哪些优势?为什么学 Python ?

    什么是 Python ?Python 有哪些优势?为什么学 Python ?什么是 Python ?Python 有哪些优势?为什么学 Python ?什么是 Python ?Python 有哪些优势?为什么学 Python ?什么是 Python ?Python 有哪些优势?为什么学 Python ?

    Python 是一种通用的脚本开发语言,比其他编程语言更加简单、易学,其面向对象特性甚至比 Java、C#、.NET 更加彻底,因此非常适合快速开发。Python 在软件质量控制、开发效率、可移植性、组件集成、库支持等方面均处于先进地位。

    2018年10月18日 编程开发
    8.6K1
  • 精!HTML5调用手机拍照实现图片上传服务器,并将图片地址存进数据库(下)

    这篇文章主要为大家详细介绍如何使用HTML5利用摄像头拍照实现上传功能。 上一篇只讲到前台操作,这篇专门涉及到Java后台处理,前台通过Ajax提交将Base64编码过的图片数据信息传到Java后台,然后Java这边进行接收处理,通过对图片数据信息进行Base64解码,之后使用流将图片数据信息上传至服务器进行保存,并且将图片的路径地址存进数据库。 大家可以点…

    2022年8月11日
    8.1K0
  • 精典Arduino入门小项目-手机APP控制LED灯

    本文主要介绍了一个典型的Arduino入门小项目-手机APP控制LED灯,包括需要的硬件、软件(提供下载地址),源码,只需根据教程操作,就能做出一个完整项目!

    2023年2月3日
    7.8K0
  • python 集合使用案例:选修课统计

    相关阅读:python 集合的使用,案例详解 本学期学校共开设了3门选修课,一个班有25位学生,选修的情况如下: 选修1号课程的同学有: set1 = {‘张三’, ‘李四’, ‘王五’, ‘马六’, ‘赵七’, ‘钱八’} 选修2号课程的同学有: set2 = {‘姬一’, ‘孙必’, ‘周冲’, ‘王五’, ‘方向’, ‘张玉’} 选修3号课程的同学有:…

    2020年1月22日
    8.9K0
  • Tkinter(Python GUI编程)从入门到精通(一)

    什么是Tkinter 一个 GUI 程序一般由窗口、下拉菜单或者对话框等图形化组件构成, 通过鼠标点击菜单栏、按钮或者弹出对话框的形式来实现人机互动,从而提升人机交互的体验,让“冰冷”的程序变得有“温度”。 注意:GUI 这一概念并非 Python 语言独有,它属于计算机科学技术领域中的一个概念,比如使用 C/C++ 语言开发的 Qt、GTK、Electro…

    2022年8月20日
    6.8K0
  • 编写第一个Python程序——输出HelloWorld并运行

    编写第一个Python程序——输出HelloWorld并运行编写第一个Python程序——输出HelloWorld并运行编写第一个Python程序——输出HelloWorld并运行编写第一个Python程序——输出HelloWorld并运行

    上一章节我们讲解了Python开发环境搭建,今天学习使用 Eclipse编写第一个Python程序——输出HelloWorld并运行。 1.打开Eclipse,选择File——》New——》Other。在弹出的New窗口中,选择Pydev——》Pydev Project——》next。 2.在弹出的窗口中,依次填写Project name(工程名)——》Di…

    2019年6月24日 编程开发
    9.7K0

发表回复

登录后才能评论