SSH框架知识点.doc_第1页
SSH框架知识点.doc_第2页
SSH框架知识点.doc_第3页
SSH框架知识点.doc_第4页
SSH框架知识点.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.对struts的理解struts是什么;struts的工作原理;struts的优点缺点;使用struts的经验;struts是把servlet、jsp以及众多标签库整合在一起的开源web框架,他实现了mvc设计模式。Struts实际上就是对MVC的各部件提供了现成的实现组件。Struts的中央控制器是ActionServlet,当请求到达时,它根据配置文件struts-config.xml的配置参数分配请求给不同的action处理。在请求分配给Action之前,会将请求参数封装在ActionForm对象中,会根据配置参数决定是否先调用validate方法进行验证,成功才会传递给Action,失败则跳转到input属性指定的页面。Action的execute方法执行成功之后会返回一个ActionForward对象,根据配置文件的forward跳转到相应的页面。Struts实现了MVC设计模式,层次结构清晰,使开发者只关注业务逻辑的实现,便于维护。集成标签库,提供异常处理机制和数据库连接池管理。Struts的缺点就是有侵入性,Action类需要继承自Action,ActionForm类需继承自ActionForm。使系统的复杂度增加。依赖web容器,和servlet严重耦合,测试不方便,不过有Junit的扩展工具Struts TestCase。只允许一个实例去处理所有请求引起线程安全问题,他要求Action用到的所有资源必须是同步的。每一个跳转页面都需要配置forward相对还是比较繁琐。2.对struts2的理解struts2是什么;struts2的工作原理;struts2的优点缺点;使用struts2的经验;Struts2, 是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品工作原理:1、客户端初始化一个指向Servlet容器的请求2.web.xml的过滤器3. 询问Struts配置文件(Struts.xml),找到需要调用的Action类4.action中调用excute方法,执行结束创建result并返回使用struts2的方便之处,数据的自动封装(根据页面组件的name属性,自动封装到action中对应的name属性中),数据的自动传递(action中得到属性会在jsp页面可以直接用el表达式拿到)对servlet依赖减少,降低框架的耦合性,无侵入性,不需要继承任何类,没有线程安全问题,可以轻松将配置信息按功能界限拆分成多个文件,有丰富的标签库,提高开发效率,通过配置文件可以掌握各个部件之间的关系,提供异常处理机制。7. struts1和struts2的区别共同点侵入性控制器线程安全请求参数验证测试(对servlet的依赖)都实现了MVC设计模式的开源web框架,Struts1具有侵入性,Action类需要继承自Action,struts2无侵入性,不需要继承任何类。Struts1的中央控制器是ActionServlet,struts2的中央控制器是StrutsPrepareAndExecuteFilter。Struts1只允许一个实例处理所有请求所以存在线程安全问题,struts2每一个请求都会有一个实例处理不存在在线程安全问题。Struts1把请求参数封装在ActionForm对象中,struts2可以把请求参数直接作为Action类的属性提供setter和getter即可,也可以通过request.getParameter(“name”)获得。(struts1也可以通过request.getParameter(“name”)获得)Struts1要重写validate方法要么验证,要么不验证,struts2可以只编写了validateXxx()方法只验证Xxx方法。Struts1和servlet严重耦合,依赖web容器测试不方便,有第三方扩展struts testcase,struts2对servlet依赖减少,降低框架的耦合性,测试方便,可扩展性好。Struts更模块化,可以轻松将配置信息按功能界限拆分成多个文件。8.对spring的理解spring是什么spring的工作原理spring的优缺点使用经验Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的非侵入性容器框架。Spring的核心是IOC和AOP,IOC实现了简单工厂模式,可以很好的解耦合,通过IOC和DI的思想将类与类之间的依赖关系放置在配置文件中。各个类都是相对独立存在的,调用关系有配置文件实现,这样就实现了程序之间的松耦合。(DI的三种注入方式?),AOP是面对切面编程,它将不应该聚合在一起的功能(像事务的管理)从业务操作代码中分离并提取出来,使用DI注入到业务代码中,降低代码的耦合度,提高了代码重用率(AOP实现的两种方式?)。Spring提供一种管理对象的方法,把中间层对象有效的组织起来。低侵入性设计,DI机制降低了业务对象替换的复杂性,应用服务器之间是可移植的。方便集成各种优秀框架,写出易于测试的代码方便程序的测试,支持声明式事务,解耦合,简化开发,扩展性好。 中断了应用程序的逻辑,使代码变得不完整,不直观。将原本应该代码化的逻辑配置化,增加了出错的机会以及额外的负担。调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。10.什么是IOC,作用是什么,DI的三种注入方式控制反转;1.实例化对象2.组装对象构造方法注入接口注入Get/set11.AOP是什么,两种实现方式和区别面向切面编程ProxyFactoryBeanBeanNameAutoProxyCreator标签12.对hibernate的理解hibernate是什么;hibernate的工作原理;hibernate的优点缺点;hibernate是一个轻量级的开源持久层框架,hibernate在原有三层结构基础上,从业务逻辑层分离出来持久层,专门负责数据的持久化操作,是业务逻辑层可以真正的专注于业务逻辑的开发,不再需要编写复杂易错的SQL语句,使得程序员可以随心所欲的使用对象编程思维来操纵数据库。在配置文件hibernate.cfg.xml中配置好数据库连接,方言等信息,读取配置文件创建configuration对象再产生SessionFactory再创建Session,启动事务,完成CRUD操作,关闭session。Hibernate没有侵入性,是一个轻量级的框架。对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 移植性较好,更换数据库只需要更改配置文件中的参数,支持各种关系性数据库,映射灵活性好。完全面对对象的思想操作数据库。提供缓存机制,延迟加载,有一级缓存(Session级别)和二级缓存(SessionFactory级别),利用缓存降低数据库的访问率。简洁的HQL编程。Hibernate在批量处理数据的修改删除时有弱势,使用数据库的特定优化机制的时候,Hibernate不适合,无法对SQL语句进性优化。配置过于复杂,如果有上百张表,工作量巨大,性能和维护问题也随之而来。15.hibernate的缓存机制一级缓存Session级别二级缓存SessionFactory级别缓存可以减少对数据库的访问,从而提高应用程序的运行性能和效率。一级缓存:Session级别缓存,生命周期和session一致,它是缓存实体的,不会缓存id和普通属性。一级缓存由hibernate进行管理,属于事务范围的缓存。load(),get(),save()等方法都会利用缓存,list()查询不会利用一级缓存,查询出来的数据会放在一级缓存中。同一个session中连续两次查询同一对象,hibernate只会发出一条SQL语句,会利用换缓存。二级缓存:SessionFactory级别缓存,生命周期与SessionFactory一致,二级缓存被所有Session共享属于进程级的缓存。缓存实体对象。16.hibernate的延迟加载(lazy策略)get()load()hibernate的延迟加载可以减少程序与数据库的连接次数,hibernate会延缓执行SQL语句,减少对数据库的访问次数,提高执行效率。get():会立即加载,没有记录则返回null,会先查看缓存,没有在去查询数据库,如果缓存中有此id的代理对象则返回代理对象,所以get返回的不一定都是实体对象。load():延迟加载,用到的时候才去加载。返回代理对象,没有记录则抛出ObjectNotFoundException,hibernate对于load方法会认为数据在数据库中一定存在,所以使用代理延迟加载对象。17.hibernate实体对象的三种状态瞬时态持久态游离态(脱管态)瞬时态:没有纳入hibernate session的管理之中,没有session与其关联。数据库中没有数据与之匹配,也没在hibernate的缓存管理之中。一般是new出来的对象,超出作用域会被回收。持久态:在hibernate的缓存管理之中,有session与其关联。Session没有关闭,事务没有提交,session管理的实体对象。游离态:调用了session.clear(),和session解除关系18.对mybatis的理解mybatis是什么;mybatis的工作原理;mybatis的优点缺点使用经验Mybatis 是支持普通SQL查询,存储过程和高级映射的优秀持久层框架,工作原理:在配置 config.xml中配置好数据库连接,读取配置文件,创建sessionfactory,打开session。配置model类的映射,完成业务操作,关闭session;sql可以写在xml中,结构清晰,灵活配置 ;文件归类,select 后的字须定义到标签中,可以实现部分代码复用;基于xml的,所以适合多平台;可以省代码21.mybatis和hibernate的区别Mybatis:半自动化,需要手动打开session,iBATIS并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写 Hibernate:全自动化,程序员不需要写sql语句,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。;22.什么是orm,orm和jdbc的区别Orm对象关系映射。jdbc只是一个java操作数据库的规范接口而已orm不过是一种思想,对象关系映射。ORM:是对象关系模型,如hibernate,让你以面向对象的方式去编程。封装了JDBC.JDBC:是从底层访问数据库服务器。一般银行,金融行业为了安全起见,直接用JDBC访问jdbc是一套数据库访问标准,提供了一组接口,是JAVA语言访问数据库用到的东西hibernate是一套ORM映射框架,提供以对象的方式访问数据,但底层还是要把对象映射为JDBC来访问的。ibatis也是一套数据库访问框架,但它是把SQL语句给抽出来了,这样将来改语句的时候不用修改代码,底层也是JDBCHQL语句2400面试总结赫显林1、 数据的存储结构是指?数据的逻辑结构在计算机中的表示2、 对于长度为n的线性表,下列各排序法所对应的比较此书中正确的是:快速排序为n(n-1)/23、 下列关于线性链表的描述中正确的是( )。 存储空间不一定连续,且各元素的存储顺序是任意的4、 用树形结构表示实体之间联系的模型是层次模型5、 FlowLayout是Panel和Applet的默认管理器也就是说6、-2727-17、 下列不是InputStream子类的是 A. 文件输入流FileInputStream B. 对象输入流ObjectInputStream C. 字符输入流CharInputStream D. 压缩文件输入流ZipInputStream8、创建线程有两种方法:通过实现Runnable接口创建线程和通过继承Thread类创建线程。通过实现Runnable接口创建线程,当实现 Runnable接口的类的对象用来创建线程以后,该线程的启动将使得对象的run()方法被调用。通过继承Thread类创建线程,可以通过继承 Thread类,并重写其中的run()方法定义线程体,然后创建该子类的对象创建线程。线程创建是考试重点内容,务必掌握。9、下列关于Java Application与Applet的说法中,正确的是 A都包含main()方法 B都通过“appletviewer”命令执行 C都通过“javac”命令编译 D都嵌入在HTML文件中执行A:Application程序中必须有main()方法,而Applet程序中 必须有 init()方法 不能有main()方法 /Applet程序为嵌入网页的,所以没有main()方法,init()方法为初始化,必须有B: 既然主方法都不一样,肯定运行命令都不一样了/Applet程序为嵌入网页的,appletviewer命令执行(这里不是运行class文件,而是你嵌入Applet程序的网页appletviewer XXX.HTML) ,Application程序为java XXXXD:看了上面解释 这个你应该知道了!10、数据独立性是数据库技术的重要特点之一,所谓数据独立性是指()。A数据与程序读一存放B不同的数据被存放在不同的文件中C不同的数据只能被对应的应用程序所使用D以上三种说法都不对11用属性结构表示实体之间的联系模型是B层次模型12在java中负责对字节码解释执行?B虚拟机13.在java中用Package语句说明一个包时,该包的层次结构必须是()B与文件目录的层次相同14. 在读字符文件Employee.dat时,使用该文件作为参数的类是( FileInputStream)15. 下列构造方法的调用方式中,正确的是( )。C只能通过new自动调用16. 类Panel默认的布局管理器是CFlowLayout17下列方法中可以用来创建一个新线程的是()。C继承java.lang.Thread类并重写run()方法18下列关于Java Application与Applet的说法中,正确的是C都通过“javac”命令编译19下列关于线程优先级的说法中,正确的是(D)B、线程的优先级是在创建线程时设置的C、在创建线程后的任何时候都可以设置20. 当浏览器重新返回Applet所在页面时,将调用Applet类的方法是 A)start()21.java程序的种类有AAppletBApplicationCServlet22. int a=0x12;0001 0010int b = a1; 0 0010 0100System.out.println(b); 3623. int a=23;int b =5;System.out.println(a%b); 324. double a=23.0;double b =5.0;System.out.println(a%b); 3.025. 选出不可作为SWITCH语句中表达的类型Dlong26. StringBuilder s1 = new StringBuilder(abc);StringBuilder s2 = s1.append();boolean a = s1=s2;boolean b = s2.equals(s2);System.out.println(a+=+b); true,true27下列说法正确的有( )A 环境变量可在编译source code时指定B 在编译程序时,所能指定的环境变量不包括class pathC javac一次可同时编译数个Java源文件D javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD28下列标识符不合法的有( )AnewB$UsdollarsC1234Dcar.taxi答案:ACD29下列说法错误的有( )A 数组是一种对象B 数组属于一种原生类C int number=31,23,33,43,35,63D 数组的大小可以任意改变答案:BCD30不能用来修饰interface的有( )AprivateBpublicCprotectedDstatic答案:ACD31下列正确的有( )A call by value不会改变实际参数的数值B call by reference能改变实际参数的参考地址C call by reference不能改变实际参数的参考地址D call by reference能改变实际参数的内容答案:ACD3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论