推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

Java Web前端到后台常用框架介绍

   2023-08-01 网络整理佚名1360
核心提示:应用程序无需直接在代码中new相关的对象,应用程序由IOC容器进行组装。AOP用来封装横切关注点,具体可以在下面的场景中使用:简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架。

关联:

一,

Web MVC 是一个基于 Java 的轻量级 Web 框架,实现了请求驱动型的 Web MVC 设计模式。 即它利用MVC架构模式的思想来解耦Web层的职责。 基于请求驱动是指使用请求-响应模型,框架的目的是帮助我们简化开发,而Web MVC也是为了简化我们日常的Web开发。

模型(Model)封装了应用程序的数据以及它们将形成的一般POJO。

视图(View)负责呈现模型数据,通常它生成客户端浏览器可以解释的 HTML 输出。

控制器()负责处理用户的请求并构建适当的模型并将其传递给视图进行渲染。

Web 模型-视图-控制器 (MVC) 框架是围绕处理所有 HTTP 请求和响应而设计的。

Web MVC处理请求的流程

在这里写下图片描述

具体执行步骤如下:

1、首先用户发送请求———>前端控制器,前端控制器根据请求信息(如URL)决定选择哪个页面控制器进行处理,并将请求委托给它,即是,前一个控制器部分的控制逻辑; 图2-1中的步骤1和2;

2、页面控制器收到请求后,进行功能处理。 首先,它需要收集请求参数并将其绑定到一个对象。 这个对象在Web MVC中称为命令对象,对其进行验证,然后将命令对象委托给业务对象进行处理;处理完成后,返回一个(模型数据和逻辑视图名称); 图2-1中的步骤3、4、5;

3、前端控制器收回控制权,然后根据返回的逻辑视图名选择对应的视图进行渲染,并传入模型数据进行视图渲染; 图2-1中的步骤6和步骤7;

4、前端控制器再次收回控制权,并将响应返回给用户,如图2-1中的步骤8; 至此整个就结束了。

二,

2.1. 国际奥委会容器:

IOC容器是一个具有依赖注入功能的容器。 IOC容器负责实例化、定位和配置应用程序中的对象,并建立这些对象之间的依赖关系。 应用程序不需要在代码中直接new相关对象,应用程序由IOC容器组装而成。 In是IOC容器的实际代表。

2.2. 面向对象:

简单来说就是将与业务无关但业务模块共同调用的逻辑或职责进行封装,以减少系统中代码的重复,降低模块之间的耦合度,方便以后的可操作性和可维护性。 AOP代表横向关系

AOP用于封装横切关注点,可用于以下场景:

权限

缓存

内容交付

错误错误处理

懒惰加载

调试

、 、 和 记录跟踪优化校准

性能优化

坚持

资源池

同步

事务

三,

它是一个优秀的持久层框架,支持常见的SQL查询、存储过程和高级映射。 消除了几乎所有 JDBC 代码和参数的手动设置以及结果集的检索。 使用简单的 XML 或注释进行配置和基元映射,将接口和 Java POJO(Plain Old Java,通用 Java 对象)映射到数据库中的记录。

整体流程:

(1)加载配置并初始化

触发条件:加载配置文件

将SQL配置信息加载到对象中(包括传入参数映射配置、执行的SQL语句、结果映射配置)并存储在内存中。

(2) 接收呼叫请求

触发条件:调用提供的API

传入参数:SQL ID和传入参数对象

处理过程:将请求传递给下层请求处理层进行处理。

(3)处理操作请求触发条件:API接口层将请求传递过来

传入参数:SQL ID和传入参数对象

过程:

(A)根据SQL ID找到对应的对象。

(B)根据传入参数对象解析对象,得到最终要执行的SQL并执行传入参数。

(C)获取数据库连接,根据获得的最终SQL语句和执行输入参数执行数据库,并获得执行结果。

(D)根据对象中的结果映射配置对得到的执行结果进行转换处理,得到最终的处理结果。

