基于java的CRM客户关系管理系统(二)

news2025/1/11 17:05:45

目录

第二章 相关技术介绍 

2.1 后台介绍 

2.1.1 B/S平台模式  

2.1.2 MVC

2.1.3 Spring

2.1.4 Hibernate

2.1.5 Struts

2.2 前端介绍

2.2.1 JSP网页技术

2.3 开发工具

2.4 本章小结


前面内容请移步

基于java的CRM客户关系管理系统(二)

资源+毕业设计+毕业论文+源代码请移步

CRM客户关系管理系统+毕业论文+毕业设计+源代码

第二章 相关技术介绍 

2.1 后台介绍 

2.1.1 B/S平台模式  

        B/S 平台模式。在客户端上装置浏览器(Browser),如360、Firefox,服务器端就需要安装数据库,例如Oracle数据库、Mysql数据库、SqlServer2008或者SqlServer2010。浏览器经过 Web服务和Web服务器进行数据流转,服务器再和数据库进行数据的对接。B/S 平台模式中,第一层的是客户端,第二层的是Web服务层,可以由一台或多台服务器构成,可以动态的根据应用的需要增加或者减少服务器的个数,因此Web服务层是动态变化的,第三层的是数据层,组成部分是数据库系统和持久化层。系统维护时只需要对服务器进行升级或者其他操作,但是对浏览器就不需要做出巨大维护变动。这样客户端可以变“瘦”,而服务器端则越来越“胖”,但是更加的安全便捷。如图2-1所示

图2.1 典型的B/S架构图

2.1.2 MVC

        MVC 三层架构设计模式分为三个部分,M(模型),V(视图),C(控制),每个部分都有应该有的功能和任务,然而他们又是一个整体,共同解析用户的请求并返结果。层与层之间的代码、逻辑的拆开使得系统的整体性更清晰。如图2-2 所示为三层结构的基本构架。

        视图(View):视图是最先也是唯一一个和用户面对面交流的层次,也就是用户能用肉眼看到的。在Web 应用程序中,应用程序的界面的处理和设计变得多样化。视图层没有对传递的数据进行处理的功能,就是对数据提供不同形式的呈现输出方式。

        模型(Model):经过了模型处理的数据可以通过定义好的视图去呈现结果,说到具体的模型,模型就是明确定义了一对业务规则的数据。模型的另一个优点就是支撑模型的代码可以被多个视图重用使用,减少了代码的冗余度。

        控制器(Controller):用一个形象的比喻,控制器就是一个人的大脑,起到的是关键的调度作用,他的过程是这样的:当用户的请求被发出后,控制器接纳申请内容但是对申请不做处理,然后就转发请求信息给相应的模型和视图去处理和呈现数据结果

图2.2 MVC结构

2.1.3 Spring

        Spring框架采用分层架构,如图2-3

  1. Spring Core:BeanFactory是SpringCore最基础的组成,工厂模式的设计方式的使用就是希望每次调用对象的时候就去创建,浪费资源,把应用程序的代码和配置信息分离开来,达到互不干扰的目的。
  2. Spring AOP:Spring中的切面功能。
  3. Spring DAO:数据访问层就是dao,这个模块的最强大的作用就是操作Hibernate下的持久化对象。
  4. Spring ORM::目的是通过Spring 映射,让 Hibernate 和SQL 或者HQL的集成使用。
  5. Spring Web容器:web容器存在的目的是为该系统程序访问上下文信息。
  6. LOC:控制反转(依赖注入),在使用控制反转的程序中,对象不会被直接创建,而是规定怎样去创建它们。在配置文件是用来描述组件和功能怎么样进行合理的组合。对象由容器所创建,对象的必要属性也能通过容器进行设置,最后容器通过配置管理将各部分联系在一起,并调用方法。表2-1所示是控制反转的类型,一般来说loC容器由采用后两种实现模式。

图2.3 spring基本模块

表 2-1 LOC实现类型

 类型一

服务需要专门的接口,通过接口,由对象提供这些服务,可以从对象查询服务的依赖性

 类型二

通过JavaBean的属性分配依赖性

 类型三

依赖性由构造函数提供

