SSH,


1.  BeanFactory的作用是什么?

 创建、配置、管理Bean的容器

2.  bean在spring的容器中两种基本行为是什么? 

 Singleton;Non-singleton或prototype:原型

3. Ajax的工作原理 ?

会话开始时,浏览器加载Ajax引擎,请求动作通过javascript调用ajax引擎代替,负责绘制用户界面以及服务器的通讯,采用异步交互

4.XMLHttpRequest对象是什么,它有哪些常用方法?

是javascript对象,Ajax的核心。 open():建立到服务器的新请求;send():向服务器发送请求;abort():退出当前请求;readyState():提供当前 HTML 的就绪状态;responseText:服务器返回的请求响应文本。. 

5.普通B/S模式(同步)AJAX技术(异步);同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事,而异步则是 请求通过事件触发->服务器处理->处理完毕;同步是阻塞模式,异步是非阻塞模式

6.Hibernate实体对象生命周期的三种状态?瞬态、持久态、游离态

7.Hibernate具用的三种检索方式:HQL,QBC,SQL

8.<set>元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?   save-update

9.Hibernate中session什么时候是游离态? 调用Session.close()方法后

11.怎样构建SessionFactory?

Hibernate的SessionFactory接口提供Session类实例,Session类对数据库进行操作;SessionFactory实例是线程安全的(Session类是不安全的),所以每个操作都可以用同一个SessionFactory来获取Session;hibernate的配置文件分为两种:XML格式的;java属性文件格式的

12.从XML文件读取配置信息构建SessionFactory的具体步骤?

1)创建一个Configuration对象,并通过该对象的configura()方法加载Hibernate配置文件,代码如下

Configuration conf = new Configuration().configue();onfigure()方法:用于告诉Hibernate加载hibernate.cfg.xml文件。Configuration在实例化时默认加载classpath中的hibernate.cfg.xml,当然也可以加载名称不是hibernate.cfg.xml的配置文件,例如wghhibernate.cfg.xml,可以通过以下代码实现。Configuration config = new Configuration().configure("wghhibernate.cfg.xml");   

2)完成配置文件和映射文件的加载后,将得到一个包括所有Hibernate运行期参数的Configuration实例,通过Configuration实例的buildSessionFactory()方法可以构建一个惟一的SessionFactory,代码如下:

SessionFactory sf = config.buildSeesionFactory();构建SessionFactory要放在静态代码块中,因为它只在该类被加载时执行一次。

13.什么是IOC? 不创建对象,但是描述创建它们的方式。就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控,控制权由应用代码中转到了外部容器,控制权的转移,就是所谓的反转。  

14 SSH三大框架的工作原理及流程?

Hibernate工作原理及为什么要用?
原理:
1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件
2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息
3.通过config.buildSessionFactory();//创建SessionFactory
4.sessionFactory.openSession();//打开Sesssion
5.session.beginTransaction();//创建事务Transation
6.persistent operate持久化操作
7.session.getTransaction().commit();//提交事务
8.关闭Session
9.关闭SesstionFactory
为什么要用:
对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。


2. Hibernate是如何延迟加载?
1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)2. Hibernate3 提供了属性的延迟加载功能
当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。

3.Hibernate的查询方式
HQL,QBC,本地SQL

6. 如何优化Hibernate?
1.使用双向一对多关联,不使用单向一对多
2.灵活使用单向一对多关联
3.不用一对一,用多对一取代
4.配置对象缓存,不使用集合缓存
5.一对多集合使用Bag,多对多集合使用Set
6. 继承类使用显式多态
7. 表字段要少,表关联不要怕多,有二级缓存撑腰

2.load()和get()的区别:
load加载方法:
Java代码
Users user = (Users)session.load(Users.class, userId);    
get加载方法:
Users user = (Users)session.get(Users.class, userId);  
两加载方法区别:
区别1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException;
区别2:load()方法查询数据时会先找Hibernate的内部缓存和二级缓存中的现有数据,get()方法在内部缓存中没有打到相对应的数据时装直接执行SQL语句进行查询;load支持延迟加载,get不支持延迟加载。
也就是说:
Java代码
Users user = (Users)session.load(Users.class, userId); 
这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询

注意:
Java代码
Users user = (Users)session.load(Users.class, userId);    
 System.out.println(user.getId()); 
此处用了user,但是用的属性是id,也不会去执行数据库操作。因为load后会在hibernate的一级缓存里存放一个map对象,该map的key就是userId的值,但是当你getId()时,它会去一级缓存里拿map的key值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。

而:
Java代码
Users user = (Users)session.get(Users.class, userId); 则立即去执行数据库查询。

阐述struts2的执行流程。Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。 Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。基本简要流程如下:1、客户端浏览器发出HTTP请求。2、根据web.xml配置,该请求被FilterDispatcher接收。3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。6、返回HTTP响应到客户端浏览器。

. Struts工作机制?为什么要使用Struts?
工作机制:
Struts的工作流程:
在web应用启动时就会加载初始化ActionServlet,ActionServlet从
struts-config.xml文件中读取配置信息,把它们存放到各种配置对象
当ActionServlet接收到一个客户请求时,将执行如下流程.
-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息; 
-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中; 
-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法; 
-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功; 
-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法; 
-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件; 
-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;

为什么要用:
JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。

8. Struts的validate框架是如何验证的?
在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。

9. 说下Struts的设计模式
MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的 Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用 Action的execute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。

10. spring工作机制及为什么要用?
1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
3.DispatcherServlet请请求提交到目标Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
6.视图对象负责渲染返回给客户端。


相关内容

    暂无相关文章