javaweb开发常用架构

   JavaWeb是一个既可以包括前端也可以包括后端开发的技术体系,主要用于开发Web应用程序。其中,Java通常用于开发后端服务端组件实现业务逻辑的处理、数据存储和数据处理等任务,而前端部分则使用 HTML,CSS,JavaScript 等技术,用于实现用户交互、页面渲染等功能。因此,JavaWeb是一个涵盖前端和后端开发的全栈技术体系.

下面我们来说一下什么是mvc,当然有一些前端开发也是会涉及到mvc

MVC框架理解及优缺点

MVC:模型(Model)、视图(View)、控制器(Control).

流程如下:首先是视图向控制器发送请求,控制器再将业务请求发送给模型,然后模型处理请求业务并把结果返回给控制器,控制器根据结果再选择视图

 

MVC原理

一.MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.

另:MVC是一种程序开发设计模式,它实现了显示模块与功能模块的分离。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。它主要分模型、视图、控制器三层.

1、模型(model)它是应用程序的主体部分,主要包括业务逻辑模块(web项目中的Action,dao类)和数据模块(pojo类)。模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性.

2、视图(view) 用户与之交互的界面、在web中视图一般由jsp,html组成.

3、控制器(controller)接收来自界面的请求 并交给模型进行处理 在这个过程中控制器不做任何处理只是起到了一个连接的做用.

MVC的优点:

1、低耦合性:视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码。同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可,因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则.
2、高重用性和可适用性MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),例如:例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的仅令是改变视图层的实现方式,而控制层和模型层无需做任何改变.

3、较低的生命周期成本MVC使降低开发和维护用户接口的技术含量成为可能.

4、快速的部署使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中 精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上.

5、可维护性分离视图层和业务层也使得WEB应用更便于维护和修改.

6、有利于软件工程化管理由于不同的层各司其职,没一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码.

MVC的缺点

1、增加了系统结构和实现的复杂性.

2、视图与控制器间的过于紧密的连接.

3、视图对模型数据的低效率访问.

4、目前一般高级的界面工具或构造器不支持MVC模式,改造这些工具以适应MVC需要和建立分离的部件的代价很高,从而造成使用MVC的困难.

5、小型项目,反而会降低开发效率,虽然层与层之间相互分离,但之间关联性太强,没有做到独立的重用。增加了系统结构和实现的复杂性。视图对模型数据的低效率访问.

2.Spring框架是一个开源的Java应用程序框架,由Rod Johnson发起。它是一个轻量级的容器,主要针对bean的生命周期进行管理。Spring以Ioc(控制反转)和AOP(面向切面编程)为内核,使用基本的JavaBean来完成以前只可能由EJB(Java企业Bean)完成的工作,取代了EJB的臃肿、低效的开发模式。Spring框架是目前主流的Java Web开发框架之一,具有很高的凝聚力和吸引力,被数以百万计的开发人员使用来创建高性能、易于测试的、可重用的代码

spring是一套提供IOC和AOP功能架,为简洁开发提供的一套轻量级框架。主要包括一下几个模块:

spring context:提供框架式的bean访问方式,以及企业级任务(定时任务)等
spring beans:是ioc最著名的实现,是spring的基石。beans的核心是beanfactory和BeanDefinition。BeanDefinition就像是java中的pojo。
spring core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务。用来负责发现,创建并处理bean之间的关系。
spring aop:提供aop服务
spring mvc:提供面向Web应用的Model-View-Controller,即MVC实现。
spring DAO:对JDBC的抽象封装,简化了数据访问异常的处理,并能统一管理JDBC事务;
Spring ORM:对现有的ORM框架的支持;
IOC的理解
1.含义:ioc意思是控制反转,其核心实现是DI ,指将创建对象的权力交给ioc容器,由spring框架负责控制对象的生命周期和对象的依赖关系。其核心是DI 依赖注入。当我们只需要new一个对象的时候,有没有IOC是没有区别的。但是当我们new的这个对象又依赖了很多对象的时候就会变得及其麻烦,这时候交给spring 容器的话就会自动帮我解决依赖的问题,提供给我们想要的对象。
2.什么是DI:
IoC 的一个重点就是在程序运行时,动态的向某个对象提供它所需要的其他对象,这一点是通过DI(Dependency Injection,依赖注入)来实现的,即应用程序在运行时依赖 IoC 容器来动态注入对象所需要的外部依赖。而 Spring 的 DI 具体就是通过反射实现注入的,反射允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性
3.IOC的原理:spring的ioc的实现原理是工厂模式加反射机制。而bean如何注册到ioc容器中,以及bean对象的加载,实例化,初始化详细过程可以阅读bean加载流程

4.spring AOP的理解
AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,提高系统的可维护性。可用于权限认证、日志、事务处理。简单来说就是重复利用代码,重复的代码被称为切面。
AOP的关键在于代理模式,分为静态代理AspectJ,动态代理又分为实现接口类就用JDK动态代理或者Cglib动态代理。
1.静态代理:就是在编译阶段生成AOP代理类,并将切面织入到java字节码里卖弄,运行后就是增之后得AOP对象。
2.动态代理:

jdk动态代理核心是InvocationHandler接口和Proxy类,使用proxy类来生成目标类的代理类,当代理对象调用真是对象的方法时,invocationhandler通过invoke方法反射来调用目标类中的代码。
② 如果被代理类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIB(Code Generation Library),是一个代码生成的类库,可以在运行时动态的生成指定类的一个子类对象,并覆盖其中特定方法并添加增强代码,从而实现AOP。CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的

 

总结起来,Spring有如下优点

1.低侵入式设计,代码污染极低

2.独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺

3.Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦

4.Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用

5.Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问

6.Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

缺点:

使用了大量的反射机制,比较占内存,而且效率不如直接调用高

Spring包含很多的组件,使用的组件越多,Spring的启动就会越慢

配置比较复杂,不过后来引入了注解配置,简化了配置过程

没有做到依赖管理,比如控制各依赖之间的版本兼容关系,非常麻烦。后续SpringBoot这一点做得很不错。

启动Spring的IOC容器,需要依赖第三方的Web服务器,自身不能启动

使用Spring做出来的程序,逻辑不太清晰,代码不直观,需要时不时去查看配置才能理解代码

调试阶段不直观,不容易定位到Bug的问题所在。

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。

每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。

xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。

 

MyBatis特点

  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件。易于学习,易于使用。通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

  • 提供映射标签,支持对象与数据库的ORM字段关系映射。

  • 提供对象关系映射标签,支持对象关系组建维护。

  • 提供xml标签,支持编写动态sql。

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaWeb系统总体架构图是描述一个基于Java语言的Web应用的整体架构图。它包含了系统中各个组件的设计和交互关系。 JavaWeb系统总体架构图通常可以分为以下几个部分: 1. 客户端层:这一层包含用户使用的各种设备,如PC、手机、平板等。客户端通过浏览器或移动APP与服务器进行交互,发送HTTP请求以获取数据和展示页面。 2. Web服务器:这一层主要负责接收和处理客户端的HTTP请求。常用的Web服务器软件有Apache Tomcat、Jetty等。它们会将请求转发给相应的Servlet,或者处理静态资源的请求。 3. Servlet:这一层是JavaWeb开发的核心,用于接收和处理客户端发起的各种HTTP请求。Servlet能够处理请求并生成响应,通过调用业务逻辑的方法来完成具体的功能。Servlet可以通过与数据库等其他组件进行交互,处理数据的增删改查等操作。 4. 业务逻辑层:这一层主要包含业务逻辑的实现代码,负责处理各种用户请求、数据处理和业务规则等。在这一层,开发人员利用Java技术实现具体的功能,如用户登录验证、订单处理等。 5. 数据访问层:这一层负责与数据库进行交互,包括读取和写入数据等操作。开发人员使用Java语言编写的ORM框架,如Hibernate、MyBatis等,来简化数据库操作。 6. 数据库:这一层存储系统的数据,存储应用程序的持久化数据。常用的数据库软件有MySQL、Oracle、SQL Server等。 整个JavaWeb系统的架构图体现了前后端的分离,将业务逻辑和数据持久化进行了解耦,提高了系统的可维护性、可扩展性和可测试性。 以上是对JavaWeb系统总体架构图的简要回答,该图的具体形式和组件之间的细节会根据具体的需求和技术选择有所不同。 ### 回答2: 在JavaWeb系统中,总体架构图主要包括以下几个核心组件。 首先是客户端部分,包括用户使用的Web浏览器,它通过HTTP请求与服务器进行交互。用户在浏览器中输入URL,然后向服务器发送请求,服务器返回HTML等响应结果,最终浏览器将结果展示给用户。 第二个组件是Web服务器,它接收客户端的请求并将其转发给相应的处理器。常用的Web服务器有Tomcat、Jetty等,它们使用HTTP协议与客户端进行通信。 第三个组件是处理器,它主要负责处理客户端的请求并生成响应。处理器可以根据请求的不同来调用相应的业务逻辑处理方法,将处理结果封装为响应数据。 第四个组件是业务逻辑层,它负责处理具体的业务逻辑。在JavaWeb系统中,通常使用JavaBean来封装业务逻辑的处理方法,例如数据库的增删改查、业务逻辑判断等。业务逻辑层可以调用DAO层来与数据库进行交互。 第五个组件是数据访问层(DAO),它主要负责与数据库进行交互。在DAO层中,可以使用JDBC、MyBatis等技术来操作数据库,执行SQL语句,对数据进行增删改查等操作。 最后是数据库,它用于存储系统所需的数据。在JavaWeb系统中,常用的关系型数据库有MySQL、Oracle等,也可选用NoSQL数据库如MongoDB、Redis等。数据库可以根据需求设计表结构,并通过SQL语句进行数据的增删改查操作。 整个架构图中,客户端通过Web服务器与处理器交互,处理器调用业务逻辑层和DAO层来完成业务处理和数据访问。这样,JavaWeb系统就能够实现客户端与服务器之间的交互,实现具体的业务功能和数据存储。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值