您好,欢迎访问三七文档
struts1:发布StrutsWeb服务时,根据web.xml初始化ActionServlet,ActionContext等内容.在接到一个HttpRequest请求后,ActionServlet根据struts-config.xml中的配置内容,将请求的参数传到对应的Formbean中,并设置session.然后根据请求中的Action参数,在struts-config.xml中查找指定的Action,并调用此Action来处理请求.根据Action的处理结果,会返回一个forward变量,此时通过mapping.findForward()查找出对应的forward所标示的Action或者JSP页面,将请求转到下一个处理.如果是forward指向JSP页面,则输出到前台.Struts2:(1)客户端提交一个HttpServletRequest请求(.action或JSP页面)(2)请求被提交到一系列Filter过滤器,如ActionCleanUp和FilterDispatcher等(3)FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器(4)请求发到FilterDispatcher后,FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个Request(一般根据URL后缀是否为.action来判断)(5)如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求交到ActioProxy,由其进行处理.(6)ActionProxy通过ConfigurationManager(它会访问struts.xml)询问框架的配置文件,找到需要调用的Action类.(7)ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用Action,(在调用之前会根据配置文件加载相关的所有Interceptor拦截器)(8)Action执行完毕后,返回一个result字符串,此时再按相反的顺序通过Interceptor拦截器.(9)最后ActionInvocation负责根据struts.xml中配置的result元素,找到与返回值对应的result,决定进行下一步输出.1:struts1和struts2的区别?struts1使用抽象类编程而不是接口,struts2是实现一个ActionSupport接口。struts1是单例模式并且线程必须是安全的,struts2对象是每个请求产生一个实例,没有线程安全问题。Struts1的Action类依赖于servletAPI以HttpServletRequest和HttpServletResponse作参数传给execute方法当Action被调用时。Struts2的Action不和容器有关,直接通过上下文context拿到值。Struts1支持独立的请求处理器对于每一个模型,但是所有在模型中的Action必须共享同一个生命周期。Struts2支持在每一个Action基础上凭借拦截栈创建不同的生命周期。自定义栈可以被创建且使用不同的所需的Action。Hibernate的get和load的区别?get:当调用get的时候就去操作数据库。load:当调用load时,返回的是一个代理对象,而不是需要查询的对象。hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,就抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。基本数据类型有哪几种?Java语言提供了八种基本类型:六种数字类型(四个整数型,两个浮点型)字节型byte8位短整型short16位整型int32位长整型long64位单精度float32位双精度double64位字符型char8位布尔型:boolean8位可存储True和falseInteger是int的封装,跟int的表示范围一样:9大内置对象?1.request对象的到用户的请求。2.response对象相应客户端的请求。3.session对象存储用户的信息。4.out对象向客户端输出数据。5.page对象jsp页面本身。6.application对象对多个应运程序保存信息。7.exception对象运行时的异常。8.pageContext对象页面的上下文。9.config对象表示servlet的配置。Tomcat是什么?webSphere是什么?都是服务器,tomcat不支持EJB。websphere支持EJB。EJB是EJB是sun的服务器端组件模型,最大的用处是部署分布式应用程序当然,还有许多方式可以实现分布式应用,类似微软的.net技术。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB(EnterpriseJavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。在J2EE里,EnterpriseJavaBeans(EJB)称为Java企业Bean,是Java的核心代码,分别是会话Bean(SessionBean),实体Bean(EntityBean)和消息驱动Bean(MessageDrivenBean)。java反射机制的理解?Java发射机制可以让我们在运行时加载,探知,使用编译期间完全未知的classes。换句话说就是Java程序可以加载一个在运行时才得知名称的class,获悉其完整构造,并生成其对象尸体,或对其fields设值,或调用其methods。使用AJAX的好处?Hibernate中getfindloaditeator的区别与联系find,iterator(1)iterator首先会获取符合条件的记录的id,再跟据id在本地缓存中查找数据,查找不到的再在数据库中查找,结果再存在缓存中。N+1条SQL。(2)find跟据生成的sql语句,直接访问数据库,查到的数据存在缓存中,一条sql。如果找不到符合条件的纪录,get()方法将返回null.如果找不到符合条件的纪录,find()方法将返回null.如果找不到符合条件的纪录,load()将会报出ObjectNotFoundEcception.get()方法会忽略二级缓存,若内部缓存没有查询到会到数据库中去查询.find()方法会忽略二级缓存,若内部缓存没有查询到会到数据库中去查询.load()方法可以充分利用hibernate的内部缓存和二级缓存中的现有数据.get()方法返回真实的实体类.find()方法返回真实的实体类.load()方法可以返回实体的代理类.load()会因所要查询的对象类的映射文件中设置的检索策略,而实现立即检索或延迟检索。get()方法和find()方法却不受这种控制,它们总是会执行立即检索。spring原理spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中,程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间的藕合度。它的原理是在applicationContext.xml加入bean标记,在bean标记中通过class属性说明具体类名、通过property标签说明该类的属性名、通过constructor-args说明构造子的参数。其一切都是返射,当通过applicationContext.getBean(id名称)得到一个类实例时,就是以bean标签的类名、属性名、构造子的参数为准,通过反射实例对象,唤起对象的set方法设置属性值、通过构造子的newInstance实例化得到对象。正因为spring一切都是反射,反射比直接调用的处理速度慢,所以这也是spring的一个问题。spring第二大作用就是aop,其机理来自于代理模式,代理模式有三个角色分别是通用接口、代理、真实对象代理、真实对象实现的是同一接口,将真实对象作为代理的一个属性,向客户端公开的是代理,当客户端调用代理的方法时,代理找到真实对象,调用真实对象方法,在调用之前之后提供相关的服务,如事务、安全、日志。其名词分别是代理、真实对象、装备、关切点、连接点。2、动态代理:不用写代理类,虚拟机根据真实对象实现的接口产生一个类,通过类实例化一个动态代理,在实例化动态代理时将真实对象及装备注入到动态代理中,向客户端公开的是动态代理,当客户端调用动态代理方法时,动态代理根据类的返射得到真实对象的Method,调用装备的invoke方法,将动态代理、Method、方法参数传与装备的invoke方法,invoke方法在唤起method方法前或后做一些处理。1、产生动态代理的类:java.lang.refect.Proxy2、装备必须实现InvocationHandler接口实现invoke方法什么是类的返射?通过类说明可以得到类的父类、实现的接口、内部类、构造函数、方法、属性并可以根据构造器实例化一个对象,唤起一个方法,取属性值,改属性值。如何得到一个类说明?Classcls=类.class;Classcls=对象.getClass();Class.forName(类路径);如何得到一个方法并唤起它?Classcls=类.class;Constructorcons=cls.getConstructor(newClass[]{String.class});Objectobj=cons.newInstance(newObject[]{aaa});Methodmethod=cls.getMethod(方法名,newClass[]{String.class,Integer.class});method.invoke(obj,newObject[]{aa,newInteger(1)});4、spring的三种注入方式是什么?Setterinterfaceconstructor5、spring的核心接口及核类配置文件是什么?FactoryBean:工厂bean主要实现ioc/diApplicationContextac=newFileXmlApplicationContext(applicationContext.xml);Objectobj=ac.getBean(id值);applicationContext.xml什么是类和对象?类是抽象的,不再内存。对象是类的实现,占内存。4Spring1。控制反转(IOC=InverseOfControl),依赖注入DI(Dependenceinjection)。注释:由容器控制程序之间的关系,而非传统实现中,有程序代码直接操控。控制权有应用代码中转到了外部容器,控制权的转移,是所谓反转。注入类型:接口注入,设置注入,构造子注入。而Spring则是IOC的一个容器。在Spring中,所谓依赖注入,即在运行期由容器将依赖关系注入到组件之中。讲的通俗点,就是在运行期,由Spring根据配置文件,将其他对象的引用通过组件的提供的setter方法进行设定。2.SpringBean封装机制Spring从核心而言,是一个DI容器,其设计哲学是提供一种无侵入式的高扩展性框架。即无需代码中涉及Spring专有类,即可将其纳入Spring容器进行管理。作为对比,EJB则是一种高度侵入性的框架规范,它制定了众多的接口和编码规范,要求实现者必须遵从。侵入性的后果就是,一旦系统基于侵入性框架设计开发,那么之后任何脱离这个框架的企图都将付出极大的代价。为了避免这种情况,实现无侵入性的目标。Spring大量引入了Java的Reflection机制,通过动态调用的方式避免硬编码方式的约束,并在此基础上建立了其核心组件BeanFactory,以此作为其依赖注入机制的实现基础。org.springframework.beans包中包括了这些核心组件的实现类,核心中的核心为BeanWrapper和BeanFa
本文标题:ssh面试题
链接地址:https://www.777doc.com/doc-5590827 .html