2.1.4 Hibernate

        Hibernate 框架使用的非常妙的地方是运用了数据库到java类的反射体系,通过对关系映射文档进行 XML 解析,然后就可以通过一系列的层次对象操作数据库数据,它和JDBC有很大的不同,也有很多相同之处,相同之处就在于Hibernate框架和JDBC 都是与数据经常操作,查询数据库数据返回前台或者就是前台数据存储在数据库里面。

1.ORM:Object Relation Mapping,从字面上理解及时对象关系映射,这个功能就很有用处了,定义了需要的持久化对象后,还需要对实体对象和数据库的表名进行一一对应的联系。

2.Hibernate 的API

         Hibernate 框架基本组成是有Session、SessionFactory、Transaction、Query、Criteria 、Configuration等六个核心接口。下面就逐一对这几个接口说明下我自己的理解。

  1. Session 接口:Session 接口与持久层中java对象的持久化有关,这个接口下的crud方法可以完成持久化。
  2. SessionFactory 接口:这个会话工厂接口需要完成的工作就是读入Hibernate配置文件里的Sessionfactory内容,构架出sessionfactory并且要完成对Hibernate进行初始赋值的任务。
  3. Configuration 接口:Configuration这个接口主要在配置上有大用处,当Hibernate框架开启的时候,需要首先创建一个会话工厂对象,这需要Hibernate框架需要调度Session接口和Sessionfactory接口完成对factory工厂类的构建,然而这些都是需要configuration接口去完成一系列的操作的。
  4. Transaction 接口:控制事物的接口,是对数据的原子性,一致性的保证。

        5.  Query 和 Criteria 接口:这两个接口在Hibernate框架里扮演着和数据库打交道的角色和地位,通过query或者criteria接口根据请求信息操纵数据库信息,达到预料的目的,同时他们也都对应着HQL和SQL的操作方式。

图2.4 Hibernate结构

2.1.5 Struts

1. Struts 概述

        Struts 框架在开发中算是比较经典了,特别是在结合了像MVC三层架构这样的观念思想后就更为大家所接受。Struts框架的简单原理就是这样的:Struts预先就定义好了Controller,也就是用于控制的控制器。首先就是去配置文件里面读取相关的配置信息要求,值得注意的是该文件的名称可以struts-config.xml,也可以用其他的形式命名。当用户的请求进入系统之后,首先对用户所要提交的数据进行打包,经过模型层和视图层的流转和相关处理,进入数据库。值得一提的是各个层次之间相互分开,都有各自的功能,在理解层次上更清晰。Struts 框架可以这样说,是更加紧密的把三层架构思想联系在一起。图 2-4 表现的Struts框架的各个组成部分具有相应的功能特点和各自的联系情况。

1)从视图角度(View)

        站在视图的视野上,也就是前台页面呈现的观点上,JSP页面的形成得益于这个Struts 结构的tagLib等库的运用进来,例如说Taglib标签库可以快速简单的调用标签然后去形成页面。

2)从模型角度(Model)

        模型主要是表示一个系统业务规则的状态体现。

3)从控制器角度(Controller)

        在理解中到的Struts框架语法里,Controller层站在控制的角度上就是对的是业务逻辑的实现进行管制,最主要也就是Action组件的控制,由于Action组件是系统的逻辑业务的最终完成层和承担者,例如:ActionForword就定义了业务逻辑根据不同的需求进行流转。

图2.5 Struts三层图

2. Struts 工作流程

        Struts框架的使用很广,在大型前端应用程序的应用更为经典,例如说web系统,下面简单的说明下:web应用程序的启动就要去Struts的配置文件里读取配置信息,之后会把创建配置对象存放配置信息的内容,而后加载和构建ActionServlet对象等配置对象,执行如下流程步骤:

①首先判断ActionServlet是否存在。当不存在的时候,返回的信息就应该为无效的,这时候就有必要执行第二步。

②当判断出ActionServlet不存在时就需要把客户提交的表单数据保存在另外一个对象里,所以需要需要创建ActionFom对象。

③对接收的表单数据按照配置信息所要求的进行规则验证。

④验证成功的表现:当执行完ActionForm.validate()方法后得到的结论有两种状况:一种情况是返回空(NULL),另一种情况是不包括ActionMessage的ActionErrors 对象。

