Java框架概述_java框架是干嘛的-程序员宅基地

一、框架的意义
1.什么是框架?
框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。有了框架,我们就可以集中精力进行业务逻辑的开发而不用去关心它的技术实现以及一些辅助的业务逻辑。
说白了,框架就是封装好方便程序员操作的类,使项目的开发更简单,维护起来也更容易。
框架的本体,实际上是一些jar包和配置文件。
2.为什么要使用框架?
框架的优越性在于:
(1)集中精力完成系统的业务逻辑设计;
(2)使程序更容易扩展和维护,稳定性更强;
(3)处理系统很多细节问题,比如安全性问题。

二、框架的使用
(1)导入相关的jar包
(2)配置项目配置文件(比如web.xml),让项目用框架处理各种行为
(3)添加框架配置文件(比如struts-config.xml),设定框架如何处理各种行为(比如接收到某个请求时,调用哪个类处理)
(4)编写业务逻辑(继承、实现框架中的类、接口),完成具体处理操作。

三、MVC编程架构
1.什么是MVC?
MVC是一种编程架构,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
M:Model(模型),业务逻辑。
V:View(视图),用户界面。
C:Controller(控制器),协调业务逻辑(M)和用户界面(V)。

2.举例
最典型的MVC就是JSP + servlet + javabean的模式:
M:接收控制器(C)传来的指令,完成业务逻辑,进行数据库操作,然后将数据传给【控制器(C)或者视图(V)】
V:获取【控制器(C)或者模型(M)】传来的数据,将结果渲染到用户界面上。
C:截获用户请求,调用业务逻辑(M)完成操作(,然后将数据传递给用户界面(V))
M将数据传给C
M将数据直接给V

3.主流MVC架构:SSH和SSM
(1)SSH:Struts2做控制器(C),Spring管理各层的组件,Hibernate负责持久化层。
(2)SSM:SpringMVC做控制器(C),Spring管理各层的组件,MyBatis负责持久化层。
(3)共同点:
①Spring依赖注入DI来管理各层的组件。
②使用面向切面编程AOP管理事物、日志、权限等。
(4)不同点:
①Struts2和SpringMVC 控制器(C)控制视图和模型的交互机制的不同,
②Struts2是Action类级别,SpringMVC是方法级别,更容易实现RESTful风格。
(5)SSM和SSH不同主要在MVC实现方式,以及ORM持久化方面不同(Hiibernate与Mybatis)。SSM越来越轻量级配置,将注解开发发挥到极致,且ORM实现更加灵活,SQL优化更简便;而SSH较注重配置开发,其中的Hiibernate对JDBC的完整封装更面向对象,对增删改查的数据维护更自动化,但SQL优化方面较弱,且入门门槛稍高。

四、各框架简介【待补充修改】
1.Spirng
Spring提供了管理业务对象的一致方法,并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。
Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务–如果你需要–还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。

2.Struts2

3.Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

4.SpringMVC
5.Mybatis

如需要更多的java学习资料可私信小编“学习”获取哦~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yoyo31/article/details/117846161

智能推荐

sublime下载gbk编码_sublime更换编码格式-程序员宅基地

文章浏览阅读1.9k次,点赞5次,收藏9次。今日学习java,刚下sublime,编码中文时,发现原因是窗口默认是gbk需要在sublime里改变sublime编码方式,也改为gbk。可一看,无这选项上网看了别人教程,记录下来解决方案1.2.点击package control3.输入 package Control ,点install package4.输入conver 点击toUTF85.点击Set File Encoding to,选择gbk..._sublime更换编码格式

webrtc agc matlab,c++ WebRTC AGC(自动增益控制)-程序员宅基地

文章浏览阅读302次。我测试WebRTC AGC,但我一定是做错了,因为信号只是通过未修改。下面是我如何创建和初始化AGC:agcConfig.compressionGaindB = 9;agcConfig.limiterEnable = 1;agcConfig.targetLevelDbfs = 9; /* 9dB below full scale */WebRtcAgc_Create(&agc);Web..._webrtc_agc_init

前端面试(4)之zoom一面没后续-程序员宅基地

文章浏览阅读3.1k次。  视频面,面试官问的非常的细节,大概一个小时的时间,涉及到多个方面。是我面过的问的问题最多的,但是没有非常的深入。JS部分es5到es6,有什么变化?原型链,怎么不用instance of知道一个对象的类型。正则表达式中的exce方法。apply和call的区别。怎么用apply计算一个数组的最大值。typeof和instanceof的区别。怎么设置一个变量的默认值。异步加载j..._zoom一面结果什么时候出

