三层架构简述

三层架构简述

1,表示层 :主要是对用户的请求接受,数据的返回,为客户端提供应用程序的访问

2,业务逻辑层:主要负责对数据库的操作,将对数据库的操作进行组合

3,数据访问层:看数据层是否包含逻辑处理,这里面的各个函数主要是完成对各个文件的操作,不需要去管别的操作

简单实现

说一下怎么通过Express实现一个简单的服务器端的三层架构

通过Express脚手架创建如下的目录结构

在这里插入图片描述

这是我已经搭建好的目录,选中的utils文件夹是我个人添加的一些代码,用于自己使用的一些小函数,生成时是没有的。

dao:数据访问层

routes:表示层

service:业务逻辑层

public:静态文件资源目录

数据流向的大致过程

​ 客户端请求——》routes——》service——》dao——》数据库——》dao——》service——》routes——》客户端

​ 下面,我来写一个简单的事例,分别在对应的文件夹建立一个文件,命名随意,我这里都以student命名,数据库使用的是mongoose

//dao文件夹下建立一个数据模型文件夹,将涉及的数据模型建立出来
let mongoose = require("mongoose");
let studentSchema = mongoose.Schema(
  {
    name: String, //名字
    gender: String, //性别
    age: String, //年龄
  },
  { versionKey: false }
);
let studentModel = mongoose.model("student", petsSchema);

module.exports = studentModel;
//dao文件夹下的db.js,用于连接数据库
let mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/student', { useUnifiedTopology: true, useNewUrlParser: true });
let db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function () {
    console.log("we're connected!");
});
require('./moudles/studentModel');
//dao
let studentModel = require()
let dao = {};
dao.findstudent = () =>{
    console.log("666")
}

module.exports = dao;
//routes
var express = require('express');
var router = express.Router();
let studentService = require("../service/student");

router.get('/findstudent', async function (req, res, next) {
    studentService.getstudent()
})

module.exports = router;
//service
let studentDao = require("../dao/student");
let service = {};

service.getstudent=()=>{
    studentDao.findstudent()
}

module.exports = service;

做到这里,就只差具体的方法实现了,大家需要记住的是,dao层才能访问数据库,获取数据,其他的都是为了传递数据。

还要记住,要在app.js文件注册router

var createError = require("http-errors");
var express = require("express");
var path = require("path");
var cookieParser = require("cookie-parser");
var logger = require("morgan");
require("./dao/db");

//引入文件
var studentRouter = require("./routes/student")

var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

//中间件

app.use(logger('dev'));//注册

app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());

app.use(express.static(path.join(__dirname, 'public')));//静态代理
//路由--更具路径名称进行导航

app.use("student",studentRouter);

上传是为了方便自用学习,如果有不对的地方,希望看见的朋友能留言指出来,不胜感激。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaEE的三层体系结构是指: 1. 表现层(Presentation Layer):负责接收用户请求并进行处理,生成响应结果。通常使用JSP、Servlet等技术实现。 2. 业务逻辑层(Business Layer):负责处理业务逻辑,实现业务需求。通常使用EJB、Spring等技术实现。 3. 持久层(Persistence Layer):负责管理数据持久化,实现对数据库等数据存储的访问和管理。通常使用JDBC、Hibernate等技术实现。 这三层体系结构分别负责不同的功能模块,相互独立但又紧密相连,实现了系统的分层管理,提高了系统的可维护性、可扩展性和可重用性。 ### 回答2: JavaEE是一种基于Java语言的企业级应用开发平台,它采用了三层体系结构来实现应用程序的模块化和分离。这三层分别是表示层(Web层)、业务逻辑层(业务层)和数据访问层(持久化层)。 首先是表示层,也称为Web层,负责处理用户界面和用户交互。在这一层,我们使用JavaEE技术中的Servlet、JSP等组件来接收和响应用户的请求,并将数据展示给用户。表示层通过与用户交互获取用户输入,然后将这些输入传递给业务逻辑层进行处理。 接下来是业务逻辑层,也称为业务层。这一层主要负责处理业务逻辑,并调用相应的资源来满足系统的功能要求。在业务逻辑层,我们可以实现业务逻辑、各种算法、数据处理等功能。通常情况下,该层会调用持久化层提供的服务来获取和存储数据,然后对数据进行处理并将结果返回给表示层。 最后是数据访问层,也称为持久化层。这一层负责处理系统与数据库之间的数据交互。在JavaEE中,我们使用Java Persistence API(JPA)或Hibernate等技术来实现对数据库的访问和操作。持久化层提供了一种统一的数据访问接口,使得业务逻辑层可以方便地与不同的数据库进行交互,而不需要关注具体的数据库实现细节。 通过这样的三层体系结构,我们可以实现应用程序的模块化和分离,使得各个层次的功能划分清晰,易于维护和扩展。表示层、业务逻辑层和数据访问层的分离也使得不同开发人员可以并行进行开发,并且可以随时替换和更新某个层次的实现,而不会影响到其他层次的功能。 ### 回答3: JavaEE是一种基于Java语言的企业级应用开发平台,其三层体系结构是指Presentation Layer(表示层)、Business Logic Layer(业务逻辑层)和Data Access Layer(数据访问层)。 首先是表示层,也称为Web层,它负责处理用户的请求和向用户展示结果。表示层通常采用Java Servlet、JavaServer Pages(JSP)和JavaServer Faces(JSF)等技术来实现,它们与用户之间通过HTTP协议进行通信。在这一层中,我们可以将用户请求进行解析和验证,并生成相应的响应结果。 其次是业务逻辑层,它是整个应用程序的核心,负责处理业务逻辑的实现。在这一层中,我们会定义和实现各种业务逻辑,例如数据的处理、算法的实现、事务的管理等。业务逻辑层通常由一系列的Java类组成,这些类被称为业务Bean(Business Bean),它们提供了对外的接口供表示层或其他业务逻辑层调用。 最后是数据访问层,也称为持久化层,它负责与数据库交互,将业务逻辑层处理过的数据存储到数据库中,或者从数据库中读取数据供业务逻辑层使用。在JavaEE中,我们通常使用Java Persistence API(JPA)或Hibernate等技术来实现数据访问层。这一层的主要功能是管理数据库连接、执行SQL语句、对数据进行持久化操作等。 这三层体系结构的目的是将应用程序的不同功能和责任分离开来,使得代码更具可维护性、可扩展性和可复用性。通过合理划分层次,不同的开发人员可以并行开发不同的模块,同时也方便进行单元测试和系统集成测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值