(E) 释放连接资源。

(4) 返回处理结果 返回最终的处理结果。

最强大的功能之一是其动态语句功能。 如果您以前使用过 JDBC 或类似框架,您就会知道将 SQL 语句条件连接在一起是多么痛苦,请确保不要忘记空格或省略列后面的逗号等。动态语句可以完全解决这些问题痛苦。

4. 达博

Dubbo是一个分布式服务框架,致力于提供高性能、透明的RPC( Call )远程服务调用解决方案和SOA服务治理解决方案。 简单来说,dubbo 是一个服务框架。 如果没有分布式需求,就没有必要使用。 只有分布式的时候,才会有dubbo这样的分布式服务框架的需求,本质上就是服务调用。 东东,说白了就是一个远程服务调用的分布式框架。

1、透明的远程方法调用,调用远程方法就像调用本地方法一样,只需要简单的配置,无任何API侵入。

2、软负载均衡和容错机制可以替代内网F5等硬件负载均衡器,降低成本和单点。

3.自动服务注册和发现,不再需要硬编码服务提供者的地址,注册中心根据接口名称查询服务提供者的IP地址,并可以平滑地添加或删除服务提供者。

节点角色说明:

:公开服务的服务提供者。

:调用远程服务的服务消费者。

:服务注册和发现的注册中心。

:监控中心,统计服务调用频率和调用时间。

:服务运行容器。

5. Maven

Maven作为一个项目管理和构建自动化工具,被越来越多的开发者用来管理项目中的jar包。 但对于我们程序员来说,最关心的还是它的项目构建功能。

六,

消息队列一般在项目中用来提取一些不需要立即返回的耗时操作进行异步处理,而这种异步处理方式大大节省了服务器的请求响应时间,从而提高系统的吞吐量。

它是一个用.

它是一种动态类型函数式编程语言。 相应地,每个actor对应一个进程,进程之间通过消息传递进行通信。 与共享内存相比,进程间通过消息传递进行通信的直接好处是消除了直接锁开销(无论虚拟机底层实现中的锁应用如何)。

AMQP(队列)定义了消息系统规范。 该规范描述了分布式系统中的各个子系统如何通过消息进行交互。

7.Log4j

日志记录的优先级分为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或您定义的级别。

八,

它是一个纯Java进程内缓存框架,快速且精简,是中国默认的。 是一种广泛使用的开源Java分布式缓存。 主要针对通用缓存、Java EE 和轻量级容器。 它具有内存和磁盘存储、缓存加载器、缓存扩展、缓存异常处理程序、gzip 缓存过滤器、对 REST 和 SOAP API 的支持等等。

优势:

1. 快

2.简单

3.多种缓存策略

4、缓存数据有内存和磁盘两级,无需担心容量问题

5、虚拟机重启时缓存的数据会被写入磁盘

6.可以通过RMI、可插拔API等方式进行分布式缓存。

7. 带有缓存和缓存管理器的监听接口

8.支持多个缓存管理器实例和一个实例的多个缓存区域

9.提供缓存实现

缺点:

1、使用磁盘缓存时,会占用大量的磁盘空间:这是因为算法简单,而算法的简单也导致了缓存的效率非常高。 它只是直接附加到元素。 所以寻找元素是非常快的。 如果使用,在非常频繁的应用中,磁盘很快就会被填满。

2、数据的安全性无法保证:java突然被杀时,可能会出现冲突。 如果文件冲突,最好的解决方案是重建缓存。 当需要保存Cache数据时这可能是不利的。 当然,Cache只是为了简单的加速,并不能保证数据的安全。 如果要保证数据存储的安全,可以使用DB Java版本。 这是一个嵌入式数据库。 可以保证存储安全和空间利用率。

9.Redis

