




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
。Java基础1. 什么是类? 类是某一种事物的一般性的集合体,是相同的或相似的各个事物共同特性的一种抽象。2. 什么是对象? 在面向对象概念中,对象是类的实例。对象与类的关系就像变量与数据类型的关系一样。3. 类的核心特性封装性:类的封装性为类的成员提供 公有的、缺省的、保护的、私有的等多级访问权限。目的是隐藏类中的私有变量和类中方法的实现细节。继承性:类的继承性提供从已存在的类创建新类的机制,继承使一个新类自动拥有被继承类的全部可继承的成员。多态性:类的多态性提供类中方法执行的多样性,有两种表现形式:重载和覆盖。4. 方法: 对象中方法表达了对象所具有的行为。5. 属性: 一个对象的属性是能够被外界或对象所处的环境所感知或操纵的数据或状态。6. 什么是Java? Java是一门易于编程的跨平台编程语言,同时又是一个开发、应用、执行和部署的平台。7. 为什么要有Java? Java与平台无关、一次编译处处运行、以及他的易于编程的特性。8. Java开发程序的步骤? 编写源代码 (2)编译 (3)执行9. Java的环境变量1) JAVA HOME jdk的安装路径2) CLASSPATH jvm转载class字节码文件时的搜索路径3) PATH 是系统的环境变量、命令的搜索路径10. JVM :Java Virtual Machine 是一个逻辑的操作系统、它屏蔽了硬件和平台的信息、jvm能将字节码文件解释并执行、正是这种独立执行的方式是Java 具有与平台无关的特性。11. 类的加载过程:类加载器加载字节码文件到内存、jvm内存数据区将对象状态放置在堆区、各线程使用的变量放在栈区、类的特征放在方法区、然后进行字节码验证再执行。12. 常用的Java命令:Javac、java、javadoc、jar13. 类的语法与规范一个源文件只能有一个public的类Public源文件可以有多个类定义源文件名必须与public类名保持一致包名必须放在第一行包名可以有0个或1个但不能有多个源文件如果带包的话 最好存放在包结构对应的目录下标识符 程序语言用于标识 变量名 类名 方法名 的字符串就是标识符。标识符必须字母 下划线 美元符开头 大小写敏感。类名要求首字母大写方法名首字母小写 每个单词首字母大写常量名所有字母大写 如果有两个或几个字母的联合用下划线连接关键字:程序语言中、程序已经所有用户不能再使用的单词 一般关键字都是小写14 .数据类型: 基本数据类型: 整 型(byte、short、int、long)默认是int浮点型(float、double)、默认是double布尔型(boolean)、字符型(char) 引用类型:类、接口、数组15 .main()方法执行过程 1)先到方法区搜索student、如果搜索不到则去加载student的字节码文件 2) 通过classpath查找对应的student字节码文件 找不到就返回错误(ClassNotFound) 3)将字节码文件的二进制数据转换为class对象放置于方法区( class对象描述了student类的方法特征及静态成员等) 加载完成 4)验证字节码文件 5)在堆区中划分空间放置student对象 6)在栈区放置应用类型变量 stu 、stu指向student对象的地址 7)student对象存放了class对象的地址 8) 通过student stu引用类型变量的值找到student对象 、通过student对象 存放class对象的地址找到对应的study()方法然后执行。 9)释放资源 jvm运行结束16 .基本类型和引用类型的区别 引用类型存放的是对象的地址、基本类型存放的是变量的实际值 引用类型变量可用指向复杂的数据结构 引用类型变量可使用“.”操作来访问它所指向的方法或属性17 .表达式运算符和操作数按照一定的规则组成的语句.赋值运算符“=”比较运算符 “”“=”相等运算符“=”位运算符 :取反、 :异或、| :或、& :与 逻辑运算符 “&” “|” 条件运算符 a ?b :c18. 变量的作用域(1)类的成员变量: 静态成员变量:生命周期 从类加载开始到类被卸载结束 初始化后被放在方法区 实例成员变量:变量初始化放在堆区、 生命周期从生成对象开始到对象被回收时结束(2)局部变量:方法或代码块中定义的变量、局部变量从栈区弹出结束、局部变量在使用前必须初始化(3)方法的参数(4)异常的参数19 .数组:是相同类型元素的线性集合 是一个指向数组的引用对象20. 集合框架Iterator是一个迭代器接口ListIterator继承自Iterator是子接口 只能用于list接口Collection是集合框架的顶层接口 List 有序可重复 ArrayList 实现了可变数组的数据结构 LinkedList 实现了双向链表的数据结构Set 无序不可重复 HashSet 实现了无序不可重复 LinkedHashSet 有序不可重复(插入的顺序) TreeSet 升序不可重复 Map 是一个key 、value 对映射 HashMap 按照key无序 LinkedHashMap 按照key 有序 TreeMap 按照key升序 Collections是集合框架的辅助类(工具类)里边的所有方法都是static的 Arrays是对数组的工具类Comparable、 Comparator是做比较排序的21.Vector和ArrayList的区别: 1)Vector是线程安全的(同步的)ArrayList不是 ArrayList的效率高一些 2)当初始容量满的时候Vector增加原来的一倍、ArrayList增加原来的一半22.HashTable和HashMap的区别: 1)HashTable是线程安全HashMap不是 HashMap的效率会高一些 2)HashMap允许null的key存在 HashTable不允许23.Set set=Map.keySet(); Iterator it=set.iterator(); While(it.hasnext())24.类的结构 类名、属性名(静态属性、实例属性)、 方法(静态方法、实例方法)、构造器(缺省构造器、带参构造器) 静态代码块 static、 实例代码块 this.25 .参数传递 对于基本类型将实际的变量的值原样的赋值以便传值 对于引用类型将引用类型变量的地址赋值给实参26.this关键字都在什么地方使用 1)实例变量与局部变量同名 用this区分实例变量名与局部变量名 2)在构造器重载时、用this调用其它构造器 3)在实例方法中 用来当作当前对象的引用传给其它方法27.方法的重载 方法名要相同、在同一类中多个方法有不同的方法签名 方法签名具有参数类型 参数个数和参数顺序、返回类型不做要求28.类的初始化过程1)在堆区分配空间 new的过程2)给对象属性赋默认值3)调用构造方法进一步赋值29.构造器 类中提供的用于初始化对象的特殊的方法、这个方法于类同名无返回值、类中没有提供构造器 jvm会提供一个不带参的缺省构造器、类中有带参的构造器jvm就不提供了30.详细说明封装、继承、和多态 封装:将类的实现细节隐藏起来、对外提供一致的接口、提高系统的维护性 继承:定义:一个类自动获得另一个类的属性或者方法的过程 使用方面 :extends关键字、单根继承、 所有类都是Object类的子类 、构造器不能被继承 、子类初始化时会默认情况下调用父类缺省的构造器、子类调用父类带参的构造器 则父类可以不提供缺省的构造器 否则一定要有个缺省的构造器如何使用继承? 1)区分has -a 和is -a2)子类要扩充父类的功能3)子类需要大量置换父类的功能时不能使用继承4)不要从工具类中继承优缺点: 优点:继承是最容易复用代码的形式、修改父类的功能时子类可以自动获得新的功能 缺点:打破了封装、 只是类型复用 多态: 编译时编译器检查声明类型和方法信息 运行时jvm对实例方法和引用变量和实际引用对象动态绑定,对静态方法和引用变量声明的类型静态绑定 类的属性在编译阶段绑定31. instanceof: 判断实例是否为某个类型或子类型(1) 只能在父子类进行比较(2) Null可以进行比较 结果为false(3) 判断实例类型时,一般从子类开始,然后父类32. override:方法覆盖。子类重写父类中的方法子类重写父类中的方法的条件:(1) 方法名相同(2) 方法签名相同(参数)(3) 返回值相同(4) 子类的修饰符要大于等于父类的修饰符(5) 子类抛出的异常要小于等于父类抛出的异常33. 依赖关系 (1) 一个类中的方法,其局部变量类型是另一个类,则这两个类具有依赖关系(2) 一个类中的方法调用另一个类中的静态方法,则这两个类具有依赖关系(3) 一个类中的方法中参数是另一个类的静态方法,则这两个类具有依赖关系34. 多态的运行机制(1) 在类编译阶段,编译器会检查类型是否匹配(2) 在运行阶段,jvm会调用实例的对应方法,先检查父类方法,然后检查子类方法,然后会检查实例声明的类型35Super调用父类的属性和方法、子类和父类有同名的方法时,子类可用super区分是父类的方法36. final(1)final修饰的类不能被继承(2)final修饰的方法不能被覆盖(3)final修饰的变量是常量,常量不可修改但有例外 实例常量:若定义时没有赋值,则可以在构造器或实例代码块中赋值,构造器或者代码块赋值只能有一个 静态常量:若定义时没有赋值,则可以在静态代码块中赋值,37. 抽象类具有部分实现的类。使用时的注意事项:(1) 不能实例化(2) 可有0到多个抽象方法(3) 可有构造器(4) 具体类继承抽象类时必须实现所有的抽象方法(5) 抽象类可以间接的被子类调用其构造器,并在内存中分配空间,间接实例化(6) 抽象类可以有静态方法,可以返回其子类的实例怎样使用抽象类?(1) 把各个类中可以共用的方法和逻辑放到抽象的父类中,越多越好(2) 属性应尽可能放到子类中38 接口 定义:从宏观角度说是一个规范,从面向对象角度说,接口是一种抽象类型(1) 属性是常量,一定要赋值(2) 方法是抽象方法(3) 没有构造器(4) 接口支持casting(强制类型转换)(5) 接口可以继承自多个接口(6) 实现接口的类必须要实现所有的方法,如果是抽象类可以选择实现部分的方法 为什么要使用接口?(1) 可插拔性的保证,可以随意更换接口的实现类(2) 接口可以解决多继承的问题(3) 接口使规范的制定者、实现者、使用者分开39. 接口和抽象类的区别(1)接口没有任何实现,而抽象类可以有部分实现也可以没有(2)如果需要复用或者共享代码,应该用抽象类而不是接口(3)继承无法解决的类型转换问题,接口是为解决这问题而产生的40. 访问控制 作用域 当前类 同一package 子孙类 其他packagepublic protected default private 41. static修饰符(1) 可以修饰属性,称为静态属性,全类公有常叫做类变量,和具体对象无关,无多态,类名去访问,类加载的时候初始化(2) 修饰方法,静态方法中只能访问静态成员,非静态方法可以访问静态成员,工具类的对象都是static的(3) 修饰代码块,初始代码块是在类中,而不在任何方法之内的代码块,被static修饰的代码块称为静态代码块,静态代码块在类加载的时候运行一次42. 异常 定义:jvm将程序运行中的不正常情况的现场信息打包成一个对象,这个对象就是异常类对象。并且将此对象抛出,交由相应的方法或对象处理。异常信息记录了错误的原因,指出了错误的位置,打印错误的栈信息。异常处理机制是责任链机制即子类取默认值不处理,交由父类处理直到追究到jvm然后抛给用户43. 为什么处理异常?最本质的原因是让程序执行完毕44. 异常类的层次结构Throwable: Error:是错误,程序运行中发生的系统异常,此种异常当前程序一般无法解决 Exeption:checked()编译器强迫必须捕获并处理的异常 Unchecked(RuntimeExeption、) 对于此种异常编译器不要求捕获 原因是:低级错误(low-grade mistake)、程序员可以避免的错误当错误发生时、捕获异常也无济于事45. 如何处理异常(1)交给自己处理、交由当前方法处理(2)交给别人处理、由调用该方法的方法来处理(3)自己处理一部分、然后调用系统的异常方法方法(2)的步骤:(1) 在方法后声明可能发生的异常类型(throws Exception type)(2) 该方法不用在做其它异常处理(3) 调用方法必须处理被调用方法的异常46. throw的注意事项(1)throw可以抛另一种类型的异常(2)throw语句后不能再有其它代码、throw后的代码永远不会被执行47. 异常的捕获 try catch(Exception type1) method body1 catch(Exception type2) method body2 (1) 在 trycatch语句中可能抛出不止一个异常、但是每个时刻只能抛出一个异常(2) 对可能抛出的每一种异常分别用catch来处理(3) Catch语句处理多重异常应遵从从子类到父类的顺序48.finally 用于资源的释放、在异常处理中 finally一定会被执行到、Finally语句中如果有return语句、正常运行先执行finally再执行return语句返回当发生异常时、先执行catch语句捕获异常、如果没有catch语句、则执行finally语句及其后语句49. 自定义异常为什么要自定义异常?Java程序员可定义更多的方法来处理异常、自定义异常能够提供更复杂更详细的方法、这样能极大的加强软件的健壮性、代码更加清楚怎样自定义异常(1)继承Exeption使你的自定义异常变成checked异常(2)继承RuntimeExeption使你的自定义异常变成unchecked异常50. IO :流是数据输入输出的通道、流中的数据是有序的 流的分类: 按数据流动方向:输入流、输出流 输入流:只能从中读取字节数据、而不能向其写出数据 输出流:只能从中写出字节数据、而不能向其读取数据按流所处理的数据类型: 字节流:处理字节数据 字符流:处理字符数据 按流所处理的源: 节点流:从一个特定的IO设备读写数据的流 处理流:对已存在的流进行连接和封装的流int read():读取一个字节,并将它返回。int read(byte buffer):将数据读入一个字节数组,同时返回读取的字节数。 void close():关闭流。 51. 线程线程和进程的区别:(1) 每个进程都有独立的代码和数据空间、进程间的切换会有较大的开销(2) 线程可以看成是轻量级的进程、同一类线程共享代码和数据空间、每个线程有独立的运行栈和程序计数器、线程切换的开销小。(3) 多线程是在同一应用程序中有多个顺序流同时执行。(4) 多进程是在操作系统中能同时运行多个任务。52. 创建线程的两种方式: (1)定义一个线程类 它继承Thread并重写其中的run()方法,方法run()称为线程体 (2)提供一个实现接口runable的类作为线程的目标对象、在初始化一个thread类或者thread子类的线程对象时把目标对象传递给这个线程实例、由该目标对象提供线程体53. 比较创建线程的两种方式: 使用runable接口可以 (1)将cpu、代码、数据分开、形成清晰的模型 (2)可以从其它类继承 (3)保持程序风格一致性 直接继承Thread类不能从其它类继承、编写简单可以直接操纵线程54.线程状态 New:创建状态。当创建一个新的线程时、它就处于创建状态、此时它仅仅是一个空的线程对象、系统不为它分配资源Runnable:可运行状态。当线程处于创建状态时、可调用start()方法来启用它、产生运行这个线程所需的系统资源、安排其运行Dead:死亡状态。线程终止(1)自然撤销。线程的run()正常退出(2)强制停止。调用线程实例的stop()可以强制停止当前线程Blocked:停滞状态。(1)通过sleep()让线程进入休眠状态 (2)通过wait()暂停线程 (3)线程正等待某个IO设备动作完成 (4)线程试着调用另一个对象的synchronized函数、而且尚未取到对象的机锁55. 守护线程(daemon Thread) 是为其它线程提供服务的线程、一般应是一个独立的线程、它的run()是一个无限循环56. 守护线程与其它线程的区别 如果守护线程是唯一运行着的线程、程序会自动退出。57. 互斥锁(对象锁) 保证共享数据的完整性每个对象都对应于一个可称为互斥锁的标记、这个标记用于保证在任意时候只能有一个线程访问该对象58. 使用synchronized的时机 (1)这个函数是否修改对象内关键变量的状态、(关键变量是能被其它线程读取或修改的变量) (2)这个函数是否和关键变量的状态有依存关系 (3)基类的方法为synchronized时、synchronized不能被继承、复写时重新采用synchronized59. 释放锁 如果一个线程一个占用一个对象的锁、则其它线程将永远无法访问该对象、因此需要在适当的时候将对象的锁归还(1) 当线程执行到synchronized的块结束时、释放对象锁(2) 当在synchronized块中遇到break、return或抛出异常、则自动释放对象锁(3) 当一个线程调用wait()时、它放弃拥有的对象锁并进入等待队列60. 死锁 是指两个线程都互相等待对方释放锁、是不可预知或避开的、应采取措施避免死锁的出现。61. sleep()和wait()的区别 (1) Sleep()是Thread类的方法、wait()是Object类的方法 (2) Sleep()可以在非synchronized函数中被调用、wait()只能在synchronized函数或同步块中被调用 (3) Sleep()不会释放对象机锁、wait()会释放对象锁 (4) 使用场景不同、sleep()方法同一个线程内间隔多长时间后再次执行此任务、wait()是多个线程之间JDBC1.JDBC连接数据库的基本步骤:(1)注册驱动程序 (2)建立连接 (3)发送和执行sql语句 (4)处理结果 (5)释放资源2. 常用对象 (1)connection建立与数据库的连接 DriverManager类的getConnection()将建立数据库的连接 (2)statement将sql语句发送到数据库中存在三种statement对象 Statement PreparedStatement CallableStatement(3)Result包含符号sql语句执行结果集、并且通过一套get方法提供了对这些行中的数据的访问3. 事务的基本概念及如何在JDBC中实现事务 事务是一些事件的集合、执行一条sql语句可以理解成一个事务、事务中包含多个事件、如果每一个事件都能执行成功的时候、事务才执行、如果任何一个事务不能成功执行、事务的其它事件也不能被执行。JDBC处理事务的代码:boolean defaultCommit = conn.getAutoCommit();conn.setAutoCommit(false);try stmt.executeUpdate(strSQL1);stmt.executeUpdate(strSQL2);mit();catch (Exception e) conn.rollback();e.printStackTrace();finally if (stmt != null) stmt.close();if (conn != null) conn.close(); conn.setAutoCommit(defaultCommit);Servlet和JSP1.servlet 和 JSP 的关系 JSP是以另外一种方式实现了servlet、servlet是JSP的早期版本、在JSP中更加注重页面的表现、而在servlet中更加注重业务逻辑的实现。因此当编写的页面显示效果比较复杂时、首选JSP、或者在开发过程中、html代码经常发生变化而Java代码相对比较固定时可以选择JSP、而我们在处理业务逻辑时首选则是servlet、同时JSP只能处理浏览器的请求、而servlet可以处理一个客户端的应用程序请求、因此servlet加强了web服务器的功能2. servlet 的生命周期 (1)服务器加载servlet (2)创建servlet实例 (3)调用servlet实例的init() (4)收到请求 (5)调用service() (6)service()处理请求并将输出结果返回客户端 (7)servlet等待下一个请求、转到(4)继续向下执行 (8)servlet在服务器调用destory()然后卸载3.init()调用时机 (1)服务器第一次访问servlet的时候被调用 (2)在web.xml中设置load-on-startup =0 情况下、服务器启动的时候调用4Destroy()调用时机 (1)servlet在被卸载前 (2)servlet很长时间没有被使用5. HttpSession接口的功能和使用方法 这是一个java.servelt.http 包中的接口、它封装了会话的概念它的定义为public interface HttpSession可以使用HttpSession session = request.getSession();来这种类型的对象、语法为HttpSession session = request.getSession();6. 什么是组件、使用组件有什么优点 现代件开发都已转向基于组件的开发、目前代表性的组件技术有微软的com和com+、有sun的javabean和EJB、另外还有CORBA(Common Object Request Broker Architecture,公共对象代理结构)、javabean规范将软件组件的概念引入到了java编程里面、组件是自包含的、可重用的软件单元、而javabean组件则可使用可视的应用程序开发工具、可视的将他们编写到java程序中、javabean规范为java开发人员提供了一种组件化其java类的方法、其最大优点是代码的复用。7. 编写javabean时需要注意哪些?(1)如果类的成员变量的名字是xxx、为了更改和获得其成员变量的值、在类中使用两个方法:getXxx()是用来获取属性、setXxx()是用来修改属性(2)类中的方法访问属性必须是public的(3)必须放在一个包中(4)类中要有public(公有的)无参的构造函数8. 简述JSP的设计模式 Modle 1 JSP+Javabean 在这种模式中JSP页面独自响应请求并将处理结果返回客户、所有的数据库操作通过javabean来实现、大量的使用这种设计模式常会导致在jsp页面中嵌入大量的java代码、当需要处理的业务逻辑非常复杂时、这种情况就变得很糟糕、大量的java代码使得jsp页面变得非常臃肿、前端的页面设计人员稍有不慎就有可能破坏关系到业务逻辑的代码 优点:实现简单、适合快速的开发小型项目 Modle 2 MVC设计模式 采用只包含控制逻辑的servlet作为前端控制器接受客户请求、再转发到对应的jsp页面处理显示逻辑、并辅以javabean实现相关的业务逻辑、适用于大规模系统的开发和管理 缺点:增加了应用开发的复杂程度 9. 在java servlet API中 forward()和redirect()的区别前者仅是容器中控制权的转向、在客户端浏览器地址栏中不会显示出转向后的地址后者则是完全跳转、浏览器将会得到跳转的地址、并重新发送请求连接、从浏览器地址栏中可以看到跳转后的连接地址、所以前者更加高效、在前者可以满足需要时尽量使用forward()并且这样也有助于隐藏实际的连接、比如需要跳转到一个其它服务器上的资源、则必须使用sendRedirect()10. JSP的内置对象request - 客户端请求response - 网页传回客户端的回应pageContext - 管理页面属性session - 与请求有关的会话期application - 应用程序级变量out - 用来传送回应传送的输出config - servletConfig的一个实例page - 代表jsp页面本身exeption - 针对错误网页未捕获的例外11. Jsp的标准动作Jsp:include - 在页面请求的时候引入一个文件Jsp:usebean - 寻找或实例化一个javabeanJsp: setProperty - 设置javabean的属性Jsp: getProperty - 输出javabean的属性Jsp:forward - 把请求转到一个新的页面12. Jsp中的动态include与静态include的区别语法上、 静态 动态状态上、静态的是编译时包含、动态的是运行时包含针对对象来说、静态包含的是静态页面、动态的包含静态页面和动态页面均可包含静态的是jsp引擎对所包含的文件进行语法分析动态的是jsp引擎不对所包含的文件进行语法分析、只获得处理结果、如果包含的内容是静态内容、那么使用include指令、因为它的运行速度快Struts1. struts的运行机制struts架构从本质上MVC设计模式的具体实现、表示层一般使用试图组件实现、控制器使用控制器组件实现、而应用逻辑层使用模型组件实现、作为表示层和应用层之间的中介、控制器处理模型和视图之间、起到了桥梁的沟通作用2. 控制器组件的相关类ActionServlet - 是struts架构中的中央控制器RequestProcessor - 包含了struts控制器处理servlet请求时所遵循的控制逻辑Action - 处理业务逻辑ActionForm - 保存用户表单数据、以便于在不同页面间传递ActionMapping - 用于控制在状态数据改变后的事件处理方式ActionForward - 用户指向或者视图选择3. struts标签库 struts-html.tld - 扩展html form的jsp标记 struts- bean.tld - 扩展处理javabean的jsp标记struts-logic.tld - 扩展测试属性值的jsp标记4. struts 1 的Action是否是线程安全的 Struts1 Action是单例模式并且必须是线程安全的、因为仅有Action的一个实例来处理所有请求、单例策略限制了struts1 Action能做的事、并且要在开发是特别小心、Action资源必须是线程安全或同步的5. struts的工作流程 在web应用启动时就会加载初始化actionServlet、actionServlet从struts-config.xml文件中读取配置信息、把他们存放到各种配置对象中、当ActionServlet接收到一个客户请求时将执行如下流程(1) 检索和用户请求匹配的ActionMapping实例、如果不存在就返回请求路径无效信息(2) 如果actionForm实例不存在、就创建一个ActionForm对象、把客户提交的表单数据保存到ActionForm对象中(3) 根据配置信息决定是否需要表单验证、如果需要验证就会调用ActionForm的validate()(4) 如果ActionForm的validate()返回null或返回一个不包含ActionMessage的ActionErrors对象就表示表单验证成功(5) ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action、如果相应的Action实例不存在、就先创建这个实例、然后调用Action的execute()(6) Action的execute()返回一个ActionForward对象、ActionServlet再把客户请求转发给ActionForward对象所指向的jsp组件(7) ActionForward对象指向jsp组件生成动态网页、返回给客户6. struts1 的优缺点 优点:是开源软件、使开发者能更深入的了解其内部的机制、 业界标准学习资源丰富、 标签和页面导航(1)利用struts提供的标签可以大大节约开发时间(2)维护扩展比较方便、通过一个配置文件即可把握整个系统个部分之间的联系、这对于后期的维护有莫大的好处(3)表现与逻辑分离(4)便于团队开发 缺点:(1)大量使用标签对于初学者难度很大(2) ActionForm使用不便无法进行单元测试7. Tiles框架是什么? Tiles框架为创建web页面提供了一种模板机制、它能将网页的布局和内容分离8. struts的MVC框架 Modle struts没有提供modle类、这个业务逻辑必须由web应用程序的开发者以javabean或EJB的形式提供、 View struts提供ActionForm创建FormBean、用于在controler和view间传输数据、此外、struts提供了自定义jsp标签库、辅助开发者用jsp创建交互式的以表单为基础的应用程序、应用程序资源文件(.property文件)保留了一些文本常量和错误信息、可转变成其它语言用于jsp中 Controler 提供了一个核心控制器ActionServlet、通过这个核心控制器来调用其它用户注册的自定义控制器Action、自定义Action需要符号Struts1的自定义Action的规范、还需要在struts-config.xml特定配置文件中进行配置、接收jsp输入字段形成ActionForm、然后调用一个Action控制器、9. Struts1和struts2的比较 (1) Action类:struts1要求Action类要扩展自一个抽象基类、struts1的一个共有的问题是面向抽象类编程而不是面向接口编程 struts2的Action类实现了一个Action接口、连同其它接口一起实现可选择和自定义服务、提供了一个名叫ActionSupport的基类实现一般使用的接口、Action接口不是必须的、任何使用execute()的普通java对象可以被当作struts2的action对象使用(2)线程模型:struts1 Action是单例的、因只有一个实例控制所有的请求、单例策略造成了一定的限制、Action资源必须是线程安全或者同步的 Struts2对象对每一个请求都实例化对象所有没有线程安全问题(3)Servlet依赖:struts1的Action类的依赖于Servlet API 以HttpServletRequest和HttpServletResponse作为参数传递给execute()Struts 2的Action不和容器有关、Servlet上下文被表现成简单的maps(4)易测性:测试struts1的主要障碍是execute()方法暴露了API、stuts2的Action可以通过实例化Action测试、设置属性然后调用方法 (5)接受输入 Struts1使用actionform对象捕获输入,向action一样,actionform必须扩展基类。因其他的javabean不能做actionform使用,开发者经常创建多余的类捕获输入。Struts2的action属性做为输入属性。排除第2个输入对象的需要,输入属性可能有丰富的对象类型,这些属性有他们自己的属性。Action的属性可以通过标签库访问(6)表达式语言:Struts1整合jstl所以使用jstl的表达式语言、表达式语言有基本的图形对象移动、但是相对很弱的集合和被索引的属性支持、Struts2使用jstl、但是框架也支持更大更灵活的表达式、叫做“对象图形符号语言”(OGNL)(7)将值绑定到视图上Struts使用标准jsp机制来绑定对象到页面上下文、struts2使用ValueStack技术、标签库可以不用连接你的视图到对象的表现类型访问值(8)类型转换Struts1的ActionForm属性经常都是String的、Struts1使用Commons-Beanutils类型转换、转换每一个类而不是每一个实例配置Struts2使用ognl类型转换、框架包含转换器基本的和共同的对象类型和原始类型 (9)验证: struts1支持手动验证、凭借ActionForm的validate()或者通过扩展公用验证器 Struts2 支持手动验证、凭借validate()和Xwork验证框架 (10)Action执行控制:struts1支持独立的请求处理器对于每一个模型、但是所有在模型中的Action必须共享同一个生命周期 Struts2支持在每一个Action基础上凭借拦截器栈创建不同的生命周期Hibernate1. ORM:(Object/Relational Mapping)对象关系映射2. 基本概念:面向java环境的对象映射工具、开源持久层框架、连接java应用和数据库的中间件、对jdbc进行简单封装、负责对java对象的持久化、在分层结构中处于持久层、封装对数据库的访问细节、使业务逻辑层更专注于实现业务逻辑。3. 工作原理:(1) 读取并接配置文件(2) 读取并解析映射信息创建sessionFactory(3) 打开session(4) 创建事务Transaction(5)持久化操作(6)提交事务(7)关闭session(8)关闭sessionFactory4. 优缺点:优点: Hibernate使用java反射机制而不是字节码增强程序来实现透明性、hibernate性能非常好、因为它是个轻量级框架、映射的灵活性很出色。支持各种关系数据库、从一对多到多对多的各种复杂关系 缺点: 它限制了你所使用对象模型、一个持久化类不能映射到多个表5. load()和get()的区别(1) 查找数据库中一个不存在的对象如果通过get()加载则返回一个null、如果通过load()加载则返回一个代理对象、后面代码如果调用该对象的某个属性会抛出异常 org.hibernate.ObjectNotFoundExeption(2) Load支持延迟加载、get不支持延迟加载6. hibernate的缓存机制内部缓存 存在hibernate中又叫一级缓存属于应用事务级缓存二级缓存 分为应用级缓存、分布式缓存、第三方缓存事件7. 如何优化hibernate(1) 使用双向一对多关联不使用单向一对多关联(2) 灵活使用单向一对多关联(3) 不用一对一关联、而用多对一取代(4) 配置对象缓存不使用集合缓存(5) 一对多集合使用bag、多对多集合使用set(6) 表字段要少、表关联不用怕多Transient Object(临时对象):使用new操作符初始化的对象不是立刻就持久的、他们的状态是瞬时的也就是说他们没有任何跟数据库表相关联的行为、只要应用不再引用这些对象他们的状态会丢失、并由垃圾回收机制回收Persistent Object(持久化对象) 持久实例是任何具有数据库标识的实例、它由持久化管理器Session统一管理、持久实例是在事务中进行操作的、它们的状态在事务结束时、同数据库进行同步、当事务提交时通过执行SQL的insert、update和delete语句、把内存中的状态同步到数据库中Detached Object(托管对象) Session关闭之后、持久化就变为托管对象、表示这个对象不能再与数据库保持同步、它们不再受hibernate管理Spring1. 什么是Spring、它有什么特点 Spring是一个轻量级的控制反转和面向切面的容器框架。特点: 轻量:从大小和开销两方面而言、Spring都是轻量的、完整的Spring框架可以在一个大小只有1M多的jar文件中发布、并且Spring所需处理开销也是微不足道的、此外、Spring是非侵入式的、典型的是Spring应用中的对象不依赖于Spring的特定类控制反转:Spring通过一种称作控制反转的技术促进了松耦合、当应用了IOC一个对象依赖的其它对象会通过被动的方式传递进来、而不是这个对象自己创建或查找依赖对象、你可以认为IOC与JNDI相反不是对象从容器中查找依赖而是容器在对象初始化时不等对象请求就主动将依赖传递给他面向切面:Spring提供了面向切面编程的丰富支持、允许通过分离应用程序的业务逻辑与系统级服务进行内聚性的开发、应用对象只实现他们应该做的、完成业务逻辑仅此而已、他们并不负责其它的系统级关注点、例如日志和事务支持容器:Spring包含并管理应用对象的配置和生命周期、在这个意义上它是一种容器、可以配置你的bean如何被创建、你的bean可以创建一个单独的实例、或者每次需要时都生成一个新的实例、以及它们是如何相互关联的、然而Spring不应该被混同于传统、重量级的EJB容器、它们经常是庞大笨重的难以使用框架:Spring可以将简单的组件配置组合称为复杂的应用、在Spring中应用对象被声明式的组合、典型的是在一个xml文件里、Spring也提供了很多的技术功能、如事务管理、持久化框架、集成等。将应用逻辑的开发留给你2. Spring框架由哪几部分组成 Spri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年医师定期考核模拟试题附完整答案详解(名师系列)
- 2025年度百色平果市马头镇卫生院招聘编外卫生专业技术人员考前自测高频考点模拟试题含答案详解(新)
- 酒店礼仪电子培训
- 福建省梅列第一实验学校2026届九年级英语第一学期期末学业质量监测试题含解析
- 2026届云南省玉溪市化学九上期末预测试题含解析
- 2026届保定市重点中学九年级英语第一学期期末联考试题含解析
- 2026届北京市清华大附属中学化学九年级第一学期期末教学质量检测模拟试题含解析
- 再生障碍性贫血护理新进展
- 互联网金融浅析
- 2026届北京四十四中学化学九年级第一学期期末调研模拟试题含解析
- 储能电站安全性评估报告
- 中国大模型落地应用研究报告2025
- ECMO课件大全教学课件
- 肿瘤病人血管通路的选择
- 2025年 北京门头沟大峪街道社区储备人才招募考试试题附答案
- 呼吸机管道安全管理体系
- 2025年重庆市中考英语试卷真题(含标准答案及解析)
- 档案公司借阅管理制度
- 药店医保考试试题及答案
- 2025年中考历史总复习中国古代史专题复习资料
- 单用途卡资金管理制度
评论
0/150
提交评论