gridcontrol中添加checkbox复选框_gridcontrol列添加checkbox-程序员宅基地

文章浏览阅读1.5k次。添加一列,FieldName为 "check",将ColumnEdit 设置为 复选框 样式。gridview1 editable设置为true 将要绑定的DataTable添加列 "check",Type 为 bool。 绑定DataTable到GridControl。 获取: string value = gridview.GetDataRow(i)["check_gridcontrol列添加checkbox

aarch64-linux-gnu/libGL.so: undefined reference to drmGetDevices2问题解决_/usr/bin/ld: /lib/aarch64-linux-gnu/libavcodec.so.-程序员宅基地

文章浏览阅读2.4k次。最近在Nvidia的PX2板子上安装Autoware,按照Autoware.ai的source build步骤进行环境配置、下载代码并进行编译。编译过程中遇到了下面的问题:--- stderr: kitti_player ..._/usr/bin/ld: /lib/aarch64-linux-gnu/libavcodec.so.58: undefined reference to

第一部分 C++语言 --> 第四章 循环结构的程序设计(例4.1~例4.4)(2016~2019)_2019:【例4.4】求阶乘-程序员宅基地

文章浏览阅读245次。很长时间没有更新了,以后每一周更新《信息学奥赛一本通》,每两周更新《C++编程基础》。_2019:【例4.4】求阶乘

随便推点

DarkNet(1)--添加新层教程(slice层为例)_darknet 如何使用sam层-程序员宅基地

文章浏览阅读2.8k次。1、源码src文件夹下:新建slice_layer.c和slice_layer.hps:稍后我会放到我的GitHub上2、makefile文件中:OBJ添加slice_layer.o3、include/darknet.h文件中:(1)LAYER_TYPE添加SLICE:typedef enum { CONVOLUTIONAL, DECONVOLUTIONAL, ..._darknet 如何使用sam层

Java工具类(18)—时间格式化工具类_java时间格式化工具类-程序员宅基地

文章浏览阅读3.6k次,点赞2次,收藏3次。Java工具类(18)—时间格式化工具类时间格式化工具,一秒前,一分钟前,一小时前,昨天,一天前package com.awifi.cloudnative.container.rbac.user.provider.utils;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/*** @Author 张鑫* @Dat_java时间格式化工具类

android webview 禁止放大缩小,在Android WebView中启用/禁用缩放-程序员宅基地

文章浏览阅读659次。在为客户开发Android应用程序时,我们遇到了同样的问题,我设法绕过了这一限制。我查看了WebView类的Android源代码,发现了updateZoomButtonsEnabled()-method与ZoomButtonsController-object一起使用,以根据浏览器的当前比例来启用和禁用缩放控件。我搜索了一种返回ZoomButtonsController-instance的getZ..._webview禁止网页缩放

ZZULIOJ 1166: 实数取整(指针专题)题解_1541:实数取整c语言指针专题-程序员宅基地

文章浏览阅读340次。题目描述读入一个实数,输出实数的整数部分。注意该实数的位数不超过100位。输入的整数部分可能含有不必要的前导0,输出时应去掉,当然,若整数部分为0,则该0不能去掉。如输入0023.56732,输出应为23,而不是0023;0.123对应的输出应为0。当然输入也可能不含小数部分。要求定义并使用rounding()函数,原型如下:char *rounding(char *p){//将字符串p表示的实数取整后生成新的字符串,并由函数返回}输入输入一个实数.输出输出整数部分。C语言代码#in_1541:实数取整c语言指针专题

"Pane is dead"-CentOS8安装报错解决方案(VM15)-程序员宅基地

文章浏览阅读5.6k次,点赞2次,收藏2次。尝试一下CentOS-8,没想到安装出现"Pane is dead(status 1)"这种问题,给出以下解决方案:安装环境:vmware workstation 15安装镜像:CentOS-8-x86_64-1905-dvd1.iso报错情景:解决方案一:打开虚拟机设置,选择CD/DVD(IDE)选项,把autoinst.iso移除,将加载的默认ISO镜像文件改为自己使用的镜像文件,即..._pane is dead

网络摄像头+net_冠军解决方案!用于脑肿瘤分割的nnU-Net改进-程序员宅基地

文章浏览阅读332次。在BraTS 2020的分割赛道中获得第一名!nnU-Net可以称为现在医学图像分割超强网络。nnU-Net for Brain Tumor Segmentation作者单位:德国癌症研究中心, 海德堡大学附属医院竞赛:Brain Tumor Segmentation (BraTS) Challenge 2020论文:nnU-Net for Brain Tumor Segmentation注:文末..._nnunet改进方法

推荐文章

热门文章

相关标签