Redis 是一个键值存储系统。 同样,它支持相对更多的值类型进行存储,包括(字符串)、列表(链表)、集合(集合)、zset(集合——有序集合)和哈希(哈希类型)。 这些数据类型都支持push/pop、add/、、union、和更丰富的操作,并且这些操作都是原子的。 在此基础上,redis支持多种方式的排序。 与 一样,为了保证效率,数据被缓存在内存中。 不同的是,redis会定期将更新的数据写入磁盘或者将修改操作写入额外的记录文件,并在此基础上实现-slave(主从)同步。

Redis 数据库完全位于内存中,仅使用磁盘进行持久化。 与许多键值数据存储相比,Redis 拥有更丰富的数据类型。 Redis 可以将数据复制到任意数量的从服务器。

1.2. Redis的优点:

(1) 速度极快:Redis 速度非常快,每秒能够执行约 110,000 次收集,每秒约 81,000+ 条记录。

(2)支持丰富的数据类型:Redis支持大多数开发人员已知的数据类型,如列表、集合、排序集、哈希数据类型。 这使得解决各种各样的问题变得非常容易,因为我们知道传递它的数据类型可以更好地处理哪些问题。

(3)操作是原子的:所有Redis操作都是原子的,这保证了如果两个客户端同时访问Redis服务器,他们都会得到更新后的值。

(4)多功能实用程序:Redis是一个多功能工具,可以用于多种应用程序,例如缓存、消息传递、队列(Redis原生支持发布/订阅)、任何短暂的数据、应用程序,例如Web应用程序会话、页面点击计数等

1.3. Redis的缺点:

(1)单线程

(2)内存消耗

10.四郎

Shiro 是一个 Java 安全框架,旨在简化身份验证和授权。 Shiro 可以在 和 项目中使用。 它主要用于处理身份验证、授权、企业会话管理和加密。 Shiro的具体功能如下:

(1)身份认证/登录,验证用户是否具有相应的身份;

(2)授权,即权限验证,验证经过认证的用户是否具有某种权限; 即判断一个用户是否可以做某件事,比如:验证某个用户是否具有某个角色。 或者细粒度验证用户是否对某个资源有一定的权限;

(3)会话管理,即用户登录后,就是一个会话。 注销前,其所有信息都在中; 会话可以在普通环境下,也可以在Web环境下;

(4)加密保护数据的安全,例如将密码加密存储在数据库中,而不是明文;

(5)Web支持,可以方便地集成到Web环境中;

:缓存,比如用户登录后,不需要每次都检查他的用户信息、角色/权限,可以提高效率;

(6)Shiro支持多线程应用的并发验证,即如果一个线程中启动了另一个线程,权限可以自动传播;

(7)提供测试支持;

(8) 允许用户冒充另一个用户(如果他们允许的话);

(9)记住我,这是一个很常用的功能,就是登录一次后,下次就不需要登录了。

文字描述可能无法让猿友完全理解具体功能的含义。 下面以登录验证为例,给猿友们介绍一下Shiro的使用。 至于其他功能点,猿友们在使用的时候研究一下它们的用法也不晚。

11. 设计模式

这不是一个框架,自己可以忽略,但博主认为有必要了解一下设计模式的思想。

想法:

开闭原则:开闭原则是指对扩展开放,对修改封闭。 当程序需要扩展时,原有代码不能修改。

针对接口编程,真正针对接口编程,依赖于抽象而不是具体。

尝试使用组合/聚合而不是继承。

一个实体应尽可能少地与其他实体交互,使系统的功能模块相对独立。

使用多个隔离接口比使用单个接口更好。

里氏替换原则:(1)子类的能力必须大于或等于父类,即父类能使用的方法子类也能使用。 (2)返回值相同。 假设一个父类方法返回一个List,子类返回一个List,这当然是可以的。 如果父类方法返回一个,子类返回一个List,那就没有意义了。 这里子类返回值的能力比父类小。 (3)也有抛出异常的情况。 任何子类方法都可以声明它抛出超类方法声明的异常。

不能声明抛出父类未声明的异常。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON