1、Struts2工作原理
a、客户端发送请求到服务端发出请求,在web.xml配置了Strust2的主过滤器
StrutsPreparedAndExcuteFilter,和对应的过滤资源路径
b、经过几个过滤器会到FilterDispatcher过滤器。经过ActionProxy代理Action,根据Struts配置文件信息,和请求的URI决定调用哪个Action的哪个方法。
c、Action中的方法执行完成后会返回一个逻辑视图,ActionInvocation类负责将逻辑视图映射到具体的物理视图中,然后显示结果
2、Hibernate的工作原理及优点
A、原理
1)创建一个Configuration配置对象,调用它的Configure()方法获取Hibernate的主配置文件,加载数据库连接和方言信息,已经Hibernate的配置的映射文件。
2)通过Configuration对象的buildSessionFactory()方法创建一个SessionFactory
3)SessionFactory对象可以OpenSession或者getCurrentSession()方法获取一个Session对象
4)用Transaction tx=Session.beginTransaction()方法开启事务
5)Session.save()\delete()\update()\get()方法实现增删改查 或者创建Criteria对象或者Query对象执行更为复杂的查询
6)提交事务,tx.commit()
7)出现异常时可以回滚事务tx.rollback()
8) 关闭Session对象
B、优点
1)对JDBC进行封装,简化了数据访问和操作的重复性代码。
2)Hibernate是一个优秀的持久层框架,完全实现ORM对象关系映射,很好的实现对象和关系数据的转换。
3)H关系ernate提供访问各种数据库和数据源的方言,能支持多种数据,解决了各种数据库产品的SQL语句差异在更换数据库是的问题。
3、Hibernate的缓存有哪些?简单介绍下
Hibernate的缓存有两个一级缓存和二级缓存
1)一级缓存:session级的缓存也叫事务级的缓存,只缓存实体,生命周期和session一致。不能对其进行管理。
2)二级缓存:sessionFactory缓存,也叫进程级的缓存,使用第3方插件实现的,也只缓存实体,生命周期和sessionFactory一致,可以进行管理。首先配置第3放插件 ,我们用的是EHCache,在hibernate.cfg.xml文件中加入<property name="hibernate.cache.user_second_level_cache">true</property>在映射中也要显示的 调用,<cache usage="read-only"/>二级缓存之查询缓存:对普通属性进行缓存。如果关联的表发生了修改,那么查询缓存的生命周期也结束了。在程序中必须手动启 用查询缓存:query.setCacheable(true);
4、如何优化Hibernate?
1.使用双向一对多关联,不使用单向一对多
2.灵活使用单向一对多关联
3.不用一对一,用多对一取代
4.配置对象缓存,不使用集合缓存
5.一对多集合使用Bag,多对多集合使用Set
6. 继承类使用显式多态
7. 表字段要少,表关联不要怕多,有二级缓存撑腰
5.Hibernate有哪几种查询数据的方式
(1)导航对象图查询
(2)OID查询
(3)HQL
(4)QBC
(5)本地SQL
6、Session.get(Class,id)和Session.load(Class,id)的区别
1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;
如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常: rg.hibernate.ObjectNotFoundException;
2:load支持延迟加载,get不支持延迟加载。
7、Spring的IOC、DI、AOP分别指什么,原理、作用是什么?为什么使用Spring框架?
1、IOC: 控制反转<Inversion of control> 应用工厂设计模式和反射原理实现
将对象的初始化装配和调用的主动权交个容器来处理,通过配置文件通知容器去装配和调用哪一个bean对象,这样可以降低各个层之间的耦合度。
提高了程序的代码重用性和可维护性。
实现方法:<1>依赖查找(Dependency Lookup):容器提供回调接口和上下文环境给组件。EJB和Apache Avalon都使用这种方式。
<2>依赖注入(Dependency Injection):组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。后者是时下最流行的IoC类型
2、DI:依赖注入Dependency Injection
在运行期,由外部容器动态地将依赖对象注入到组件中
3、AOP:面向切面编程 Aspect Oriented Programming 实现原理是动态代理设计
可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序统一添加功能的一种技术。
主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等
8、Spring 的有点:
1、降低组件之间的耦合度,实现软件各层之间的解耦。
2、可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播、
3、容器提供单例模式支持,开发人员不再需要自己编写实现代码。
4、容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能
5、容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate。
6、Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样更便于应用的开发。
分享到:
相关推荐
SSH2架构的理解是理解现代Java Web应用开发的关键。 1. **Struts**:作为MVC(模型-视图-控制器)框架,Struts负责流程控制,它的主要目标是通过控制器Controller将用户界面(视图Viewer)与业务逻辑(模型Model)...
"VI1Q"可能是一个特定的版本标识或者与项目相关的密钥,而"ssh"标签则明确了这个包与SSH协议有关。压缩包中的文件名"SSH.NET-develop"暗示了这包含的是SSH.NET的开发资源,可能包括源代码、文档、示例应用等。 SSH...
描述中提到的是“素数的求法”,这可能与VB编程中实现的一种算法有关,尽管它看起来并不直接与SSH协议相关,但有可能是作为示例或练习,帮助开发者理解如何在VB环境中进行数学计算。 SSH是一种网络协议,主要用于...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程...理解和掌握SSH集成,对于提升工作效率和系统安全性至关重要。无论是开发人员还是系统管理员,都需要熟练运用SSH集成来优化日常工作流程。
SSH,全称Secure Shell,是一种网络协议,用于...理解并熟练掌握SSH框架的使用,对于Java开发者来说,是提升项目开发效率、保证代码质量的重要技能。通过合理地整合和配置SSH组件,可以构建出高效、稳定的企业级应用。
首先,我们要理解SSH的工作原理。它使用公钥加密技术来验证服务器身份,并为通信双方创建一个加密的隧道,确保数据传输的安全性。SSH的主要优势在于其安全性,比传统的FTP(File Transfer Protocol)更安全,因为FTP...
对于初学者来说,SSH框架提供了良好的结构化开发方式,有助于理解Web应用程序的组织和交互。下面我们将深入探讨SSH框架的每个组成部分及其在实际开发中的应用。 **Struts2** 是一个开源的MVC框架,负责处理HTTP请求...
本文将深入探讨SSH1和SSH2的配置与相关说明。 首先,SSH1的配置主要包括以下几个方面: 1. **服务器端配置**:在服务器上,SSH1的服务通常由`sshd`守护进程提供。配置文件通常是`/etc/ssh/sshd_config`。这里可以...
总的来说,SSH是一个强大的工具,对于任何涉及远程服务器管理和网络通信的IT专业人士来说,理解和熟练使用SSH都是非常必要的技能。通过深入学习SSH,你可以提升网络安全性,优化工作流程,并更好地管理分布式系统。
在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,用于构建高效、可维护的Web...在实际项目中,理解并熟练掌握SSH的原理和配置,能够帮助开发者更高效地构建和维护复杂的Web应用程序。
在实际操作中,你将通过配置和实践加深对SSH的理解,并能运用到日常的开发和运维工作中。同时,结合Spring、Struts和Hibernate,你将能构建出一个完整的Java Web应用,体验SSH在项目开发中的实际作用。通过这个项目...
SQLServer 数据库 SSH 配置详解 SQLServer 数据库 SSH 配置是将 SQL...本文详细介绍了 SQLServer 数据库 SSH 配置的实现步骤和相关配置文件的解释,希望能够帮助读者更好地理解和实现 SQLServer 数据库 SSH 配置。
SSH,全称Secure Shell,是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他服务。...在学习过程中,不断实践和理解每个概念,将理论与实际相结合,将有助于更好地理解和应用SSH2。
然而,理解SSH框架对于理解现代框架的工作原理仍然十分有帮助,尤其是对于理解DI和AOP等核心概念。 8. **实战经验**:在实际项目中,开发者需要关注性能优化、事务管理、异常处理等问题,这都需要对SSH框架有深入的...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个压缩包文件"SSHdemo"提供了一个...配合提供的博客地址,可以获取更详细的步骤解释和问题解答,加深对SSH框架的理解。
1. 添加SSH相关jar包到项目的类路径,确保所有依赖都已到位。 2. 配置Spring,包括bean定义、事务管理、数据源等。 3. 配置Struts,定义Action类、ActionForm、结果转发等。 4. 配置Hibernate,包括数据库连接、实体...
对于C语言,使用libssh2库实现SSH功能,你需要理解基本的会话管理、身份验证和通道创建。首先,初始化一个SSH会话,然后设置主机名、端口号和连接参数。接着,进行身份验证,这可能涉及到公钥或密码的处理。最后,...
这个"学校ssh"项目可能是一个教学示例或者练习,旨在帮助学生理解这三大框架如何协同工作,构建一个完整的MVC(Model-View-Controller)架构的应用。 **Struts2** 是一个基于MVC设计模式的Web应用框架,它提供了...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络...理解其工作原理和正确使用方法,对于维护系统的安全性和管理效率至关重要。在日常运维工作中,熟练掌握SSH的各种技巧,可以大大提高工作效率并保障数据安全。
SSH代码生成器是一种工具,主要用于自动化生成基于SSH(Spring、Struts2和Hibernate)框架的Web应用程序的...此外,理解SSH框架的工作原理仍然是至关重要的,因为这将有助于更好地利用生成的代码和进行后续的维护工作。