1. 说说个人对Struts,Spring,Hibernate分别是什么的理解(其中要包括Struts,Spring,Hibernate的工作机制)
这是三个相互配合的框架组合,也是目前较为成熟的Java Web开发框架组合。
Struts(现在主要用Struts 2了)主要负责Web层的交互,也就是页面和代码间传参、类型转换、输入校验、国际化、文件上传下载这些直接与用户进行网页交互的功能,其核心机制是拦截器,将这些web开发的通用功能给封装了,便于直接利用。
Hibernate主要负责数据层的处理,也就是代码与关系数据库(RDBMS)的交互,是一种对象关系映射(ORM)框架,主要作用是将数据库中的表及其关系映射为Java的类对象及其关系,便于以面向对象(OO)方式进行操作,避免了JDBC直接采用sql方式编程的繁琐和非面向对象方式。(当然还是能调用SQL)。其他的功能包括缓存等功能主要是提高代码运行性能。
Spring框架主要是用它的两个功能,1)IoC(反转控制)功能,将代码中的JavaBean统一管理,实现自动注入,减少代码耦合。(用好这方面的功能,需要你很好理解设计模式方面的东西)。 2)面向切面(AOP)功能,能将一部分通用代码切入到程序中,例如日志记录,事务管理里用的特别多。Spring其实可以理解为一个”胶水“,利用IoC和AOP,可以与Struts 2和Hibernate进行整合,比如管理Struts2 Action,负责业务层代码注入,实现数据库的注解式事务管理等等。
在这三个框架其实每个方面都有替代的方案,比如Struts 2可以改用SpringMVC,Hibernate改用MyBatis,Spring IoC也有Google Guice可替。只不过这三个目前比较成熟,能查到的资料也比较多,所以大多项目喜欢用这个组合。
以上是我个人的理解。
2. 想问一下struts2和hibernate分别负责哪一部分,它们有什么不同怎样整合它们
struts2负责的是控制器部分,hibernate 负责的是模型部分;比如,由页面发出一个请求,由struts2接收,然后struts2会做一些数据控制,如数据是否合法,然后去调用相应的服务层(即是一些接口方法);然后服务层去调用DAO层,这里的DAO层里用的就是hibernate来实现对数据库的操作,DAO层处理完数据库的数据后返回结果给服务层,服务层再返回给struts2,struts2再返回到相应的页面。一个请求流程就是这样实现的了。
3. Hibernate是什么
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五的核心接口分别加以介绍。
·Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
·SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
·Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
·Transaction接口:Transaction接口负责事务相关的操作。它是可选的,可发人员也可以设计编写自己的底层事务处理代码。
·Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
4. 中间件是什么干嘛用的
中间件是一种独立的系统软件或服务程序,是连接两个独立应用程序或独立系统的软件,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。
中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
随着计算机技术的快速发展,更多的应用软件被要求在许多不同的网络协议、不同的硬件生产厂商以及不一样的网络平台和环境上运营。这导致了软件开发者需要需要开发多种应用程序来达到运营的目的。所以,中间件技术的产生,在极大程度上减轻了开发者的负担,使得网络的运行更有效率。
(4)hibernate数据库中间件扩展阅读
中间件技术
1、远程过程调用
一个应用程序使用RPC来“远程”执行一个位于不同地址空间里的过程,并且从效果上看和执行本地调用相同。事实上,一个RPC应用分为两个部分:server和client。server提供一个或多个远程过程;client向server发出远程调用。
在RPC模型中,client和server只要具备了相应的RPC接口,并且具有RPC运行支持,就可以完成相应的互操作,而不必限制于特定的server。
2、面向消息的中间件
MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。消息放入适当的队列时,目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。
对应用程序的结构没有约束:在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。
3、对象请求代理
可向上提供不同形式的通讯服务,包括同步、排队、订阅发布、广播等等,在这些基本的通讯平台之上,可构筑各种框架,为应用程序提供不同领域内的服务,如事务处理监控器、分布数据访问、对象事务管理器OTM等。
4、事务处理监控
事务处理监控最早出现在大型机上,为其提供支持大规模事务处理的可靠运行环境。随着分布计算技术的发展,分布应用系统对大规模的事务处理提出了需求,比如商业活动中大量的关键事务处理。
5. Javaweb开发,到底什么能叫做框架,什么又叫做中间件呢
框架:
1是什么:框架就是一套规范。既然是规范,你使用这个框架就要遵守这个框架所规定的约束。在Java开发中,框架是用一套规则+一群jar包来表示的。
2为什么:我们为什么要使用框架?
(1)原因:就好比盖房子,有10个人一起合作盖,此时,框架就好比图纸。如果没有盖房子的图纸,那么每个人都有自己的想法,那么盖出的房子一定不是房主想要的。而有了图纸,就可以约束每个人要怎么盖我们的房子,砌砖的要切成什么样子,方向的门要超南朝北等都被约束了。这样便于团队的合作与开发。放在我们的开发中,如果一个类的名字,A同学起名字叫A.java B同学起名教B.java,可是其实这两个类的功能是一样的,但是就是因为没有规范,所以造成了混乱,不利于团队合作与开发,如果使用了框架,框架就会对类的名字有约束,比如Struts,控制类我们都起名字叫**Action 这样很容易让人看明白功能。
(2)意义:框架不仅仅只完成这些简单的约束,更重要的是,框架为我们封装好了一些冗余,且重用率低的代码。并且使用反射与动态代理机制,将代码实现了通用性。比如如果你说servlet开发,你需要在servlet获取表单的参数,每次都要获取很麻烦,而struts底层就使用反射机制和拦截器机制帮助我们获取表单的值,我们就不用每次都手写那些代码了,简化了开发,当然你必须遵守一些规定来配置。还有比如hibernate,它提供了一些通用性很强的对数据库的增删改差,如果你使用jdbc每次做一些简单的crud的时候都必须写sql,但使用hibernate就不需要这么麻烦了,直接save,update就可以了。。。当然,你还是要遵循其一些规范而配置。同理spring也是如此。
3怎么使用 刚才说了,框架在java中是通过jar体现的。如果使用这个是学习的东西,我也没法讲,但首先你需要把jar导入,才可以使用其“规定”。先写个helloworld。。。慢慢学习。。。
补充-框架的好处和缺点:框架的好处已经说了很多了,便于团队开发,提供了一些现成的机制,简化开发难度,还有些框架可以解耦等,比如spring。缺点就是效率上没有servlet开发高,但是随着硬件的提高,这些也不是什么问题。差异不大,其实如果要求效率的话,servlet+jdbc是最好的,但多方面考虑的话,使用框架更好。
什么是消息中间件
1 用来提升系统性能:
简单理解就是应用不用关心处理结果的部分,可以通过消息中间件异步通知消息。然后其他应用服务器接收到消息后,慢慢处理。
2 应用解耦和通信:
简单理解就是多个应用之间进行数据交互。
例:短信发送,你不可能一直等到短信发送成功了。再去处理逻辑,所以就可以用到消息中间件通知可以发短信的系统慢慢去发。
你上面的这些 Mybatis Shiro是属于java的框架,RabbitMQ,Redis是属于消息中间件, 而Eureka是注册中心,相当于java的客户端,希望对你有所帮助,如果想要对这方面有更深入的了解,欢迎关注私信我,带你玩转java
6. java web 开发,hibernate ,使用数据库是oracle,当我保存一个带有空格的数据到数据库中
一般数据库的乱码产生主要是因为字符集问题产生,你需要对比JAVA中间件设置的字符集(如GBK),以及你的编码是否有字符集限制,再一个查看数据库的字符集设置,三者是否一致,或者数据库是否是前两者的超集。
7. 请问JSP、Servlet、EJB、hibernate之间有什么关系
jsp是一种前台表现技术,和html功能上有些一样,不过Jsp页面是动态的,是需要服务器端进行解析和编译的,成功执行之后才由http协议传到浏览器,传回的都是html代码。
servlet是服务器端程序,请求到达服务器是通过servlet解析请求做出相应
servlet和jsp一起学习,这两个是web 学习的基础,所有的web 开发框架的最最底层都是这两个技术
hibernate是一中ORMapping映射框架,利用这个框架可以把操作数据库中的一条条数据变成操作一个个对象,毕竟java是面向对象的,一切皆对象。
hibernate最好是你在学完了servlet,jsp,jdbc后学习。所有的ormapping框架都是在jdbc的基础上实现的啊。
ejb是一种特殊的javabean ,最大的特点是可以分布式的应用。ejb技术现在是ejb 3.X吧,不过好像使用不太多,2.X使用也不是很多,因为开发成本高,不到万不得已一般不会采用这个方案的。
建议先学基础这个暂不考虑