⑤ActionServlet把请求信息转发给相应的Action层,那么Action层的具体实例对象就可以调用exexcute()方法,假定action的对象载体没有构建,就需要立马构建一个。

⑥ Action对象载体带有的方法调度完成后就会得出一个成果,那么ActionServlet就会把这个结果转发给相应的JSP页面。

⑦ JSP技术中带有的组件动态的生成页面展现出现。

2.2 前端介绍

2.2.1 JSP网页技术

        JSP网页技术,Java Server Page顾名思义是把Java代码嵌在服务页面的开发技术 它的组成部分有Java代码,html的语法规则,Jsp标签。JSP的大致变化是这样的,首先通过表单来获取用户数据并提交给系统,系统再把结果返回通过JSP组件动态的创建页面显示。JSP页面的执行过程如图

图2.6 JSP页面的执行过程

  1. 客户端登录上浏览器上访问特定的网址,由资源的路径信息的请求发出,服务器接收请求并解析路径信息,找到被请求的资源。
  2. 找到资源后就开始加载JSP或和html页面文件。
  3. JSP文件在JSP组件的处理下被以Servlet代码保存。
  4. 产生的servlet代码就可以进行编写译为Class代码文件。
  5. Class文件就是一被服务器的组件所识别然后执行。
  6. 系统执行的结果会在被浏览器所展示。

2.3 开发工具

软硬件环境需求

        浏览器采用IE,360,GooGle。

        系统JVM为JDK1.6或更高版本。

        系统数据库使用MySql配合图形化界面HeidiSql

        系统的集成幵发环境MyEclipse2012。

        Web容器Tomcat7.0

        系统的技术架构:Struts2.0+Spring4.0+Hibernate3.0

2.4 本章小结

        本章对完成论文的理论基础及需要的关键技术进行了论述,系统决定使用的是的B/S 平台开发然后,分别介绍了 SSH等框架和JSP前端技术。最后说明了完成该系统的软硬件要求。

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

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

相关文章

vscode编辑器创建分支注意事项?!

最近在公司开发项目时,不小心将自己分支的东西提交到公司的master的分支,大家看看是什么情况? 先上图: 从图上看,我这边用了GITLENS这个插件,在创建分支时,有个create branch from,有…

如何选择软件开发服务商

在当今数字化快速发展的时代,软件已经成为企业运营不可或缺的一部分。然而,对于许多非技术背景的企业来说,如何选择一个合适的软件开发服务商却是一个不小的挑战。本文将从需求分析、服务商评估、合同条款以及后期维护等方面,详细…

【GD32F303红枫派使用手册】第五节 FMC-片内Flash擦写读实验

5.1 实验内容 通过本实验主要学习以下内容: FMC控制器原理; FMC擦写读操作; 5.2 实验原理 5.2.1 FMC控制器原理 FMC即Flash控制器,其提供了片上Flash操作所需要的所有功能,在GD32F303系列MCU中,Flash…

环卫车北斗GPS视频监控定位解决方案的应用与优势

一、引言 随着城市化进程的加快,环卫车作为城市环境卫生的重要保障力量,其运行效率与安全性直接关系到城市形象与居民生活品质。然而,传统的环卫车管理模式往往存在信息不对称、调度不合理、行驶不规范等问题,导致城市道路污染和…

Java中的软引用,你了解吗?

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

打工人福音,办公神器软件

今天分享2个免VIP的办公神器app,建议所有手机安装,第一个布丁扫描http://www.budingscan.com ,无广告不收费,这是VIVO 推出的一款完全免费的扫描APP,支持文档&证件扫描、OCR文字&表格识别提取、…

解决Windows 10通过SSH连接Ubuntu 20.04时的“Permission Denied”错误

在使用SSH连接远程服务器时,我们经常可能遇到各种连接错误,其中“Permission denied, please try again”是较为常见的一种。本文将分享一次实际案例的解决过程,帮助你理解如何排查并解决这类问题。 问题描述 在尝试从Windows 10系统通过SS…

js:flex弹性布局

目录 代码&#xff1a; 1、 flex-direction 2、flex-wrap 3、justify-content 4、align-items 5、align-content 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewp…

Mysql基础教程(13):GROUP BY

