Java的三大框架是什么? Java三大框架具体指什么?
java\u7684\u4e09\u5927\u6846\u67b6\u662f\u4ec0\u4e48,\u529f\u80fd\u5404\u662f\u4ec0\u4e48\u5e38\u8bf4\u7684\u4e09\u5927\u6846\u67b6\u6307\uff1aSSH\uff0c\u5373\uff1aSpring\u3001Struts\u3001Hibernate\u3002
Spring\uff1a\u529f\u80fd\u5f3a\u5927\u7684\u7ec4\u4ef6\u7c98\u5408\u6d4e\uff0c\u80fd\u591f\u5c06\u4f60\u7684\u6240\u6709\u7684java\u529f\u80fd\u6a21\u5757\u7528\u914d\u7f6e\u6587\u4ef6\u7684\u65b9\u5f0f\u7ec4\u5408\u8d77\u6765\u6210\u4e3a\u4e00\u4e2a\u5b8c\u6210\u7684\u5e94\u7528\u3002Spring\u662f\u4e00\u4e2a\u89e3\u51b3\u4e86\u8bb8\u591a\u5728J2EE\u5f00\u53d1\u4e2d\u5e38\u89c1\u7684\u95ee\u9898\u7684\u5f3a\u5927\u6846\u67b6\u3002Spring\u63d0\u4f9b\u4e86\u552f\u4e00\u7684\u6570\u636e\u8bbf\u95ee\u62bd\u8c61\uff0c\u5305\u62ec\u7b80\u5355\u548c\u6709\u6548\u7387\u7684JDBC\u6846\u67b6\uff0c\u6781\u5927\u7684\u6539\u8fdb\u4e86\u6548\u7387\u5e76\u4e14\u51cf\u5c11\u4e86\u53ef\u80fd\u7684\u9519\u8bef\u3002Spring\u7684\u6570\u636e\u8bbf\u95ee\u67b6\u6784\u8fd8\u96c6\u6210\u4e86Hibernate\u548c\u5176\u4ed6O/R mapping\u89e3\u51b3\u65b9\u6848\u3002Spring\u8fd8\u63d0\u4f9b\u4e86\u552f\u4e00\u7684\u4e8b\u52a1\u7ba1\u7406\u62bd\u8c61\uff0c\u5b83\u80fd\u591f\u5728\u5404\u79cd\u5e95\u5c42\u4e8b\u52a1\u7ba1\u7406\u6280\u672f\u3002
Struts\uff1a\u628aServlet\u3001JSP\u3001\u81ea\u5b9a\u4e49\u6807\u7b7e\u548c\u4fe1\u606f\u8d44\u6e90(message resources)\u6574\u5408\u5230\u4e00\u4e2a\u7edf\u4e00\u7684\u6846\u67b6\u4e2d\uff0c\u5f00\u53d1\u4eba\u5458\u5229\u7528\u5176\u8fdb\u884c\u5f00\u53d1\u65f6\u4e0d\u7528\u518d\u81ea\u5df1\u7f16\u7801\u5b9e\u73b0\u5168\u5957MVC\u6a21\u5f0f\uff0c\u6781\u5927\u7684\u8282\u7701\u4e86\u65f6\u95f4\uff0c\u6240\u4ee5\u8bf4\u5b83\u662f\u5927\u540d\u9f0e\u9f0e\u7684\u529f\u80fd\u5f3a\u5927\u7684MVC\u67b6\u6784\u3002
Hibernate\uff1a\u5f3a\u5927\u7684ORM\u5de5\u5177\uff0c\u7136\u540e\u5f88\u65b9\u4fbf\u5c06\u6570\u636e\u5e93\u8bb0\u5f55\u8f6c\u5316\u4e3ajava\u7684\u5b9e\u4f53\u5b9e\u4f8b\uff0c\u5c06java\u7684\u5b9e\u4f53\u5b9e\u4f8b\u5f88\u5bb9\u6613\u7684\u4fdd\u5b58\u5230\u6570\u636e\u5e93\u4e2d\uff0c\u5982\u679c\u4f60\u4e0d\u9700\u8981\u5f88\u590d\u6742\u7684\u6570\u636e\u5e93\u8bbf\u95ee\uff0c\u5229\u7528\u5b83\u4f60\u6839\u672c\u5c31\u4e0d\u7528\u4e86\u89e3\u6570\u636e\u5e93\u7684\u7ec6\u8282\u3002
\u62d3\u5c55\u8d44\u6599Java\u662f\u4e00\u79cd\u53ef\u4ee5\u64b0\u5199\u8de8\u5e73\u53f0\u5e94\u7528\u8f6f\u4ef6\u7684\u9762\u5411\u5bf9\u8c61\u7684\u7a0b\u5e8f\u8bbe\u8ba1\u8bed\u8a00\u3002Java \u6280\u672f\u5177\u6709\u5353\u8d8a\u7684\u901a\u7528\u6027\u3001\u9ad8\u6548\u6027\u3001\u5e73\u53f0\u79fb\u690d\u6027\u548c\u5b89\u5168\u6027\uff0c\u5e7f\u6cdb\u5e94\u7528\u4e8ePC\u3001\u6570\u636e\u4e2d\u5fc3\u3001\u6e38\u620f\u63a7\u5236\u53f0\u3001\u79d1\u5b66\u8d85\u7ea7\u8ba1\u7b97\u673a\u3001\u79fb\u52a8\u7535\u8bdd\u548c\u4e92\u8054\u7f51\uff0c\u540c\u65f6\u62e5\u6709\u5168\u7403\u6700\u5927\u7684\u5f00\u53d1\u8005\u4e13\u4e1a\u793e\u7fa4\u3002
Java\u7531\u56db\u65b9\u9762\u7ec4\u6210\uff1aJava\u7f16\u7a0b\u8bed\u8a00\uff0c\u5373\u8bed\u6cd5\u3002Java\u6587\u4ef6\u683c\u5f0f\uff0c\u5373\u5404\u79cd\u6587\u4ef6\u5939\u3001\u6587\u4ef6\u7684\u540e\u7f00\u3002Java\u865a\u62df\u673a(JVM)\uff0c\u5373\u5904\u7406*.class\u6587\u4ef6\u7684\u89e3\u91ca\u5668\u3002Java\u5e94\u7528\u7a0b\u5e8f\u63a5\u53e3(Java API)\u3002
\u5e38\u8bf4\u7684\u4e09\u5927\u6846\u67b6\u6307\uff1aSSH
\u5373\uff1aSpring\u3001Struts\u3001Hibernate
Spring\uff1a\u529f\u80fd\u5f3a\u5927\u7684\u7ec4\u4ef6\u7c98\u5408\u6d4e\uff0c\u80fd\u591f\u5c06\u4f60\u7684\u6240\u6709\u7684java\u529f\u80fd\u6a21\u5757\u7528\u914d\u7f6e\u6587\u4ef6\u7684\u65b9\u5f0f\u7ec4\u5408\u8d77\u6765\uff08\u8fd8\u8ba9\u4f60\u611f\u89c9\u4e0d\u5230spring\u7684\u5b58\u5728\uff09\u6210\u4e3a\u4e00\u4e2a\u5b8c\u6210\u7684\u5e94\u7528
Struts\uff1a\u4e0d\u8bf4\u4e86\uff0c\u5927\u540d\u9f0e\u9f0e\u7684\u529f\u80fd\u5f3a\u5927\u7684MVC\u67b6\u6784
Hibernate\uff1a\u5f3a\u5927\u7684ORM\u5de5\u5177\uff0c\u7136\u540e\u5f88\u65b9\u4fbf\u5c06\u6570\u636e\u5e93\u8bb0\u5f55\u8f6c\u5316\u4e3ajava\u7684\u5b9e\u4f53\u5b9e\u4f8b\uff0c\u5c06java\u7684\u5b9e\u4f53\u5b9e\u4f8b\u5f88\u5bb9\u6613\u7684\u4fdd\u5b58\u5230\u6570\u636e\u5e93\u4e2d\uff0c\u5982\u679c\u4f60\u4e0d\u9700\u8981\u5f88\u590d\u6742\u7684\u6570\u636e\u5e93\u8bbf\u95ee\uff0c\u5229\u7528\u5b83\u4f60\u6839\u672c\u5c31\u4e0d\u7528\u4e86\u89e3\u6570\u636e\u5e93\u7684\u7ec6\u8282
\u7b80\u5355\u63cf\u8ff0\u4e86\u4e00\u4e0b\uff0c\u5185\u5bb9\u975e\u5e38\u591a\uff0c\u81ea\u5df1\u8ba4\u771f\u770b\u770b\u5427
1、Struts
为了解决这些问题,出现了Struts框架,它是一个完美的MVC实现,它有一个中央控制类(一个Servlet),针对不同的业务,我们需要一个Action类负责页面跳转和后台逻辑运算,一个或几个JSP页面负责数据的输入和输出显示,还有一个Form类负责传递Action和JSP中间的数据。JSP中可以使用Struts框架提供的一组标签,就像使用HTML标签一样简单,但是可以完成非常复杂的逻辑。从此JSP页面中不需要出现一行包围的Java代码了。
可是所有的运算逻辑都放在Struts的Action里将使得Action类复用度低和逻辑混乱,所以通常人们会把整个Web应用程序分为三层,Struts负责显示层,它调用业务层完成运算逻辑,业务层再调用持久层完成数据库的读写。
使用JDBC连接来读写数据库,我们最常见的就是打开数据库连接、使用复杂的SQL语句进行读写、关闭连接,获得的数据又需要转换或封装后往外传,这是一个非常烦琐的过程。
2、Hibernate
这时出现了Hibernate框架,它需要你创建一系列的持久化类,每个类的属性都可以简单的看做和一张数据库表的属性一一对应,当然也可以实现关系数据库的各种表件关联的对应。当我们需要相关操作是,不用再关注数据库表。我们不用再去一行行的查询数据库,只需要持久化类就可以完成增删改查的功能。使我们的软件开发真正面向对象,而不是面向混乱的代码。我的感受是,使用Hibernate比JDBC方式减少了80%的编程量。
现在我们有三个层了,可是每层之间的调用是怎样的呢?比如显示层的Struts需要调用一个业务类,就需要new一个业务类出来,然后使用;业务层需要调用持久层的类,也需要new一个持久层类出来用。通过这种new的方式互相调用就是软件开发中最糟糕设计的体现。简单的说,就是调用者依赖被调用者,它们之间形成了强耦合,如果我想在其他地方复用某个类,则这个类依赖的其他类也需要包含。程序就变得很混乱,每个类互相依赖互相调用,复用度极低。如果一个类做了修改,则依赖它的很多类都会受到牵连。 为此,出现Spring框架。
3、Spring
Spring的作用就是完全解耦类之间的依赖关系,一个类如果要依赖什么,那就是一个接口。至于如何实现这个接口,这都不重要了。只要拿到一个实现了这个接口的类,就可以轻松的通过xml配置文件把实现类注射到调用接口的那个类里。所有类之间的这种依赖关系就完全通过配置文件的方式替代了。所以Spring框架最核心的就是所谓的依赖注射和控制反转。
现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,这个结构是目前国内最流行的Java Web应用程序架构了。另外,由于Spring使用的依赖注射以及AOP(面向方面编程),所以它的这种内部模式非常优秀,以至于Spring自己也实现了一个使用依赖注射的MVC框架,叫做Spring MVC,同时为了很好的处理事物,Spring集成了Hibernate,使事物管理从Hibernate的持久层提升到了业务层,使用更加方便和强大。
Struts框架是2000年就开始起步了,技术相当成熟,目前全球Java开发中Struts框架是显示层技术中当之无愧的王者。它拥有大量的用户群和很好的开发团队。这也是国内大部分Java软件公司对新进员工的基本要求。
Java的三大框架是:
1.Structs框架是最早的Java开源框架之一.Struts是MVC设计模式的一个优秀实现.
Struts是最早的java开源框架之一,它是MVC设计模式的一个优秀实现。 Struts定义了通用的Controller(控制器),通过配置文件(通常是 Struts -config.xml)隔离Model(模型)和View(视图),以Action的概念以对用户请求进行了封装,使代码更加清晰易读。 Struts还提供了自动将请求的数据填充到对象中以及页面标签等简化编码的工具。 Struts能够开发大型Java Web项目。
2.Struts2以WebWork优秀的设计思想为核心,吸收了 Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web 应用程序框架
Struts2以WebWork优秀的设计思想为核心,吸收了 Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web 应用程序框架。 Struts2引入了几个新的框架特性:从逻辑中分离出横切关注点的拦截器、减少或者消除配置文件、贯穿整个框架的强大表达式语言、支持可变更和可重用的基于MVC模式的标签API, Struts2充分利用了从其它MVC框架学到的经验和教训,使得 Struts2框架更加清晰灵活。
3.Hibernate是一个开放源代码的对象关系映射框架
它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
三大框架Struts+Hibernate+Spring。Struts主要负责表示层的显示;Spring负责对数据库的操作;Hibernate主要是数据持久化到数据库。
Java编程语言有三种技术架构,分别是JavaEE、JavaSE、JavaME。
JavaEE主要应用于开发企业环境下的应用程序,主要针对web程序开发;
JavaSE可以完成桌面应用程序开发,是JavaEE和JavaME架构的基础;
JavaME主要开发电子消费产品和嵌入式设备。
常说的三大框架指:SSH,即:Spring、Struts、Hibernate。Spring:功能强大的组件粘合济,能够将你的所有的java功能模块用配置文件的方式组合起来成为一个完成的应用。Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。
绛旓細Java涓夊ぇ妗嗘灦锛歋truts锛孲pring锛孒ibernate銆1. Struts鍦ㄩ」鐩腑鐨勪綔鐢 Struts 鍦ㄩ」鐩富瑕佽捣鎺у埗浣滅敤锛屽彧瑕佺敤浜巜eb灞傦紙鍗宠鍥惧眰鍜屾帶鍒跺眰锛塖truts鏈韩鏄娇鐢ㄥ吀鍨嬬殑MVC缁撴瀯瀹炵幇鐨勶紝椤圭洰涓娇鐢ㄤ簡struts涔嬪悗灏辩瓑浜庨」鐩篃鏄竴涓狹VC缁撴瀯锛屼娇椤圭洰缁撴瀯鏇存竻鏅帮紝鍒嗗伐鏇存槑缁嗐係truts鍦ㄩ」鐩腑涓昏璐熻矗瑙嗗浘灞傘佹帶鍒跺眰锛屽湪瑙嗗浘灞...
绛旓細涓夊ぇ妗嗘灦锛Struts+Hibernate+Spring Java涓夊ぇ妗嗘灦涓昏鐢ㄦ潵鍋歐EN搴旂敤銆係truts涓昏璐熻矗琛ㄧず灞傜殑鏄剧ず Spring鍒╃敤瀹冪殑IOC鍜孉OP鏉ュ鐞嗘帶鍒朵笟鍔★紙璐熻矗瀵规暟鎹簱鐨勬搷浣滐級Hibernate涓昏鏄暟鎹寔涔呭寲鍒版暟鎹簱銆佸啀鐢╦sp鐨剆ervlet鍋氱綉椤靛紑鍙戠殑鏃跺欐湁涓獁eb.xml鐨勬槧灏勬枃浠讹紝閲岄潰鏈変竴涓猰apping鐨勬爣绛惧氨鏄敤鏉ュ仛鏂囦欢鏄犲皠鐨勩傚綋浣...
绛旓細甯歌鐨勪笁澶ф鏋舵寚锛歋SH锛屽嵆锛歋pring銆丼truts銆丠ibernate銆係pring锛氬姛鑳藉己澶х殑缁勪欢绮樺悎娴庯紝鑳藉灏嗕綘鐨勬墍鏈夌殑java鍔熻兘妯″潡鐢ㄩ厤缃枃浠剁殑鏂瑰紡缁勫悎璧锋潵鎴愪负涓涓畬鎴愮殑搴旂敤銆係pring鏄竴涓В鍐充簡璁稿鍦↗2EE寮鍙戜腑甯歌鐨勯棶棰樼殑寮哄ぇ妗嗘灦銆係pring鎻愪緵浜嗗敮涓鐨勬暟鎹闂娊璞★紝鍖呮嫭绠鍗曞拰鏈夋晥鐜囩殑JDBC妗嗘灦锛屾瀬澶х殑鏀硅繘浜嗘晥鐜囧苟...
绛旓細JAVA涓殑涓夊ぇ妗嗘灦涓篠SH锛屽嵆Spring銆丼truts銆丠ibernate銆侻VC锛圡odel View Controller锛夋槸涓绉嶆ā鍨嬶紙model锛-瑙嗗浘锛坴iew锛-鎺у埗鍣紙controller锛夌缉鍐欙紝涓绉嶈蒋浠惰璁″吀鑼冿紝鐢ㄤ竴绉嶄笟鍔¢昏緫銆佹暟鎹佺晫闈㈡樉绀哄垎绂绘柟娉曠殑缁勭粐浠g爜锛屽皢涓氬姟閫昏緫鑱氶泦鍒颁竴涓儴浠堕噷闈傜患涓婃墍杩帮紝ABC绛3涓夐」涓殑妗嗘灦閮藉睘浜嶫2EE妗嗘灦锛孧VC...
绛旓細Java鏈変笁澶ф鏋讹細Struts,Hibernate鍜孲pring銆俿truts鏄紑婧愯蒋浠讹紝閫氳繃瀛︿範struts鐨勬祦绋嬶紝鏋舵瀯锛宮odel閮ㄥ垎锛寁iew閮ㄥ垎鍜宑ontorller缁勪欢鏉ヤ簡瑙f鏋讹紱Hibernate鏄紑婧愪唬鐮佺殑瀵硅薄鍏崇郴鏄犲皠妗嗘灦锛岄氳繃瀛︿範session鎺ュ彛绛夋潵浜嗚В妗嗘灦銆備笁澶ф鏋剁畝浠1銆丼pring Spring 鏄竴涓В鍐充簡璁稿鍦↗2EE 寮鍙戜腑甯歌鐨勯棶棰樼殑寮哄ぇ妗嗘灦. Spring ...
绛旓細java鐨勪笁澶ф鏋灞炰簬web銆俲ava涓夊ぇ妗嗘灦鐨勫悇鑷綔鐢細hibernate鏄簳灞傚熀浜巎dbc鐨刼rm(瀵硅薄鍏崇郴鏄犲皠)鎸佷箙鍖栨鏋讹紝鍗筹細琛ㄤ笌绫荤殑鏄犲皠锛屽瓧娈典笌灞炴х殑鏄犲皠锛岃褰曚笌瀵硅薄鐨勬槧灏 鏁版嵁搴撴ā鍨 涔熷氨鏄疢odel;struts鎻愪緵鐨勪赴瀵屾爣绛炬槸鐢ㄤ簬鏄剧ず灞俈iew;鍚屾椂struts涔熷厖褰撲簡瀹炵幇Control鐨勫姛鑳(涓嶇鏄疭truts1锛岃繕鏄疭truts2)锛屾帴鏀跺弬鏁...
绛旓細鍦⊿truts涓紝涓昏瀛樺湪涓夌Bean锛屽垎鍒槸锛欰ction锛孉ctionForm锛孍JB鎴栬匤ava Bean銆Struts妗嗘灦娌℃湁鍏蜂綋瀹氫箟妯″瀷灞傜殑瀹炵幇锛屽湪瀹為檯寮鍙戜腑锛屾ā鍨嬪眰閫氬父鏄拰涓氬姟閫昏緫绱у瘑鐩歌繛鐨勶紝骞朵笖瑕佸搴曞眰鏁版嵁杩涜鎿嶄綔銆備笅闈粙缁嶄竴绉嶅紑鍙戠瓥鐣ワ紝灏咹ibernate寮曞叆鍒癝truts妗嗘灦鐨勬ā鍨嬪眰涓紝浣跨敤瀹冩潵杩涜鏁版嵁灏佽鍜屾槧灏勶紝鎻愪緵鎸佷箙鍖栫殑鏀寔...
绛旓細鎵璋涓夊ぇ妗嗘灦锛屽嵆struts銆乻pring鍙奾ibernate銆傝鎯冲涔犲ソ涓夊ぇ妗嗘灦锛屽揩閫熸帉鎻★紝鏈濂界殑鏂规硶鏃犵枒鏄悊璁轰笌瀹炶返缁撳悎锛岀敱绠鍏ョ箒锛岀敱鍗曚竴鍒板叏閮紝閫愪竴鏀诲厠锛屽叿浣撳涔犳楠ゅ涓嬶細1銆佸厛瀛︿範struts锛宻truts鏄笘鐣屼笂绗竴涓粡鍏哥殑mvc妗嗘灦锛屽叾浣滅敤灏辨槸灏嗕笟鍔¢昏緫涓庤鍥惧垎绂诲紑鏉ワ紝浣垮緱椤圭洰灞傛鍒嗘槑锛屾竻鏅帮紝鏇村叿鏈夌粨鏋勬с
绛旓細1銆丼pring鏄粈涔锛歋pring鏄竴涓交閲忕骇鐨凞I鍜孉OP瀹瑰櫒妗嗘灦銆傝瀹冭交閲忕骇鏈変竴澶ч儴鍒嗗師鍥犳槸鐩稿涓嶦JB鐨勶紙铏界劧鏈汉浠庢病鏈夋帴瑙﹁繃EJB鐨勫簲鐢級锛岄噸瑕佺殑鏄紝Spring鏄潪渚靛叆寮忕殑锛屽熀浜巗pring寮鍙戠殑搴旂敤涓鑸笉渚濊禆浜巗pring鐨勭被銆2銆丼truts2 鏄竴涓浉褰撳己澶х殑Java Web寮婧愭鏋讹紝鏄竴涓熀浜嶱OJO鐨凙ction鐨凪VC Web妗嗘灦銆
绛旓細Javaweb 鐜板湪甯哥敤鐨勬鏋舵妧鏈紝SSH,SSM 涔熷氨鏄痵trut2鍜孲pring锛宧ibernate浠ュ強mybatis,杩樻湁SpringMVC杩樻湁鏂伴矞鎶鏈疭pring Boot 锛宻pringcloud绛夌瓑 .杩欎簺妗嗘灦骞朵笉鏄叏閮ㄩ兘蹇呴』鎺屾彙锛屼絾鏄紝鑷冲皯瑕佹帉鎻3涓紝鍙互璇碨SH 鎴栬匰SM鍏朵腑涔嬩竴锛妗嗘灦鏄闇瑕佹帉鎻$殑涓嶆槸鐞嗚В浜嗚В灏卞彲浠ワ紝鍥犱负宸ヤ綔涓綘鏈夊繀瑕侀氳繃妗嗘灦杩涜缂栫爜鐨...