MySQL GROUP BY 【 GROUP BY】 子句用于将结果集根据指定的字段或者表达式进行分组。 有时候&#xff0c;我们需要将结果集按照某个维度进行汇总。这在统计数据的时候经常用到&#xff0c;考虑以下的场景&#xff1a; 按班级求取平均成绩。按学生汇总某个人的总分。按年或者…

【spring】Spring Boot3.3.0发布啦

spring最新版本 springboot官网&#xff1a;Spring Boot :: Spring Boot Spring Boot 3.3 发行说明&#xff1a;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.3-Release-Notes 开发环境的要求对比表 Spring BootJDKSpringMavenGradle3.3.017 ~ 226.1…

Nginx实战:LUA脚本_环境配置安装

目录 一、什么是LUA脚本 二、Nginx中的LUA脚本 1、主要特点 2、用途 三、如何在nginx中使用LUA脚本 1、原生nginx 2、OpenResty 3、nginx lua配置验证 一、什么是LUA脚本 Nginx Lua 脚本是 Nginx 与 Lua 语言集成的结果&#xff0c;它允许你使用 Lua 语言编写Nginx 模块…

【Redis】List源码剖析

大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#xff0c;但是也想日更的人。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4aa;&#x1f4aa;&#x1f4aa…

使用第三方工具percona-xtrabackup进行数据备份与恢复

目录 准备工作 开始安装 innobackupex的使用 完全备份 增量备份 数据恢复 本次需要用到的软件 mysql 5.7.35percona-xtrabackup-24-2.4.8 ps&#xff1a;---MySQL必须是5.7的版本&#xff0c;在8.0之后已经不支持 percona-xtrabackup-24 系统版本CentOS7.9 准备工作 …

面试题 17.05. 字母与数字(前缀和)

给定一个放有字母和数字的数组&#xff0c;找到最长的子数组&#xff0c;且包含的字母和数字的个数相同。 返回该子数组&#xff0c;若存在多个最长子数组&#xff0c;返回左端点下标值最小的子数组。若不存在这样的数组&#xff0c;返回一个空数组。 示例 1: 输入: ["…

SpringBoot+layui实现Excel导入操作

excel导入步骤 第三方插件引入插件 效果图 &#xff08;方法1&#xff09;代码实现&#xff08;方法1&#xff09;Html代码&#xff08; 公共&#xff09;下载导入模板 js实现 &#xff08;方法1&#xff09;上传文件实现 效果图&#xff08;方法2&#xff09;代码实现&#xf…

一碗米线火了24年,蒙自源六一再献新作

当一碗热气腾腾的米线在餐桌上飘香四溢&#xff0c;你是否会想起那个陪伴了无数食客24年的名字——蒙自源&#xff1f;在这个充满欢笑与童真的六一儿童节&#xff0c;蒙自源米线品牌再度发力&#xff0c;用全新的儿童餐系列为孩子们带来了一份特别的节日礼物。 蒙自源&#xf…

性价比为王,物流商怎么选择高效的国际物流管理平台

在全球化贸易日益繁荣的今天&#xff0c;国际物流行业作为链接国内商家和海外市场的重要桥梁&#xff0c;发挥着极其重要的作用。 然而&#xff0c;随着国际物流市场竞争的加剧&#xff0c;对物流商来说&#xff0c;也面临着成本管控和效率提升的双重挑战。今天我们会重点探讨…

AI之下 360让PC商业生态大象起舞

时隔7年&#xff0c;淘宝PC版在前不久迎来重磅升级&#xff0c;在产品体验、商品供给、内容供给等方面做了全面优化&#xff0c;以全面提升PC端的用户体验&#xff1b;当大家都以为移动互联网时代下APP将成为主流时&#xff0c;PC端却又成为了香饽饽。其实PC端被重视&#xff0…

【Qt】【模型视图架构】代理模型示例

文章目录 1. 基本排序/过滤模型Basic Sort/Filter Model Example2. 自定义排序/过滤模型Custom Sort/Filter Model ExampleFilterLineEdit类定义及实现MySortFilterProxyModel类定义及实现 1. 基本排序/过滤模型Basic Sort/Filter Model Example 官方提供的基本排序/过滤模型示…

LeetCode42:接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 代码 单调栈 class Solution { public:int trap(vector<int>& height) {stack<int> stk;int result 0;stk.push(0);for (int …